Security model
Agent sessions carry API keys, source code, file paths and passwords. Gallager encrypts everything sensitive on-device, so the relay — ours or yours — only ever forwards ciphertext.
Long-term X25519 key pairs are generated on first launch and stored in your Keychain. The relay stores device IDs, public keys and push tokens — never your private keys.
Terminal streams, keystrokes, hook events (tool inputs and outputs, project paths, session IDs), command responses and session state. Basically everything with content in it.
Connection state, message timing, payload sizes, and the pairing metadata it needs to route: device IDs and names, public keys, push tokens. Enough to route messages between two paired devices, not enough to know what you're building.
Session keys are derived on-device and are never sent anywhere. Breaching the relay — or recording its traffic — yields ciphertext, not your terminal.
No user database and none of your content: the relay keeps only pairing records (device IDs, public keys, push tokens) — plus subscription state on the hosted plan. Your terminal content is never stored or logged, anywhere.