AES-256-GCM + scrypt
Node's built-in crypto: authenticated encryption, memory-hard key derivation, random salt, fresh IV on every write. No GPG, no system packages.
Keyr keeps every API key and secret in one encrypted vault on your own machine — and lends them to your tools only while they run. Then they lock themselves away.
Windows · macOS · Linux — Node.js 18+
Not carelessness — simply no proper place existed.
The vault file itself is unreadable without your passphrase.
That is the whole feature list.
Node's built-in crypto: authenticated encryption, memory-hard key derivation, random salt, fresh IV on every write. No GPG, no system packages.
Everything lives in ~/.keyr/vault.json. Back it up like any file; delete it to start over.
keyr runLaunch any command with secrets injected as environment variables. Tools that read {env:VAR} never need the real value on disk.
An interactive menu for daily use; direct commands and KEYR_PASSPHRASE for automation. Passphrases are always prompted masked — never CLI arguments.
The entire workflow.
keyr init — choose a passphrase. It is never stored; it cannot be recovered, and that is the point.
keyr set HIVE_API_KEY — values are masked on input, encrypted, then written to the single vault file.
" data-id="keyr run opencode — secret masuk ke environment proses anak. Config menunjuk nama, bukan nilai: \"apiKey\": \"{env:HIVE_API_KEY}\"">keyr run opencode — secrets enter the child process's environment. Configs point at names, not values: "apiKey": "{env:HIVE_API_KEY}"
Established tools exist. Keyr is a specific trade-off — and choosing another tool is a fine outcome.
| Tool | The trade-off |
|---|---|
| pass / gopass | Battle-tested, but requires GPG (painful on Windows) and spreads one file per secret across a tree. |
| Bitwarden CLI | Needs a server (cloud or self-hosted) and an account. |
| 1Password CLI | Great env injection — but paid, cloud, account. |
| Infisical / Doppler | Built for teams; heavy for personal secrets. |
| age / sops | Encrypt files, but are not managers — no list/set/get or TUI. |
| Keyr | Node-native (no GPG), single-file vault, keyr run injection, zero accounts. Local-only by design. |
Including the ones with uncomfortable answers.
Yes, within the limits of your passphrase. AES-256-GCM plus scrypt makes guessing expensive — a long passphrase is what makes it truly strong.
No. Any process running as your user can read a child's environment or capture keystrokes. Keyr removes secrets from permanent storage on disk — it does not defend against active compromise. No local tool honestly can.
Nowhere. Keyr has no network code at all — no telemetry, no update checks, no sync.
The secrets are gone. There is no recovery — by design. keyr reset deletes the vault so you can start over.