# Run it yourself — the five-minute local capture

The honest version of a demo is the run itself. The gateway runs on your machine with its full durable substrate — the full capture laws, validation against GS1's pinned schema, the CBV §8.9 event hash and RFC 7807 error bodies, the same engine that answers on this origin at POST /translate, /validate and /hash. No account and no form stand between you and the run.

**Two ways in.** Zero-install: the calculators answer on this origin — POST /translate, /validate, /hash, no key. Full gateway: npx epcis.dev runs capture, query, the suite and the MCP door on your bench.

## Capture in five minutes

```
# zero-install, against this origin — no key, no account
curl -X POST https://epcis.dev/validate \
  -H 'content-type: application/json' \
  --data-binary @my-epcis-2.0-doc.json

curl -X POST https://epcis.dev/hash \
  -H 'content-type: application/json' \
  --data-binary @my-epcis-2.0-doc.json

curl -X POST https://epcis.dev/translate \
  -H 'content-type: application/xml' \
  --data-binary @legacy-1.2.xml

# the full gateway, on your bench
npx epcis.dev capture my-epcis-2.0-doc.json
```

Then read it back and check us: recompute the CBV §8.9 hash, re-verify the pinned digests (/conformance/), throw your own corpus at /translate/. Out-of-scope reads return absence, not redaction.

## What a run proves

That the interface described on this site exists and behaves as written. What a run never proves is an attestation — none has ever been issued, and the CLI never signs. The dated ledger is /what-ships-today/.
