Secure secret management CLI with GitHub or local storage
Vaulty is a secure CLI tool for managing environment variables, SSH keys, and configuration files. Your secrets are encrypted with AES-256-GCM and can be stored in your GitHub repository or locally.
- Secure Encryption — AES-256-GCM with PBKDF2 key derivation (100k+ iterations)
- Multiple Backends — GitHub repository or local file storage
- Session Management — Auto-lock after configurable timeout
- Environment Variables — Load secrets directly into commands with
vty run - Backup & Restore — Export/import vault to compressed archives
- Cross-Platform — Works on macOS, Linux, and Windows
- GitHub CLI Integration — Use
gh auth tokenor setGITHUB_TOKEN
- Go 1.21+ — For building from source
- GitHub CLI (optional) — For GitHub storage backend
curl -sSL https://raw.githubusercontent.com/sthbryan/vaulty/main/install.sh | bashDownload from releases page:
# macOS Apple Silicon
curl -L https://github.com/sthbryan/vaulty/releases/latest/download/vty-darwin-arm64 -o vty
chmod +x vty && sudo mv vty /usr/local/bin/
# Linux AMD64
curl -L https://github.com/sthbryan/vaulty/releases/latest/download/vty-linux-amd64 -o vty
chmod +x vty && sudo mv vty /usr/local/bin/git clone https://github.com/sthbryan/vaulty.git
cd vaulty
make installvty startFollow the wizard to create a new vault or link to an existing one.
vty push env api .env.api # Push environment file
vty push env production .env.prod -e prod
vty push ssh deploy ~/.ssh/id_ed25519 # Push SSH keyvty pull env api -o . # Download to current dir
vty pull env production # Download with original namevty run env production -- bun dev # Inject env vars and runvty list # Show vault contents
vty show env api # Display secret content
vty delete env old-key # Delete a secret
vty export -o backup.vtybk # Backup vault
vty import backup.vtybk # Restore from backup
vty update # Check for updates
vty logout # Lock vault| Command | Description |
|---|---|
vty start |
Create new vault or link to existing |
vty login |
Unlock vault / extend session |
vty logout |
Lock vault |
vty info |
Show session information |
| Command | Description |
|---|---|
vty push <type> <name> <path> |
Push secret to vault |
vty pull <type> <name> [-o path] |
Pull secret from vault |
vty show <type> <name> |
Display secret content |
vty run <type> <name> -- <cmd> |
Execute with secrets as env vars |
vty delete <type> <name> |
Delete a secret |
| Command | Description |
|---|---|
vty export [-o file] |
Export vault to backup file |
vty import <file> |
Import from backup file |
| Command | Description |
|---|---|
vty list |
List vault contents |
vty update [--check] |
Check/install updates |
| Type | Use Case | Example |
|---|---|---|
env |
Environment variables | .env, .env.production |
ssh |
SSH keys | ~/.ssh/id_rsa |
config |
Configuration files | config.json, nginx.conf |
resources |
Other files | Certificates, licenses |
Store secrets in a private GitHub repository. Authenticate via:
- GitHub CLI:
gh auth token(recommended) - Environment variable:
GITHUB_TOKEN - Manual token: Enter when prompted
Store secrets in ~/.vaulty/<vault-id>/. No internet required.
Session stored at ~/.vaulty/session.yaml:
- Duration: Default 8 hours (
--session=24h) - Master key: Stored encrypted, never in plaintext
MIT License — see LICENSE.