Skip to content

Choose a provider

A provider connects a secret name to its storage. Configure an instance under [providers.<name>], then use that name in each secret's provider field. You can use several providers in one project.

Start with your storage model

You want to…Start hereKeep in mind
Get started without a cloud accountage quick startKeep the private key outside git and back it up
Use your team's existing vaultConnect a vaultEach user or CI identity needs access
Read remote secrets offlineSync to a local age cacheRefresh the snapshot after values change
Use cloud IAM to control decryptionAWS, Azure, or GCP KMS belowEncrypt and decrypt operations need the cloud API
Bind encryption to a hardware tokenFIDO2, YubiKey, or age pluginsNative providers need the token for both encryption and decryption
Keep a bootstrap credential on one machineOS keychainThe credential store must be available and unlocked
Generate temporary credentialsCredential leasesLease backends are configured separately from providers

Encryption in your config

fnox set stores ciphertext in fnox.toml. The config and public recipients can be committed; private keys and bootstrap credentials stay outside the repository.

ProviderConfig typeDecryption requires
ageageAn age or supported SSH identity, or an age plugin
FIDO2fido2The original token with hmac-secret support
YubiKeyyubikeyThe original HMAC challenge-response key
AWS KMSaws-kmsAWS credentials and permission to decrypt with the key
Azure Key Vault Keysazure-kmsAzure credentials and access to the key
Google Cloud KMSgcp-kmsGoogle Cloud credentials and access to the key

Cloud and hosted stores

fnox.toml contains references to values held by the service. Provider permissions control access to those values. Rotation and audit features depend on the service and its configuration; fnox does not enable them automatically.

ProviderConfig typeReference points to
AWS Secrets Manageraws-smA secret name, optionally with json_path for a field
AWS Parameter Storeaws-psA parameter name or path
Azure Key Vault Secretsazure-smA secret name
Azure App Configurationazure-acA non-secret configuration key and optional label
Google Cloud Secret Managergcp-smA secret name
HashiCorp VaultvaultA KV secret and field
DopplerdopplerA secret key in a project/config
FOKSfoksA key in a personal or team namespace
Bitwarden Secrets Managerbitwarden-smA secret key in a project
Keeper Secrets Managerkeeper-smA record and field using Keeper notation

Password managers and secret services

These providers use an existing vault or service account. Follow the individual guide for the CLI or API authentication needed on each machine.

ProviderConfig typeIntegration
1Password1passwordop CLI; item and field references
Bitwardenbitwardenbw CLI, or the experimental rbw backend
InfisicalinfisicalInfisical CLI; project, environment, and path
PasswordstatepasswordstateHTTP API; password ID or title and field
Proton Passproton-passpass-cli; vault, item, and field

Local stores and defaults

These use a store available on your machine, or no encrypted storage at all for plaintext defaults.

ProviderConfig typeStorage
OS keychainkeychainmacOS Keychain, Windows Credential Manager, or Linux Secret Service
KeePasskeepassA local .kdbx file
password-storepassword-storeGPG-encrypted files managed by pass
PlaintextplainUnencrypted values; only for non-sensitive configuration

Configure an instance

This example reads an existing item from 1Password:

toml
[providers.op]
type = "1password"
vault = "Engineering"

[secrets]
DATABASE_URL = { provider = "op", value = "Database/url" }

Test the configured instance, then resolve the secret:

sh
fnox provider test op
fnox get DATABASE_URL
fnox exec -- npm start

fnox get prints the resolved value. fnox list lists the secrets configured in fnox; it is not a directory of every item in your remote vault.

A provider's read and write capabilities may differ. In particular, a read-only provider cannot be used with fnox set, and fnox import currently accepts encryption providers only. Check the provider guide before choosing a write or migration workflow.

Next steps

MIT LicenseCopyright © 2026jdx.dev