Offline parser proof

Same .env.
Different runtime.

Catch missing keys, quote drift, bad coercion, unsafe placeholders, and environment drift before your service starts.

  • No network
  • No telemetry
  • No secret output
Three cyan, vermilion, and violet risograph parser plates overlap at a central registration target.
Fig. 01 One file, three semantic plates.
01Nodedotenv quoting + escapes
02Dockerliteral quotes, no expansion
03Pythonexport + interpolation signals

Live semantic plate

See what the runtime sees.

This browser demo uses the same core rules for the most common quoting fault. Text stays in this tab and is discarded when you leave.

.env

Try removing a key, adding EXTRA=1, or switching profiles.

Contractenv.contract.toml
[variables.APP_PORT]
type = "integer"
required = true

[variables.DEBUG]
type = "boolean"
required = true

[variables.DATABASE_URL]
type = "url"
secret = true
Ready to inspect

Choose the runtime that will consume this file, then check its contract.

CI-sized workflow

Contract. Parse. Prove.

  1. 01

    Write the contract once

    Required, typed, bounded, secret-aware. TOML stays reviewable beside your code.

  2. 02

    Name the real parser

    Node, Python, and Docker do not always agree about quotes, comments, or expansion.

  3. 03

    Fail before startup

    Human output locally; stable JSON and deliberate exit codes in CI. Values stay redacted.

Version 0.1.0 · MIT

Put it before docker run.

Build the single binary from source today. Release binaries can drop into the same CI command later.

terminal
cargo install --git https://github.com/B-Divyesh/sf-env-contract-check
$ env-contract-check check \
  --contract env.contract.toml \
  --env .env.production \
  --profile docker \
  --deny-warnings

ERROR [invalid_type] APP_PORT — expected a base-10 integer
Result: FAIL · 1 error(s), 1 warning(s)

A deliberately boring data policy

Your secrets never become our data.

The CLI is offline. The demo has no backend. There are no analytics, cookies, accounts, uploads, or local storage.