envdrift
Sync environment variables across your team. No more "it works on my machine."
Status: stable. envdrift v11 marks the first release the project considers production-ready: core features are covered by integration tests against real backends in CI (LocalStack, HashiCorp Vault, Lowkey Vault emulating Azure) and the real encryption binaries, every bug fix ships a regression test, and changes pass a reliability-first review gate. See the changelog for history.
The Problem
- New developer joins → spends half a day hunting for the right
.envvalues - Someone updates a secret → nobody else knows until production breaks
- "Can you send me the latest API keys?" in Slack → security nightmare
Paid SaaS solutions exist, but do you really want your production secrets on someone else's infrastructure?
The Solution
envdrift is an open-source CLI that encrypts .env files and syncs them using your existing cloud vault and git.
No hosted service, no additional servers, no third-party trust.
- Your infrastructure — Works with all major cloud providers: Azure Key Vault, AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager
- Zero trust required — Secrets never leave your cloud
- No new servers — Just a CLI tool, no client-server architecture
- Free forever — MIT licensed, no per-seat pricing
# New team member onboarding - one command
envdrift pull
# That's it. Keys synced from vault, .env files decrypted, ready to code.
📘 This is the heart of envdrift. The end-to-end walkthrough — encrypt, push your key to your cloud vault, and have teammates pull and decrypt in one command — lives in the Env File Sync Guide. Start there.
Installation
One-liner (recommended):
# macOS / Linux
curl -sSL https://raw.githubusercontent.com/jainal09/envdrift/main/install.sh | sh
# Windows (PowerShell)
irm https://raw.githubusercontent.com/jainal09/envdrift/main/install.ps1 | iex
Or via pip:
pip install "envdrift[vault]" # All vault providers
Quick Start
1. Encrypt and push to vault (once per project):
envdrift encrypt .env.production
envdrift vault-push . my-app-key --env production --provider azure --vault-url https://myvault.vault.azure.net/
2. Team members pull instantly (no config needed):
envdrift vault-pull . my-app-key --env production --provider azure --vault-url https://myvault.vault.azure.net/
vault-pull fetches the key, writes .env.keys, and decrypts .env.production in one step.
3. Daily workflow (config-based, needs [vault.sync] in envdrift.toml):
envdrift pull # After git pull - sync keys, decrypt
envdrift lock # Before commit - encrypt, verify keys
Note:
pull/lockoperate on all services defined in your sync config. For a single secret without any TOML config, usevault-pull/vault-push.
Beyond Sync
| Feature | Description |
|---|---|
| Schema Validation | Validate .env against Pydantic schemas |
| Environment Diffing | Compare dev vs staging vs production |
| Vault Integration | Azure, AWS, HashiCorp, GCP |
| Encryption | dotenvx and SOPS backends |
| CI/CD Mode | Fail builds on misconfiguration |
envdrift validate .env --schema config:Settings
envdrift diff .env.dev .env.prod
Documentation
Full documentation: jainal09.github.io/envdrift
Code Review Partners
envdrift's pull requests are reviewed by three AI review bots, all of which provide their service to this project for free through their open-source programs. Thanks to them for supporting open source:
- CodeRabbit — free reviews for every public repository
- Greptile — free reviews for OSI-licensed public repositories
- cubic — free unlimited reviews for public repositories
Only the first two appear in the badge row above; cubic publishes no README badge.
License
MIT
Metadata
Release files for envdrift 11.0.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| envdrift-11.0.7.tar.gz | 5.0 MB | Without provenance | Details for envdrift-11.0.7.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| envdrift-11.0.7-py3-none-any.whl | Python 3 | none | any | Details for envdrift-11.0.7-py3-none-any.whl |
Total release size: 5.4 MB
Release files / envdrift-11.0.7.tar.gz
| Download URL | envdrift-11.0.7.tar.gz |
|---|---|
| Size | 5.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8f4cce9debd68f89a304dc4035213ebd0c768338f95172bd088106e3ad3c81b1
|
|
BLAKE2b-256 checksum How to use checksums |
a542dc2ca56a3121f9c6e9d31466155808bbd6587b317b4b51af776427fe186b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / envdrift-11.0.7-py3-none-any.whl
| Download URL | envdrift-11.0.7-py3-none-any.whl |
|---|---|
| Size | 390.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8d2190a35e320423ece42e30ac5f23642604e093ab77f9c6754e40dd2a3f6229
|
|
BLAKE2b-256 checksum How to use checksums |
c85c6e40229620d5e76dbd58fb7d5d2fa91172cf8afd68edefb415ad7948a366
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for envdrift 11.0.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.