Skip to main content

Prevent environment variable drift with Pydantic schema validation, pre-commit hooks, and dotenvx encryption

Project description

envdrift logo

envdrift

PyPI version Python 3.11+ License: MIT Docs codecov

Sync environment variables across your team. No more "it works on my machine."

The Problem

  • New developer joins → spends half a day hunting for the right .env values
  • 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 syncs encrypted .env files using your existing cloud vault. No hosted service, no additional servers, no third-party trust.

  • Your infrastructure — Works with 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.

Installation

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 --provider azure --vault-url https://myvault.vault.azure.net/

2. Team members pull instantly:

envdrift pull --provider azure --vault-url https://myvault.vault.azure.net/

3. Daily workflow:

envdrift pull   # After git pull - sync keys, decrypt
envdrift lock   # Before commit - encrypt, verify keys

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

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

envdrift-6.2.1.tar.gz (270.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

envdrift-6.2.1-py3-none-any.whl (117.3 kB view details)

Uploaded Python 3

File details

Details for the file envdrift-6.2.1.tar.gz.

File metadata

  • Download URL: envdrift-6.2.1.tar.gz
  • Upload date:
  • Size: 270.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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}

File hashes

Hashes for envdrift-6.2.1.tar.gz
Algorithm Hash digest
SHA256 1054b2d45bac47fef2c475661f55587b9b2dacc5769b38e0fcd3fa4088f2a767
MD5 1de39b08a32310d3f179129aa9a0e0c2
BLAKE2b-256 c2c75c714d06912f9464f9c427b9cf40b49baeee788f06d3150fa66599300d82

See more details on using hashes here.

File details

Details for the file envdrift-6.2.1-py3-none-any.whl.

File metadata

  • Download URL: envdrift-6.2.1-py3-none-any.whl
  • Upload date:
  • Size: 117.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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}

File hashes

Hashes for envdrift-6.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4b5301172a1c2a8eb4f1f0e4daa53660b8ad42daa089fd008d8ea0c83ab30c77
MD5 0ab8c689c7c4314add792c8089bfad18
BLAKE2b-256 bc6d45d0c6117f1a7112517d5984f07f13fb7150293d0ed12e7c893d190da06b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page