Skip to main content
Glama

envdiff

"It works on my machine" — which part of the machine? envdiff compares two environment descriptors, typically a developer's local environment and a CI environment, and reports exactly where they differ:

  • Node version, OS, and lockfile presence, compared as fields (a missing field is reported as null)

  • env vars present on one side only, by key

  • env vars whose values differ — by key name only. Values are compared but never echoed into the report, so a descriptor may carry secrets without leaking them.

A descriptor is a small JSON object: {"node": "20.11.0", "os": "linux", "env": {"CI": "true"}, "lockfile_present": true} — every field optional.

Pure local computation: no network, no configuration.

CLI

npx @reneturcios/envdiff diff local.json ci.json
npx @reneturcios/envdiff --version

Output is the comparison report as JSON, with a summary.total_differences count. Exit codes: 0 on success (differences are a result, not an error), 1 on a runtime error (unreadable or invalid descriptor), 2 on a usage error.

Related MCP server: @mcpx-digital/i18n-keys

MCP server

npx -y @reneturcios/envdiff mcp

MCP client config:

{
  "mcpServers": {
    "envdiff": {
      "command": "npx",
      "args": ["-y", "@reneturcios/envdiff", "mcp"]
    }
  }
}

Tools

  • diff_environments — Compare two environment descriptors.

    • local (object, required) — the local descriptor

    • ci (object, required) — the CI descriptor

    Each descriptor: node (string), os (string), env (string map), lockfile_present (boolean), all optional.

Docker

docker run -i ghcr.io/cloudcorprecords/envdiff
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/envdiff diff /w/local.json /w/ci.json

Development

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (pure local, no network)
npm run dev     # run the CLI from source

License

MIT — Copyright (c) 2026 Rene Turcios

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables comparing container image versions to see package and CVE changes, including shedding/introductions, and comparing Chainguard images to upstream.
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables comparing local JSON/YAML locale files to find missing or extra keys against a base locale, detect empty, null, or whitespace translations, and list flattened dot-path keys for a single file. Works entirely on local files with no network calls or translation APIs.
    3
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Compares a project's .env file against its .env.example template to surface missing, extra, and empty keys, flag empty required variables, and produce paste-safe key inventories for tickets or sharing. Runs entirely on local files with every value redacted, so secrets are never echoed or uploaded.
    3
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Checks which .env, .git, keys and source maps Cloudflare Pages, Vercel, Netlify or Firebase would publish, before and after deploy. CLI, live probe, Claude Code hook, MCP server and GitHub Action.
    1
    MIT