Unlimited environments under every project
dev, qa, staging, uat, prod, and whatever else your team actually runs.
| DATABASE_URL | •••••••••••••••• |
| REDIS_URL | •••••••••• |
| SESSION_SECRET | •••••••••••• |
Encrypted on your machine, so we only ever store ciphertext. One envhq pull and your whole team is in sync.

Sync is a three-way merge against the last state you and the server agreed on. It adds, it updates, and it stops to ask before it removes.
$ envhq diff prod
prod:
~ DATABASE_URL
+ SENTRY_DSN
- LEGACY_API_KEY
2 to push, 1 to delete.
$ envhq push prod
✔ Pushed to prod (v9): 1 new, 1 updated, 1 deleted.$ envhq push prod
✖ prod has moved to version 9 since your last read. Conflicting keys:
DATABASE_URL: yours="…:5432/orders", server="…:5433/orders"Both are the CLI's own output. The second wrote nothing: your file and the server stay untouched until you decide.
A copy of the database holds ciphertext, SHA-256 token hashes, and the names of your projects and variables. Not one value anyone can open.
Read the security modelorders-api / prod
Names legible, values not. This is the whole row.
A project holds environments, an environment holds versions, and nothing you did last month is unrecoverable.
dev, qa, staging, uat, prod, and whatever else your team actually runs.
| DATABASE_URL | •••••••••••••••• |
| REDIS_URL | •••••••••• |
| SESSION_SECRET | •••••••••••• |
Commits are append-only. Restore an earlier one to recover a variable somebody overwrote.
Bulk-import a file into an environment. It upserts, so an import can only ever add or update.
Create a token scoped to one project and read-only, drop it into your pipeline, and revoke it whenever you like.
Create a project, push your first environment, and pull it back on another machine a minute later.
EnvHQ is a free tool. Read the security model and the Terms and Conditions before you store production secrets.