The simulator
Test receipt printing without a printer.
The ProxyNodes digital twin is not a mock library — it's a network service your software can't tell from real hardware. Same HTTP API, same raw :9100 port, same DLE EOT status replies, same telemetry stream. Point your POS at it and find out what happens when the paper runs out.
Why it exists
Printers are the worst test dependency in POS software.
You can't run a thermal printer in CI. So printing gets tested by hand, on one office printer, on the happy path — and the failure modes ship to production.
The failure paths are the product
Paper out mid-ticket, cover open, drawer stuck, printer offline. Customers hit these daily; test suites almost never do.
Existing emulators stop at bytes
The GitHub ESC/POS emulators render receipts, but none answer DLE EOT status queries or inject faults over the network — so your status handling goes untested.
A twin, not a mock
Because the twin speaks the real wire protocols on a real socket, the code you test is the code you ship — HTTP client, :9100 stream, status polling, all of it.
What it does
A bad day at the restaurant, on demand.
Start the twin, drive it like a node, then break things from the REPL and watch your software cope — or not.
Drive it
$ pnpm sim node-sim: HTTP :8080 · raw :9100 · mDNS _proxynode._tcp $ pnpm discover # find it like a real node $ pnpm print # receipt renders in the console $ pnpm watch # live telemetry over SSE $ pnpm conformance # full protocol conformance suite
Break it
sim> paper out # POS should surface a real error sim> cover open sim> offline # what does your retry logic do? sim> drawer # drawer state flips in /status sim> weight 1.25 # virtual scale sim> scan 012345 # virtual barcode scanner
And prove it
The conformance suite runs identically against the twin and a physical node. Protocol checks are unconditional; physical-effect checks skip with a printed reason when hardware isn't attached — never a silent pass. If your integration passes against the twin, the same command verifies it against the real device on your bench: pnpm conformance 192.168.1.42.
Availability
Free, and source-open at launch.
The twin, the protocol schemas, and the conformance suite are part of the open core — free to run in CI, free to build against. The repository opens with the pilot phase; the waitlist gets access first.