Getting Started
dotsec replaces your .env file with a .sec file: same shape, same workflow, but encrypted and committed to git. Your tools don't notice — the integration is dotsec run -- <whatever you were running before>.
Install
npm-only, bundles a native binary for macOS / Linux / Windows. Dev-dependency and one-shot npx patterns: Setup → Install.
Already have a .env?
Then you're two commands from done:
Check what happened, then commit:
Your private key landed in .sec.key, which dotsec auto-added to .gitignore. Stash a copy in your password manager.
Starting fresh?
Works with anything
dotsec run injects decrypted env vars into any child process — there's no SDK, no framework adapter, nothing to integrate:
If it reads environment variables, it works. The child gets a real PTY, so colors and interactivity survive.
How it works
Each secret is encrypted individually with AES-256-GCM using a data encryption key (DEK). The DEK is wrapped by your keypair (or AWS KMS) and stored in the @dotsec(...) directive. Per-value encryption is what makes .sec files git-mergeable — two teammates changing different secrets merge cleanly.
Team sharing
Share the .sec.key file over a secure channel (a password manager, not Slack). For CI, set DOTSEC_PRIVATE_KEY as a secret — copy-paste recipes in CI/CD.