VERSION CONTROL FOR ENV FILES

Every env change, diffed and one click from rollback.

Someone deletes a variable, production crashes, and nobody knows what the old value was. Never again.

This keeps happening.

Real incidents, real post-mortems. Every one of them is a missing diff.

2026-04 · post-mortem

A Redis connection string changed without review at 3:52 PM. By 5 PM, 4,000 users were logged out.

The diff would have shown exactly who changed it and what the old value was.

node rotation · 502s

Checkout pods returned 502s after a node rotation. The env var existed only on the replaced nodes, set once via a console, never written down.

The history would have had the value. One click restores it.

missing .env.example line

The variable existed on the developer machine but never made it to production. Tests, review, and build all passed. Production found it.

Startup validation against the contract catches it before deploy, not after.

How it works

Three steps. The product does the remembering so you don't have to.

01

Import your .env

Paste or upload your file. Keys are parsed, values masked on sight. Your first diff appears in under a minute.

$ etm import .env
parsed 14 keys · 0 parse errors
values masked ••••••••
02

Every change becomes a version

Edit a value and a commit entry appears with your name, a timestamp, and the diff. Nothing is ever overwritten.

v16 STRIPE_KEY updated · you · just now
v15 LOG_LEVEL added · ana · 2h ago
v14 DATABASE_URL updated · you · 1d ago
03

Roll back in one click

Pick any version and confirm exactly which keys will change. The rollback appends a new version, so undoing the rollback is one more click.

restore v14 to prod?
updated STRIPE_KEY
added LOG_LEVEL

Built for the way teams actually break prod.

The features that matter when it is 2am and checkout is down.

Diffs on every plan, not just Enterprise

Vercel shows who changed what but hides the before/after behind Enterprise. Here every change shows its diff, on every plan.

updatedDATABASE_URL
••••••••→••••••••

One-click rollback that respects production

Dev and staging get an undo toast. Production gets a confirm dialog listing exactly which keys change. Never the other way around.

Masked by default

Values render as bullets. Reveal is click-only, never hover, and every reveal is an audited read event.

30-second clipboard scrub

Copied secrets clear from the clipboard automatically. Nothing lingers to be pasted into the wrong chat.

Audit log of everything

Every read and write lands in the log: who, when, what changed. Values never appear in the records.

Vercel sync

Push the current version straight to your Vercel project. No more console copy-paste.

Trust is the product.

Storing secrets is the highest-trust ask in software. Here is exactly what we do with yours.

✓

Server-side encryption at rest. Values are decrypted in memory only and discarded when the viewer closes.Honest limit: v1 uses platform-managed encryption. Per-project keys are on the roadmap.

✓

Values never appear in logs, audit records, or error responses. The log records the fact of access, never the secret.

✓

Reveal and copy are treated as audited read events: who, when, from where.

✓

Reads and writes go through membership checks on every route. There is no unauthenticated path to a value.

Flat pricing.

We do not charge per seat like Doppler ($21/user/mo) or per identity like Infisical ($18/identity/mo).

Free

$0/mo
  • 1 project
  • 90-day history
  • Diffs on every change
Start free

Self-hosted

$0 forever
  • Bring your own Postgres
  • Same dashboard
  • You hold the keys
Start free

Full pricing and the competitor comparison →

Stop debugging env vars at 2am.

Start free