An AI coding agent does not read your documentation. It retrieves two or three pages and writes code from them. Nine rules for being the page it retrieves, an honest look at whether llms.txt is worth an afternoon, and what we have not done yet.
Labels, text messages, payments, and robot moves all share one contract. Ten things the request and the state model need when the side effect cannot be rolled back, and the two where our own API does not yet pass.
Self-hosting a print server is the right answer for a lot of teams, and the software is the cheap part. The expensive parts are signing and shipping a desktop agent, reconciling jobs nobody can observe, and being on call when a pack bench stops printing.
Four printer lock-in fights reached the Hacker News front page in eighteen months. All of them were about the driver or the consumable. Documented command languages sit underneath both, and are the closest thing to a portable layer, with limits worth knowing.
An agent on a warehouse or shop PC cannot update like a consumer app. Six rules for checking quietly, never installing mid-job, reconnecting deterministically, and what we got wrong in Station 1.0.5 and fixed in 1.0.6.
Push is nicer and polling is necessary. Rules for signing, retrying, and replaying webhooks, rules for backoff and filters when polling, and the hybrid that treats a webhook as a hint and the poll as the truth.
ESC/POS is a stream of bytes, not a document format. Six commands cover most receipts, code pages replace UTF-8, and anything fancy gets rendered to a bitmap. With a complete Node example.
Cloudflare, AWS, and every print API you depend on will have an outage. Four questions to answer before it happens, and the queue, fallback, and reconciliation patterns that answer them.
A developer turned an e-ink reader into a printer that macOS discovers on its own, with no driver. The stack that makes that work is three things, and it explains why raw label printing is a different problem.
A tool that reads a database can be called twice with no harm. A tool that prints a shipping label cannot. The contract for a physical tool needs identity, a dry run, scoping, and an honest return value, and none of that lives in the model.
On Syntax episode 822, Wes Bos walks through a hack-week project that prints Sentry alerts on an 80 mm thermal printer from Node. The connect-and-print part is thirty or forty lines. The two problems he ran into, one socket and one flood of paper, are the seed of every production printing problem.
Thermal printers keep reaching the Hacker News front page because physical output is the cheapest feedback loop you can build. Here is the shape every one of those projects shares, and the three things that change when the printing becomes operational.
You cannot get exactly-once delivery, and a printer cannot join your database transaction. The fix is a deterministic key and a ledger at every boundary that can repeat, plus a real state for outcomes you never learn.
Windows is moving to its built-in IPP class driver, and Protected Print mode actively removes third-party drivers. Raw ZPL and ESC/POS workflows need a plan that does not assume a vendor driver will be installable.
Reaching into a private network is a solved problem when the private side dials out. The tunnel is the easy part. The work is in the control plane: device identity, routing, queueing, liveness, and reconnects that do not duplicate work.
Once your product drives a device in a customer's building, tenancy stops being a database concern. Ten things to model in your data, your credentials, and your support console before the first install.
The 2024 CUPS chain and the 2025 follow-ups all start the same way: something on the print host listens to the network and believes what it hears. A threat model and a hardening list for that machine.
If your system prints, ships, pays, or moves something, success and failure are not enough. Name every state after the observation that produced it, and give "we do not know" a real policy.
Agentic commerce protocols are changing how orders arrive, not what happens after. The parcel still needs a pick, a pack, and a label, and that label path now needs identity, expiry, and a record an agent can read.
ZPL is a small language you can learn in an afternoon. Most label bugs are not language bugs. They are DPI and origin arithmetic. Here is the anatomy, a complete 4x6 shipping label, and the bugs you will hit first.
Metering calls or resources is easy to count and easy to resent. Billing on the outcome the customer wanted is harder to define, costs the vendor money on every failure, and is the only model that survives a retry.
Compare systems with the same labels and printers without creating duplicates, breaking production routing, or turning the pilot into a subjective demo.
A practical set of questions that expose durability, retry behavior, network posture, format fidelity, tenant isolation, supportability, and product maturity.
Follow one label from backend to station and examine credentials, tenant isolation, network posture, stored content, and the controls that are not shipped yet.