handofflens.io is a local command-line tool. You run it on your own machine against two captured handoff payloads and read a redacted report. It stores no payloads, calls no model, and sends no network request.
Requires Node 22 (see .nvmrc). Clone the repository and install the pinned dependencies.
git clone git@github.com:LibertyDigitalSystems/handofflens.io.git
cd handofflens.io
npm ci
npm test
Pass exactly one JSON file, or - to read the capture from stdin so
it can be piped from a capture step. Add --markdown for a
human-readable report instead of JSON, or --batch to evaluate a JSON
array of records in one pass (the two flags combine). No other flags are
accepted.
node src/cli.mjs path/to/capture.json
node src/cli.mjs path/to/capture.json --markdown
capture | node src/cli.mjs -
cat records.json | node src/cli.mjs --batch -
0 — pass: every required path is present and no leaf was dropped or changed.1 — fail: a required path is missing, or a leaf was dropped or changed.2 — unknown: the capture could not be evaluated, or the input was malformed, oversized, or unsupported.The CLI reads a schema 1.0 envelope. Provide the two captures to
compare in one of two shapes:
before and an after JSON object, plus an
optional required_paths array of JSON pointers that must still be
present in after."adapter": "conereplay-message-v1" envelope whose
event.inputs and event.outputs are JSON-encoded
strings. The adapter parses them into the before and after captures.-) per run, up to 1 MiB.The report records SHA-256 hashes of JSON pointers and the change kind at each path (dropped, changed, added, or missing-required). It never writes the field values themselves, and identifiers are hashed before export.
Hosted evaluation, the history API, and billing are disabled: POST /upload returns 501 and the history routes return 401 without a capability token. Local process-memory history behind a capability token is available on a locally run server; it isolates tenants, expires records, and supports deletion.