A Capy branch is an independent set of values for the same project. A typical setup has: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.
development- created automatically on project init. Full read/write for every member.staging- a separate set of values, possibly with different API endpoints.production- protected, invite-only, stricter access.
PK - but each branch stores its own encrypted keep.lock blob, and secrets on one branch are decryptable only by members of that branch.
Capy branches are independent of git branches. They’re tracked separately. That said, when you switch git branches, capy will let you know if your secrets are up to date for the particular version of code you are looking at.
Git branches vs. Capy branches
You typically have many git branches mapped to a handful of Capy branches. Most feature and bugfix branches share the samedevelopment secrets; a few branches (e.g., release-*) might point at staging or prod.
keep.lock - a small, committed manifest file at the project root. Every git branch that ships with the same keep.lock sees the same Capy secrets. Change the committed keep.lock on a specific git branch (for example on release-v2) and that branch gets its own Capy-branch pin.
What keep.lock contains
- Org ID and project ID - which Capy project this directory belongs to.
- Schema version - for format evolution.
- Variable manifest - every secret name, its resource ID, and a hash per Capy branch. Hashes, not plaintext, not ciphertext, not keys.
keep.lock. It’s just the list of what exists, enough for Capy to pull the right ciphertext from the service and diff against .env. Safe to commit, because everything sensitive stays on the service side and in your ignored .env.
Why commit it
Becausekeep.lock is committed, it travels with the git branch. When a teammate clones your repo and checks out feature/login, their keep.lock matches yours and capy pulls the same Capy branch you’re on. No “which environment am I in” question - the git branch answers it.
Commands
checkout, Capy rewrites .env in place with the snippets from the new branch.
Typical workflow
What’s next
Protected branches
Invite-only branches for production.
capy branch
Full command reference.