Configuration that stays in sync
maxicfg is a single-binary command-line tool that validates configuration files against a schema, renders templates, and reports drift between environments before it reaches production.
Quick start
Validate every configuration file in a directory against its schema:
$ maxicfg lint ./config --schema ./config/schema.yaml
config/production.yaml ok
config/staging.yaml ok
config/local.yaml 2 problems
local.yaml:14:3 unknown key "databse.pool_size" (did you mean "database"?)
local.yaml:31:1 required key "logging.level" is missing
1 of 3 files failed
Compare two environments and see only what actually differs:
$ maxicfg diff config/staging.yaml config/production.yaml --ignore-secrets
~ database.pool_size 10 -> 40
~ cache.ttl 5m -> 1h
+ features.new_billing true (only in production)
- debug.profiler true (only in staging)
4 differences, 27 keys identical
Schema validation
Catch typos, missing keys and wrong types before deploy, not after.
Drift detection
Compare environments and surface configuration that silently diverged.
Templating
Render configs from templates with environment variables and defaults.
Secret scanning
Flag credentials accidentally committed into configuration files.
Why another config tool
Most projects end up with a handful of near-identical configuration files — one per environment — that slowly drift apart. A key gets added to staging and never makes it to production. A value gets tuned during an incident and nobody writes it down. Six months later nobody can say which file is correct.
maxicfg does not try to replace your configuration management. It reads the files you already have, tells you where they disagree, and fails the build when something looks wrong. That is the whole scope.
Status: maxicfg is pre-1.0. The command-line interface is stable in practice, but flags may still change between minor versions. Pin a version in CI — see installation.