← Tools

Credential vault

jat-secret

Encrypted credential vault across every machine in the fleet.

jat install secret
One command, onto your PATH. source & setup on GitHub →

A fleet of machines and a fleet of agents both need the same API keys, tokens, and connection strings — without those secrets ending up in a repo, a dotfile, or an agent's transcript. jat-secret is one command for every credential: it resolves from a local store first, falls back to an encrypted remote vault, and back-fills 1Password — so a secret that exists anywhere in the fleet is one command away on every box.

Resolution chain

1

Local store

credentials.json on this machine — fastest, always tried first

2

Encrypted vault

AES-256-GCM ciphertext the server can't read — the fleet-wide fallback

3

1Password

the last-resort back-fill before it errors

First tier with the key wins. A value that resolves is a value you can find — discovery walks all three and labels each by the tier that serves it.

Encrypted, zero-knowledge vault

The remote vault stores values AES-256-GCM encrypted with a key that never leaves your machines — the server holds ciphertext it can't read. --set writes locally and pushes to the vault in one step, and it fails open: if the vault is unreachable the value is still saved locally and a loud warning names the retry, so a network blip never eats a just-typed credential. The key stays on your machines, the server holds only ciphertext — no third party ever has a readable copy of your credentials.

One naming convention

Secrets are <service>-<kind>deepseek-api-key, github-token, stripe-secret. Guess the wrong shape and an unambiguous alias resolves it for you and says so on stderr, while the value still lands on stdout clean. The name you'd guess is the name that works.

Usage

jat-secret stripe

resolve a secret to stdout — clean, pipe-safe

jat-secret --set deepseek-api-key "sk-..."

set once; it syncs to the encrypted vault automatically

eval $(jat-secret --export)

load every secret into the environment

jat-secret --vault-pull

a fresh machine pulls the whole set down after one seed

How it fits

jat-secret is where the whole stack reaches for a key. jat's agents resolve credentials through it, jat-pilot pulls the logins that drive your browser, and every machine in the fleet shares one encrypted vault behind them — so a credential set once resolves everywhere, and no agent ever sees a plaintext store. One vault, the whole fleet.

See the whole family

Vault setup, the resolution chain, and team sharing on GitHub.

View on GitHub