JamesWare · Dev tool

Doteq

Keep .env in sync with the example — keys only, never overwrite.

Open source CLI Python MIT

Screenshot slot — replace assets/products/doteq/hero.png when you have a capture.

Problem

.env.example gains keys; local .env does not. Copy-paste overwrites values you already set. CI then fails on a missing key nobody noticed.

What it does

Parses both files, appends missing keys, leaves existing values alone, keeps comments and blank lines. Dry-run, orphan check, optional example-from-env, atomic write + timestamped 600 backup.

Why it exists

Local-dev hygiene. Print key names and counts, never values.

Capabilities

  • Sync missing keys; never overwrite
  • Preserve comments, blanks, quotes, export KEY=, basic multiline
  • Auto-detect .env.example or example.env
  • --create-example with empty values
  • --dry-run, --check-orphans
  • Atomic write + .env.bak.YYYYMMDD-HHMMSS
  • JSON output when CI is set

How it works

Local CLI. No network except what you use to install it. Backups mode 600.

Current state

Public MIT repo, small tool, usable. Not a hosted service.

Get it

Install from the public repo. No PyPI package yet. The CLI never prints values, only key names.

pip install git+https://github.com/JewhurstEngineering/doteq.git@main