Skip to main content

Core

StateSet integration

A working single-tenant deployment, with Postgres for shared state and the sequencer enabled:
DATABASE_URL is not optional once you run more than one instance. Unset, each instance keeps coordination state in its own EDI_DATA_DIR, so control-number allocation and replay dedup are per-instance — two instances will happily issue the same control number to the same partner.

Event delivery signing

Two signing schemes are in play, and they are not interchangeable. Both produce sha256=<hex> HMAC-SHA256 values.
The event-delivery path binds the timestamp into the signed input to prevent replay. A receiver that verifies it as body-only will reject every delivery. Reconstruct the input as timestamp + "." + rawBody, using the timestamp from x-stateset-edi-timestamp.
Reject a delivery whose timestamp is outside your tolerance window — that’s what makes binding it useful.

Transports

See Transports for the file, SFTP, AS2, and AS1 variable groups.

Cryptography and key custody

EDI_SIGNING_STRICT=false adopts an explicit fail-open posture — events can be emitted unsigned. Use it only in development.

Alerting

Back-end adapters

Retention

All *_RETENTION_DAYS sweeps run hourly on the cluster monitor leader. 0 (default) keeps rows forever. See Operations.

Next steps

Transports

The AS2, SFTP and VAN settings these variables switch on.

Operations

Reconciliation, evidence bundles and deductions.

Transaction sets

The documents that flow once this is configured.

MCP server

Driving the gateway from an agent.
Last modified on August 29, 2026