The Open Protocol
A wire contract you can check, not take on faith.
Infrastructure you wire into a restaurant should not be able to disappear behind a pricing change, an acquisition, or a dead cloud. So the contract your software depends on is documented, simulated, and testable — today, for free, before you buy anything.
Inspectable today
What you can verify before spending a dollar.
The wire contract
Every node serves one documented HTTP/JSON API on the LAN — POST /print, GET /status, SSE /events, GET/PUT /config, /drawer/kick, /raw, /peers, /scans, GET/PUT /cloud — plus raw ESC/POS on :9100 with DLE EOT status replies. One schema definition is shared by the firmware, the twin, the tools, and this website: there is exactly one description of the wire format, and everything is tested against it.
The digital twin
A byte-compatible simulator of a node, free to run: pnpm sim starts a network service with the same HTTP API, the same :9100 port, and fault injection for paper out, cover open, offline, drawer, weight, and scans. Your integration can't tell it from hardware — which is the point.
The conformance suite
75 specs, runnable by anyone, that pass identically against the twin or a physical node. “Implements the protocol” is a claim you can check with one command, not a line of marketing.
Honest state, by design
When a node can't read something, it says so: the driver layer models unreadable state as known: false instead of guessing. Scanner reads are labeled by provenance — transmitted by the scanner or inferred — and /scans keeps rejected reads with the reason. The protocol is designed to be audited, not to look good.
Why it matters
An open contract outlives any vendor — including this one.
Restaurant hardware outlives companies. A node speaks a documented protocol on your own network, with nothing in the print path depending on the internet or a hosted service. If you can reproduce the contract from the docs and verify it with the conformance suite, you are never locked to us — and that is a deliberate design constraint, not a concession.
Source publication is on the engineering docket. In the meantime, the contract itself is the open surface: read the API guide, run the twin, and hold us to the 123 specs. The telemetry leg is inspectable the same way: point a node at your own server instead of ours, over the same open PUT /cloud contract — see the self-hosted telemetry guide.