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.