Getting Started
Get up and running with the current Hush v3 model in a few minutes.
Prerequisites
Hush requires Node.js 18+ and delegates encryption to standard tools.
brew install sops age direnvcurl -LO https://github.com/getsops/sops/releases/download/v3.9.4/sops-v3.9.4.linux.amd64sudo mv sops-v3.9.4.linux.amd64 /usr/local/bin/sopssudo chmod +x /usr/local/bin/sops
curl -LO https://github.com/FiloSottile/age/releases/download/v1.2.0/age-v1.2.0-linux-amd64.tar.gztar xzf age-v1.2.0-linux-amd64.tar.gzsudo mv age/age /usr/local/bin/
curl -sfL https://direnv.net/install.sh | bashscoop install sops age direnvNote: Windows support is best-effort and not yet covered by CI. If you encounter issues, please open a GitHub issue.
Installation
pnpm add -D @chriscode/hushnpm install -D @chriscode/hushyarn add -D @chriscode/hushSetup
-
Bootstrap the v3 repository
Terminal window npx @chriscode/hush bootstrapThis creates the encrypted repository shell, the initial shared file document, and
.sops.yaml. -
Inspect the bootstrapped state
Terminal window npx @chriscode/hush config shownpx @chriscode/hush config active-identityUse
hush configto inspect manifest state, active identity, file readers, and target definitions. -
Add your first secret safely
Terminal window npx @chriscode/hush set DATABASE_URLnpx @chriscode/hush set API_KEY --guiThe value is written into the encrypted v3 file document. The assistant never needs to read a plaintext env file.
-
Run your app
Terminal window npx @chriscode/hush run -- npm startHush resolves the selected v3 target, decrypts only for the child process, and cleans up.
-
Adjust configuration when needed
Terminal window npx @chriscode/hush config show filesnpx @chriscode/hush config readers env/project/shared --roles owner,cihush configis the normal path for inspecting and updating the current repository model.
Current file layout
.hush/ manifest.encrypted files/ env/project/shared.encrypted.sops.yamlMigrating an older repository
If this repo still uses legacy v2 files, use the migration bridge instead of bootstrapping over it:
npx @chriscode/hush migrate --from v2npx @chriscode/hush migrate --from v2 --cleanupVerify your setup
npx @chriscode/hush config shownpx @chriscode/hush inspectTroubleshooting
”no identity matched any of the recipients”
SOPS cannot find the matching age key.
npx @chriscode/hush keys setupnpx @chriscode/hush config show stateTeam repository with existing keys
If the repository already exists, pull or verify the project key first:
npx @chriscode/hush keys setupShell completions
Enable tab-completion for hush commands and flags in your shell:
# bashhush completion bash >> ~/.bashrc && source ~/.bashrc
# zshmkdir -p ~/.zsh/completionshush completion zsh > ~/.zsh/completions/_hush# Ensure fpath includes ~/.zsh/completions, then: autoload -Uz compinit && compinit
# fishhush completion fish > ~/.config/fish/completions/hush.fishSee the completion command reference for details.
Next steps
- Read the File Reference
- Learn the AI-Native Workflow
- See AI Prompts
- Use the legacy migration guide only for old v2 repos