NAME
seams: find where your environments disagree
Production and staging were identical once. Since then: 214 deploys, 9 hotfixes, one intern with admin rights. seams diffs your env vars, feature flags and infra parameters across environments and tells you which differences are deliberate and which are drift.
SYNOPSIS
Single binary, no daemon. Linux, macOS. Reads, never writes.
DESCRIPTION
Three sources, one report
Environment variables, feature flags (LaunchDarkly, Unleash, flat files) and Terraform outputs, joined on one key space so a flag in staging and a var in prod still line up.
Expected is not noise
Some differences are the point: instance sizes, debug flags. Declare them in seams.expected.yml and they stay visible but stop failing your pipeline.
Read-only by design
seams never mutates an environment and never phones home. Secrets are compared as digests; values stay on your machine.
Exit codes you can ship
0 clean, 1 unexpected seams, 2 source unreachable. Wire it into CI in one line; the JSON output carries file-level annotations.
OPTIONS
- check <a> <b>
- compare two environments, exit 1 when unexpected seams exist
- --only env|flags|tf
- limit the comparison to one source
- --expect <file>
- seams listed in seams.expected.yml are reported, not fatal
- --format table|json
- human table (default) or JSON for CI annotations
- watch
- run on a schedule and post new seams to a webhook
EXAMPLES
The deploy-day question, answered before the deploy: what is different, and is it supposed to be?
Fail a pipeline only on seams nobody declared.
Drift never announces itself. Get told the day it happens, not the day it hurts.
TRY IT
INSTALL
Or grab the binary from the releases page. MIT licensed, source on GitHub.
COLOPHON
seams is a fictional tool. A portfolio project by Rienk Rienks - source and design notes on GitHub. Built with Next.js and Tailwind CSS, statically exported.