How data moves
Mains hosts the hub. It stores three kinds of data:- Encrypted records and encrypted file chunks.
- Your sign-in account and a list of your devices.
- Routing information it needs to deliver records and count storage.
What the hub can and cannot see
Chats contain everything shown in the transcript, such as tool output and the file contents an agent read. All of it syncs encrypted.
Your keys
The first device creates a random account key. Every approved device holds it. Mains never sends it to the hub unprotected.- Desktop protects the key with macOS Keychain-backed storage.
- Mains Server protects it with its own key file in the data directory.
--data-dir when you want both.
The recovery code
The recovery code has 160 random bits. Mains shows it once and never sends it to the hub. It unlocks your account key on a new device when none of your approved devices is available. GitHub or email sign-in cannot recover the key. If you lose every approved device and the recovery code, nobody can unlock your encrypted data, including Mains. Your local data stays on each device.How devices are approved
A new device must pass two checks before it can read anything:- You type the code shown on the new device into an approved device. Both devices compute it from the account and the new device’s public keys. They ignore any code the hub supplies.
- You enter the join code from the approving device into the new device. It proves the new device received the real account key, not one a hub substituted.
Revoke a device
Revoke access removes a device from the account. It stops syncing, uploading, and downloading right away, including files it has not fetched yet. Revoking has limits:- It cannot delete data the device already has.
- It does not re-encrypt your existing data with a new key. The account key stays the same, so a revoked device that kept it could still read encrypted data it obtains outside the hub’s access checks, such as a leaked copy of hub data.
If the hub turns a device away
A device that the hub refuses does not take the hub’s word for it. It reads the signed device log, which a removed device can still fetch while its sign-in is valid. It then checks that log against the history it already verified.- The log shows the device was removed. The device deletes its account key and asks you to sign in again.
- The hub refuses the log too. The device keeps its key and asks you to sign in again. A refusal alone does not prove a removal.
- The log contradicts the hub or the verified history. The device keeps its key, stops syncing, and reports a conflict. Sync waits until the problem clears.
Deletion and retention
Permanently deleting a chat or Atlas item removes it from your other devices after they sync. The hub frees its encrypted file storage after a 24-hour grace period. A small encrypted marker remains so other devices do not bring the item back. Claude’s raw session data, which Bridge uploads with a Claude chat, expires from the hub after 30 days without activity in that chat. The visible chat remains. When you disconnect a device, Mains revokes it and removes its Bridge keys. Copies already on other devices stay there until you remove them from those devices.Keep sensitive projects local
Turn off sync for a Code project before its history can upload. Because Project sync appears after you sign in, use this order on your first device:1
Sign in with history left out
Turn off Include existing history and Atlas in the Sign in to Bridge window.
2
Turn off sensitive projects
Under Project sync, turn off each project that should stay on this device.
3
Add the rest
Choose Sync existing history. Projects you turned off stay local.
