Secrets encrypted, always
Environment variables encrypted with AES-256-GCM at rest. Build-time and runtime separation. Bulk operations. Two editor modes. Your secrets never touch disk in plaintext.
Built for security-first teams
Encrypted storage, role-based access, and two editor modes for every workflow.
How it works
Add variables
Key-value pairs, paste .env file content, or let sh0 auto-generate connection strings from your databases.
Mark scope
Choose whether each variable is available at build-time, runtime, or both. Build-time vars are injected during docker build.
Encrypted at rest
AES-256-GCM with per-file random nonce. Your secrets never touch disk in plaintext. Decryption happens only at injection time.
Injected on deploy
Variables are decrypted and injected into the container environment at runtime. No .env files inside containers.
The encryption pipeline
Plaintext exists only in memory during injection -- never written to disk unencrypted
Everything you need
AES-256-GCM encryption
Industry-standard authenticated encryption. Master key derived with PBKDF2 (100k iterations). Per-file random nonce with per-chunk derivation.
Masked by default
Variable values are hidden in the dashboard. Revealing requires developer role or above. No accidental exposure in screen shares.
Build & runtime separation
Build-time variables are available during docker build. Runtime variables are injected into the running container. Or use both.
Two editor modes
Key-value editor for structured management. Raw .env editor for pasting entire files. Switch between them freely.
Auto-generated connection strings
Deploy a PostgreSQL, MySQL, or MongoDB database and sh0 generates the connection URL automatically. One click to add it to your app.
RBAC access control
Viewer sees variable names only. Developer can reveal values. Admin can create, edit, and delete. Fine-grained team control.
The old way
- x .env files sitting on the server in plaintext
- x Copy-paste between environments manually
- x No encryption -- anyone with SSH access can read
- x No audit trail of who changed what
- x Accidentally committed to version control
- x Database URLs assembled by hand
The sh0 way
- AES-256-GCM encrypted at rest
- Bulk import and per-app scoping
- RBAC-controlled: viewer, developer, admin
- Masked by default, reveal requires permission
- Never committed -- managed in dashboard or API
- Auto-generated database connection URLs
Questions & answers
What encryption algorithm is used? +
Who can see variable values? +
How do I migrate existing .env files? +
Is there a limit on the number of variables? +
Your secrets deserve better than plaintext.
AES-256-GCM encryption, role-based access, bulk operations, and auto-generated database URLs. Included on every plan.