Capy is self-custodied. Your master key never lives on the service in a form the service can use - not even the service itself can hand it to a new machine. That’s the core zero-trust guarantee, and it’s the reason switching computers looks different here than with a centralized secrets store.Documentation Index
Fetch the complete documentation index at: https://docs.capy.sc/llms.txt
Use this file to discover all available pages before exploring further.
How it’s different from a centralized store
| Centralized secrets store | Capy | |
|---|---|---|
| Where your key lives | On the vendor’s servers | Only on your devices |
| Switching computers | Log in, key is waiting | Explicit transport step |
| If the vendor is breached | Attacker can read your plaintext | Attacker holds ciphertext only |
| If you lose all devices | Recovery email / account reset | Seed phrase is the only path |
The transport flow
capy transport is the explicit handoff command. It mints a short-lived, one-time transport code on your current machine, which you enter on your new machine to pull your identity across.
- On your current machine:
capy transport. Capy prints a short one-time code. - On the new machine:
capy redeem <code>. Capy authenticates you, pulls your wrapped master key across, and installs it. - The code is one-shot and short-lived - a stolen code can’t be replayed.
Alternative paths
Seed phrase recovery
If you’re the org owner and have your seed phrase, re-derive the master key directly.- Install Capy on the new machine.
- Run
capyin a project you own. When prompted, choose “recover from seed phrase” and enter your 24 words. - Capy re-derives the master key locally via PBKDF2, re-wraps it for this device, and stores it at
~/.capy/orgs/{orgId}/users/{userId}/key.enc.
Fresh invite
If you don’t have a seed phrase, ask an org admin to send you a newcapy invite code.
- Admin runs
capy invite your-email@example.com, sends you the one-time code out-of-band. - On your new machine:
capy redeem <code>. - Capy installs your master key on the new device.
Why this model
Centralized stores have a single point of trust. If they’re breached, everyone’s secrets leak. Capy distributes that trust:- The service holds ciphertext and an outer wrap - useless without the inner wrap on your machine.
- Your machine holds the inner wrap and, for owners, the seed phrase - useless without the service’s cooperation to strip the outer wrap.
- No single party can decrypt alone.
capy transport keeps that invariant when you move to a new device. Even the service mediating the handoff can’t read your key during the move, because only your authenticated device can finish the unwrap.
See Zero trust for the full threat model and Cryptography for the exact constructions.
What’s next
Switching organizations
Moving between orgs on a single machine.
Zero trust
Why the service can’t release your key alone.