Skip to content
jdxPublic

About

encrypted/remote secret manager

Resources

Contributing

Stars

2.3k stars

Watchers

7 watching

Forks

Latest commit

 

History

817 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fnox

Fort Knox for your secrets.

CI License: MIT

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 cd into 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 exec command, 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

Entire     Omacom Foundation

View all sponsors

License

MIT

About

encrypted/remote secret manager

Resources

Contributing

Stars

2.3k stars

Watchers

7 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages