encrypted/remote secret manager
↓ Download
Alle Releases →fnox
Fort Knox for your secrets.
fnox reads secrets from encrypted files, password managers, and cloud secret stores, and hands them to your program as environment variables. One fnox.toml says where each secret lives, and the same command works on your laptop and in CI:
fnox exec -- npm start
Documentation · Quick start · Providers · CLI reference
What it looks like
# fnox.toml — safe to commit
[providers.age]
type = "age"
recipients = ["age1..."] # public keys of everyone who may decrypt
[providers.op]
type = "1password"
vault = "Engineering"
[secrets]
DATABASE_URL = { provider = "age", value = "YWdl..." } # ciphertext written by `fnox set`
STRIPE_KEY = { provider = "op", value = "Stripe/secret-key" } # a 1Password item
LOG_LEVEL = { default = "info" } # plain, non-sensitive setting
[profiles.production.providers.aws]
type = "aws-sm"
region = "us-east-1"
prefix = "myapp/"
[profiles.production.secrets]
DATABASE_URL = { provider = "aws", value = "database-url" } # AWS Secrets Manager in production
fnox exec -- npm start # development values
fnox exec --profile production -- ./deploy # production values
Your program just reads DATABASE_URL. Nothing sensitive is in git: encrypted values need a private key to read, and vault references need access to the vault.
Install
mise use -g fnox
Or cargo install fnox --locked, nix profile install github:jdx/fnox, or a binary from GitHub Releases. See installation.
Get started
- No vault yet? The quick start encrypts your first secret with age in about five minutes.
- Already use 1Password, Bitwarden, AWS, Vault, …? Use an existing vault: commit references and optionally cache values locally.
Features
- Mix providers per secret: encrypted in git, password managers, cloud secret stores, local keychains.
- Profiles for development, staging, and production, plus layered config files for monorepos and personal overrides.
- Shell integration loads secrets when you
cdinto a project (Bash, Zsh, Fish, Nushell, PowerShell). - Offline cache of vault secrets, encrypted to your own key, optionally behind Touch ID or a YubiKey; or an in-memory daemon.
- Short-lived credentials from AWS STS, GCP, Azure, GitHub Apps, Vault, Cloudflare, or your own command.
- Safe for AI agents: a credential proxy injects real keys only into approved requests, and an MCP server exposes only the secrets you allow.
- CI-ready: one credential for the runner, the same
fnox execcommand, log masking on GitHub Actions.
Providers
| Where values live | Providers |
|---|---|
Encrypted in fnox.toml |
age, FIDO2, YubiKey, AWS KMS, Azure Key Vault keys, Google Cloud KMS |
| Cloud and hosted stores | AWS Secrets Manager, AWS Parameter Store, Azure Key Vault, Azure App Configuration, Google Secret Manager, Kubernetes, HashiCorp Vault, Doppler, FOKS, Bitwarden Secrets Manager, Keeper |
| Password managers | 1Password, Bitwarden, Enpass, Infisical, Passwordstate, Proton Pass |
| Local stores | OS keychain, KeePass, password-store, gopass |
| Your own | Lua plugins |
Contributing
See CONTRIBUTING.md for development setup and tests. Report bugs in the issue tracker; ask questions in Discussions.
Sponsors
Sponsored by
View all sponsors