ConfigDrift
Keep configurations consistent across all environments, automatically. ConfigDrift compares configs, flags drift, and reports compliance violations before they cause incidents.
⭐ Star this repo if you manage multi-environment configs — it helps other devs find ConfigDrift!
Real-world scenarios:
- Multi-environment compliance: Ensure staging and prod configs are identical before every deploy
- Secrets audit: Detect env vars that exist in one environment but are missing in another
- CI/CD gating: Block PRs that introduce config drift across environments
- Incident prevention: Catch a changed database endpoint before it causes a production outage
Installation
ConfigDrift is not published to public PyPI. Install from the self-hosted index, a direct GitHub install, or via Homebrew/Scoop (below).
# Install directly from GitHub (recommended)
pip install git+https://github.com/Coding-Dev-Tools/configdrift.git
Editable install for development:
pip install -e ".[dev]"
Then run: configdrift --help
Quick Start
Compare two config files:
configdrift check dev.yaml prod.yaml
Scan entire directories as environments:
configdrift scan ./config/dev ./config/staging ./config/prod
Use a config file to define environments:
configdrift init
configdrift scan --config .configdrift.yaml
Usage
check — Compare config files
configdrift check <file1> <file2> [--output table|json|silent] [--baseline dev] [--target prod]
Output formats:
table(default): Rich colored table outputjson: Machine-readable JSON for CI integrationsilent: Exit code only (0 = no breaking drift, 1 = breaking drift found)
scan — Compare environment directories
configdrift scan ./dev ./staging ./prod --baseline dev
Scans all config files in each directory, merges them, and compares against a baseline environment.
init — Generate a config file
configdrift init .
Creates .configdrift.yaml in the specified directory.
CI/CD Integration
Use --output silent for CI gating:
configdrift check dev.yaml prod.yaml --output silent || echo "Drift detected!"
GitHub Actions example
- name: Detect config drift
run: |
pip install git+https://github.com/Coding-Dev-Tools/configdrift.git
configdrift check ./config/staging/app.yaml ./config/prod/app.yaml --output silent
Troubleshooting
- Exit code 1 with no output: use
--output tableto inspect drift details. - TOML parsing errors on Python < 3.11: install
tomliandtomli-wor use Python 3.11+. - Large config scans are slow: narrow the scan to changed files or a single directory.
- Unexpected breaking drift: review severity rules in the project settings;
database*andauth*keys are flagged as breaking by default.
Supported Formats
Severity Levels
- Info: Non-critical value changes
- Warning: Added or removed optional keys
- Breaking: Changes to critical keys (
database*,auth*,api_key*,secret*,password*,token*,endpoint*)
Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run with coverage
pytest --cov=configdrift
Pricing
ConfigDrift is one of 11 tools in the Revenue Holdings suite. One license covers all CLI tools.
🔹 No lock-in: CLI works fully offline on the free tier — no telemetry, no phone-home. 🔹 Annual billing: Save 20%.
Per-Tier Features
License
MIT
Test
npm test # runs: node --test tests/