Centralized environment variable management for developers and AI agents.
Envault is a CLI tool that helps you manage environment variables across multiple projects with a simple, consistent interface. It stores variables in a centralized SQLite database while keeping your .env files in sync.
- Centralized Management: One database for all your projects' environment variables
- Multi-Environment Support: Manage dev, staging, prod, and custom environments
- Cross-Project Sharing: Copy variables between projects easily
- AI Agent Friendly: Structured commands instead of direct file manipulation
- Interactive & Secure: Hidden input for sensitive values, no shell history exposure
- Git-Based Projects: Automatic project detection via git repository root
- Partial Value Display: Shows masked values (first4...last4) for security
The envault skill allows AI terminal agents to manage environment variables on your behalf using structured commands instead of direct file manipulation.
Install the envault skill from the marketplace:
/plugin marketplace add altic-dev/envault
/plugin install envault-managerCopy the skill file to your Codex skills directory:
mkdir -p ~/.codex/skills
cp skills/envault-manager/SKILL.md ~/.codex/skills/envault-manager.mdThen restart Codex to load the skill.
Copy the skill file to your OpenCode skills directory:
mkdir -p ~/.opencode/skills/envault-manager
cp skills/envault-manager/SKILL.md ~/.opencode/skills/envault-manager/SKILL.mdThen restart OpenCode to load the skill.
Copy the skill file to your Amp skills directory:
mkdir -p ~/.config/agents/skills/envault-manager
cp skills/envault-manager/SKILL.md ~/.config/agents/skills/envault-manager/SKILL.mdThen restart Amp to load the skill.
bun install -g envault-managernpm install -g envault-managergit clone https://github.com/altic-dev/envault.git
cd envault
bun install
bun run build
bun link# Initialize (automatic on first use)
cd /path/to/your/project
# Add a variable (interactive mode - recommended for secrets)
envault var set DATABASE_URL
# Add with inline value (appears in shell history)
envault var set DEBUG true
# List all variables in the current repo
envault var list
# Get a specific value
envault var get DATABASE_URL
# Sync existing .env files to database
envault syncEnvault uses a noun + verb interface optimized for both humans and AI agents.
List tracked projects in the store.
# List all projects
envault project list
# Output as JSON
envault project list --jsonList environments for the current repo (default) or a tracked project.
# List environments for current repo
envault env list
# List environments for a tracked project by name
envault env list --project my-app
# Alias for --project
envault env list -p my-app
# Output as JSON
envault env list --jsonManage variables for the current repo (default) or a tracked project.
# List variables for current repo
envault var list
# List variables for a tracked project
envault var list --project my-app
# Filter by environment
envault var list --env prod
# Output as JSON
envault var list --json
# Get a specific value (prints plaintext to stdout)
envault var get DATABASE_URL
# Set interactively (hidden input)
envault var set API_KEY
# Set with inline value (WARNING: appears in shell history)
envault var set DEBUG true
# Set with non-interactive flag (quote if it contains spaces)
envault var set API_KEY --value "secret"
# Multiline value (Ctrl+D to finish)
envault var set SSL_CERT --multiline
# Unset (remove) a variable (with confirmation)
envault var unset OLD_VAR
# Clear (remove) ALL variables in a project (with confirmation unless --yes)
envault var clear
# Clear variables for one environment only
envault var clear --env prod
# Clear variables for a tracked project by name (store only; run sync in that repo to update .env files)
envault var clear --project my-app --yes
# Copy variables from another tracked project into the current repo
envault var copy backend
envault var copy backend DATABASE_URL --from-env prod --env stagingSync variables between your project (.env* files) and the store (database).
# Sync store → project (default): write .env* files from database
envault sync
# Sync project → store (.env* → db): import .env* into the store
envault sync --from projectFile mapping:
.env→defaultenvironment.env.dev→devenvironment.env.prod→prodenvironment.env.<custom>→<custom>environment
Get help for any command.
# Global help
envault --help
# Command-specific help
envault help var setcd my-new-project
git init
# Add variables interactively
envault var set DATABASE_URL
envault var set API_KEY
envault var set JWT_SECRET
# Variables are now in both database and .env file
cat .env# Add production variables
envault var set DATABASE_URL --env prod
envault var set API_KEY --env prod
# Add development variables
envault var set DATABASE_URL --env dev
envault var set DEBUG true --env dev
# List all environments
envault env listcd my-frontend
# Copy DATABASE_URL from backend project
envault var copy backend DATABASE_URL
# Copy all prod variables to local staging
envault var copy backend --from-env prod --env stagingcd existing-project
# Import your existing .env files into the store
envault sync --from project
# Now managed by envault
envault var listEnvault uses git repository roots to identify projects. Each project is uniquely identified by its absolute path on your system.
- Database:
~/.envault/envault.db(SQLite, plaintext) - Permissions: Database file is
chmod 600(owner read/write only) - .env Files: Remain in your project directories, synced with database
Envault is not an encryption or secrets management tool. It's a workflow and organization tool that:
- Stores values as plaintext (same as
.envfiles) - Relies on filesystem permissions for security
- Helps prevent accidental exposure via shell history (interactive mode)
- Provides partial value display for quick verification
For true secrets management, use tools like HashiCorp Vault, AWS Secrets Manager, or similar.
- Bun >= 1.0.0 (or Node.js with appropriate modifications)
- Git (for project detection)
# Clone repository
git clone https://github.com/altic-dev/envault.git
cd envault
# Install dependencies
bun install
# Run in development mode
bun run dev
# Build for production
bun run build
# Run tests
bun testContributions welcome! Please open an issue or PR.
Built with Bun - a fast all-in-one JavaScript runtime.