cd ..
fuu(1)Mizuchi Labs Manualfuu(1)
mizuchi:$ ~ man fuu

NAME

fuu

A TPM-sealed secrets vault that loads into your shell as you move between directories.

★ 0 · last pushed 2026-09-26

DESCRIPTION

fuu keeps a repository's secrets in one encrypted .fuu.toml and loads them into your shell as you move between directories. The file is meant to be committed and shared in public, like a sops file.

Names and values stay sealed without the vault key, and every vault key derives from your one account passphrase, which each machine keeps sealed to its TPM 2.0 chip. A copied file is useless on any other machine. There is no software fallback on purpose, the chip is the point.

A vault only loads from a folder this machine has trusted, and there is no trust on first use, so a stranger's repository cannot hand you values or reach into yours. Every vault key derives from one account passphrase under that vault's own salt, and each machine keeps the account sealed to its own TPM. A new machine runs fuu login once, and fuu rotate spins the vault key or the whole passphrase when something leaks.

FEATURES

  • One .fuu.toml per repository with sealed names and values, safe to commit to public repos
  • One account passphrase per person, each vault key derived from it and sealed to the TPM 2.0 of every machine, no key material on disk
  • direnv style shell hooks for bash, zsh, and fish
  • Explicit folder trust with a yes instead of trust on first use
  • fuu edit writes back only what changed so a git diff shows exactly which line moved
  • fuu run runs one command with the vault loaded and no shell integration
  • Values from stdin, prompts, or arguments for fuu set
  • fuu rotate for a fresh vault key, or --passphrase for a new passphrase across every vault
  • Refuses shell configuring names like PATH and PROMPT_COMMAND

QUICK START

Install
go install github.com/mizuchilabs/fuu@latest
CLI
fuu init      # creates .fuu.toml, and on first use your account
fuu set DATABASE_URL postgres://localhost/mydb
fuu set API_KEY s3cret

eval "$(fuu hook bash)"   # goes into your rc file, see Shells
New machine
fuu login     # the account passphrase, once per machine
Rotation
fuu rotate               # this vault's values leaked: fresh key, same passphrase
fuu rotate --passphrase  # passphrase or a machine lost: new passphrase, every vault moves

CONFIGURATION

NameDescription
FUU_VAULTPoint at a specific vault file instead of the nearest .fuu.toml up to the git root. Also --vault.
VISUALEditor for fuu edit, falls back to EDITOR. A whitespace-separated command and its arguments, no shell and no quoting.
--passphraseFlag for fuu rotate. Prints the new passphrase and reseals every vault trusted on this machine.

RELATED

LINKS

GitHub[github]https://github.com/mizuchilabs/fuu
SELF-HOSTED VS COMMERCIAL

Self-hosting fuu is free under the Apache-2.0 license. Run it on your own iron. Commercial licensing, support, and managed offerings for businesses are on the business page.