Synopsis
Description
Opens a two-pane TUI for the current project and branch:- Left pane lists every variable known to the project (pinned ∪ local ∪ remote) with its key, an
abc…xyzvalue snippet, drift status, and an updated label. - Right pane is an inspector for the selected row — the value (shown as a snippet by default;
rreveals the full value; long values wrap), the row’s status, and which side last moved. - Top status row summarizes the active branch, total tracked variables, drift count, and conflict count.
Enter after typing a new value updates the in-memory buffer; nothing lands on disk until you commit. Choosing commit & push runs the same pipeline as the conflict-resolver’s “commit and push all local values” action: re-encrypts the merged local state, updates keep.lock pins, uploads ciphertext to the service, and bumps sync state.
Example
Keys
In the variables list:
While editing a value (after
e):
When quitting with uncommitted edits:
Statuses
When to use capy edit vs editing .env directly
Both flows work. Pick whichever fits the moment:
capy edit— when you want to see what’s set, mask/reveal values without exposing them to your editor’s buffer, or change a single variable without thinking about encryption. Always commits and pushes in one step.- Edit
.envdirectly — when you’re already in your editor adding a brand-new variable as plaintext, or rotating multiple values alongside code changes. Runcapyafterward to encrypt and reconcile. See Editing secrets.
See also
- Editing secrets — the two ways to change values, side by side
capy— full sync loop, reconciles drift after a direct.enveditcapy push— push local changes without pulling