Zero-infrastructure secret management that actually works
Stop wrestling with complex secret management tools. Smolcase stores encrypted secrets in Git repositories with zero servers, zero config files, and zero headaches.
# Install
cargo install smolcase
# Create project (interactive setup!)
mkdir my-secrets && cd my-secrets
smolcase init
# Or run the guided tutorial
smolcase tutorial
# Configure once (no more password prompts!)
smolcase configure
# Add secrets
smolcase add DATABASE_URL "postgresql://..."
smolcase add API_KEY "sk-live-..." --users "alice,bob"
# Run commands with secrets
smolcase run -- npm start
smolcase run -- docker-compose up
# Push to GitHub (fully encrypted)
git push -u origin mainThat's it. Your secrets are encrypted, stored in Git, and accessible to your team.
- π Zero Knowledge: Even with repo access, secrets stay encrypted
- β‘ Zero Setup: Interactive setup gets you started in seconds
- π Git Native: Works with GitHub, GitLab, or any Git hosting
- π₯ Team Ready: Granular permissions, groups, role separation
- π File Support: Encrypt
.envfiles, configs, certificates - π« No Servers: No infrastructure, no vendor lock-in, just Git
- π― Developer Friendly: Run commands directly with secrets injected
# Brand new? Start here!
smolcase tutorial
# Walks you through everything step-by-step
# Or interactive project setup
smolcase init
# β Project name: [My Secrets]
# β Initialize git repo? [Y/n]
# β Add GitHub remote? [Y/n]
# β Repository URL: https://github.com/user/secrets
# β Admin username: admin
# β Generate master key? [Y/n]
# β Add first secret? [Y/n]
# β Setup complete!# Interactive initialization
smolcase init
# Configure admin credentials (cache locally)
smolcase configure
# β Admin password cached
# β Master key cached
# β No more repeated prompts
# Add team members
smolcase user add alice --email "alice@company.com"
smolcase user add bob --email "bob@company.com"
# Create groups
smolcase group create developers
smolcase group add-user developers alice bob
# Add secrets with permissions
smolcase add DATABASE_URL "postgresql://..." --groups "developers"
smolcase add STRIPE_KEY "sk_live_..." --users "alice"
smolcase add .env.production --groups "developers"
# Push to GitHub (encrypted)
smolcase sync
git push# Clone secrets repo
git clone https://github.com/company/myapp-secrets.git
cd myapp-secrets
# Configure user credentials (cache locally)
smolcase configure
# Username: alice
# Password: [from admin]
# Master key: [from admin]
# Access secrets (no prompts!)
smolcase get DATABASE_URL
smolcase list# Run commands with secrets (NEW!)
smolcase run -- npm start
smolcase run -- python app.py
smolcase run -- docker-compose up
smolcase run --env production -- ./deploy.sh
# Apply config templates (NEW!)
smolcase apply docker-compose.template.yml > docker-compose.yml
smolcase apply nginx.conf.template --output /etc/nginx/nginx.conf
# Traditional export (still works)
smolcase export --format env > .env
eval $(smolcase export --format env)
# Get secrets instantly
smolcase get API_KEY
# Check what's available
smolcase list
# Pull latest changes
git pull && smolcase status- ChaCha20-Poly1305: Authenticated encryption
- Argon2id: Memory-hard key derivation
- Zero Knowledge: Admin can't see your secrets without master key
# User-level permissions
smolcase add SECRET "value" --users "alice,bob"
# Group-level permissions
smolcase add API_KEY "key" --groups "developers,qa"
# Public secrets (all team members)
smolcase add PUBLIC_URL "https://app.com"- Admins: Manage users, add/remove secrets, sync to Git
- Users: Access permitted secrets, export, list
- Clean boundaries: Users can't accidentally break things
smolcase init [--name PROJECT] [--git] # Interactive project setup
smolcase tutorial # Guided walkthrough (NEW!)
smolcase configure # Setup credentials (once)
smolcase logout # Clear cached credentialssmolcase run -- <command> # Run command with secrets (NEW!)
smolcase apply <template> [--output] # Process config templates (NEW!)
smolcase get <SECRET> # Get secret value
smolcase list # Show accessible secrets
smolcase export [--format env|json] # Export secrets
smolcase status # Project & credential statussmolcase add <KEY> <VALUE> # Add secret
smolcase remove <KEY> # Remove secret
smolcase user add <NAME> # Add team member
smolcase group create <NAME> # Create group
smolcase sync # Commit to Gitdocker-compose.template.yml:
services:
app:
environment:
- DATABASE_URL={{DATABASE_URL}}
- API_KEY={{API_KEY}}
- REDIS_URL={{REDIS_URL}}Usage:
# Process template with secrets
smolcase apply docker-compose.template.yml > docker-compose.yml
docker-compose up
# Or run directly
smolcase run -- docker-compose -f docker-compose.template.yml upnginx.conf.template:
server {
server_name {{DOMAIN_NAME}};
ssl_certificate {{SSL_CERT_PATH}};
ssl_certificate_key {{SSL_KEY_PATH}};
}- name: Deploy with secrets
env:
SMOLCASE_USER: ${{ secrets.SMOLCASE_USER }}
SMOLCASE_PASSWORD: ${{ secrets.SMOLCASE_PASSWORD }}
SMOLCASE_MASTER_KEY: ${{ secrets.SMOLCASE_MASTER_KEY }}
run: |
git clone https://github.com/company/secrets.git
cd secrets
smolcase configure # Uses env vars
smolcase run -- ./deploy.shRUN curl -L https://github.com/simplysabir/smolcase/releases/latest/download/smolcase-linux.tar.gz | tar xz
COPY secrets/ ./secrets/
RUN cd secrets && smolcase apply app.template.env > /app/.env# One-time setup
git clone https://github.com/company/myapp-secrets.git secrets
cd secrets && smolcase configure
# Daily usage - run directly
cd secrets && smolcase run -- npm start
# Or export traditionally
cd secrets && smolcase export --format env > ../.env.localcargo install smolcasecurl -sSL https://github.com/simplysabir/smolcase/install.sh | bashgit clone https://github.com/simplysabir/smolcase
cd smolcase && cargo build --release
sudo mv target/release/smolcase /usr/local/bin/| Feature | smolcase | HashiCorp Vault | AWS Secrets | SOPS |
|---|---|---|---|---|
| Infrastructure | None | Complex | AWS Required | None |
| Setup Time | 30 seconds | Hours | Hours | Medium |
| Interactive Setup | β Tutorial | β Manual | β Manual | β Manual |
| Command Execution | β Built-in | β Manual | β Manual | β None |
| Template Processing | β Built-in | β Separate | β Separate | β Manual |
| Team Permissions | β Built-in | β Complex | β AWS IAM | β Manual |
| Git Integration | β Native | β Separate | β Separate | β Basic |
| Credential Caching | β Seamless | β Manual | β Manual | β None |
| Cost | Free | $$ License | $$ Usage | Free |
- Strong Passwords: 12+ characters for admin & master key
- Regular Rotation: Change master key quarterly
- Least Privilege: Only grant necessary secret access
- Private Repos: Use private Git repositories
- Backup Strategy: Keep encrypted repo backups
- Secure Sharing: Receive credentials via secure channels
- Local Security: Don't commit exported
.envfiles - Stay Updated: Pull changes before starting work
- Report Issues: Alert admin of suspicious activity
- Clean Logout: Use
smolcase logouton shared machines
"Access denied" errors
smolcase status # Check your permissions
git pull origin main # Pull latest changes
smolcase configure # Reconfigure if needed"Invalid password" errors
smolcase logout # Clear cached credentials
smolcase configure # Reconfigure with correct passwordGit conflicts
git pull origin main # Pull first
smolcase sync # Then sync your changesTemplate not working
# Check template syntax: {{SECRET_NAME}}
smolcase list # Verify secret exists
smolcase get SECRET_NAME # Test secret accessTraditional secret management is complex:
- Infrastructure to maintain
- Complex permission systems
- Vendor lock-in
- Expensive licensing
- Slow team onboarding
- Manual export/import workflows
smolcase is simple:
- Uses Git you already have
- Interactive setup wizard
- One-time credential setup
- Zero infrastructure costs
- Instant team access
- Direct command execution
- Template processing built-in
- Open source freedom
# Start here - complete guided tutorial
smolcase tutorial
# Quick interactive setup
smolcase init- Admin sets up:
smolcase initβ add users β push to Git - Team members:
git cloneβsmolcase configure - Daily usage:
smolcase run -- <command>
Frontend Development:
# Setup once
smolcase add API_URL "https://api.staging.com"
smolcase add API_KEY "dev-key-123"
# Daily development
smolcase run -- npm start
smolcase run -- yarn buildBackend Deployment:
# Template-based deployment
smolcase apply k8s-deployment.template.yaml > deployment.yaml
kubectl apply -f deployment.yaml
# Or direct execution
smolcase run -- kubectl apply -f k8s-deployment.template.yamlDocker Compose:
# Process template
smolcase apply docker-compose.template.yml > docker-compose.yml
docker-compose up
# Or run directly (if Docker supports templates)
smolcase run -- docker-compose upWe love contributions! Here's how:
- Fork the repository
- Create feature branch:
git checkout -b feature/amazing-feature - Test your changes:
cargo test - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open Pull Request
git clone https://github.com/simplysabir/smolcase
cd smolcase
cargo build
cargo test
# Test locally
./target/debug/smolcase tutorialMIT License - see LICENSE file for details.
Ready to simplify your secret management?
cargo install smolcase
mkdir my-secrets && cd my-secrets
smolcase init # Interactive setup!
# or
smolcase tutorial # Full guided walkthroughβ Star us on GitHub if smolcase saves you time!
- π― Interactive Setup:
smolcase initnow guides you through setup - π Built-in Tutorial:
smolcase tutorialfor complete walkthrough - π Command Execution:
smolcase run -- <command>runs commands with secrets - π Template Processing:
smolcase apply template.ymlprocesses config templates - π¨ Better UX: Improved prompts, guidance, and error messages
- β‘ Environment Filtering:
--env productionfilters secrets by environment