< all projects

orrn-spool

Print spool for TSC thermal label printers. Takes a JSON label schema, writes TSPL2, and sends it over raw TCP on port 9100.

status
Open source
role
Builder
when
2026
kind
Print automation
the TSPL2 that prints this label
SIZE 101.6 mm, 50.8 mm
GAP 3 mm, 0 mm
DIRECTION 1
CLS
TEXT 32,28,"4",0,1,1,"orrn-spool"
TEXT 32,92,"2",0,1,1,"Print automation"
TEXT 32,124,"2",0,1,1,"2026"
BARCODE 32,196,"128",120,0,0,1,2,"https://ansh.bhalala.org/projects/orrn-spool"
PRINT 1,1

orrn-spool is the piece of ORRN that touches paper. It sits on a machine inside the plant and drives TSC thermal label printers.

How it works

  • Talks to printers over raw TCP on port 9100 and polls their status.
  • Turns a JSON label schema, with variables, into TSPL2.
  • Lets you describe a label in plain English. Gemini drafts the layout, and the spool compiles it to TSPL2.
  • Runs jobs from a priority queue with retries, fires webhooks on success or failure, and archives finished jobs encrypted with a passphrase.
  • Has an HTMX web UI for printers, templates, and test prints.

It's written in Go with Gin and SQLite, and it ships as a Docker image.

Why it exists

Browsers can't print to a thermal printer reliably, and a plant floor won't wait for a driver dialog. A small, boring local service that owns the printer is easier to trust.

Built with

  • Go
  • Gin
  • HTMX
  • SQLite
  • Docker
  • TSPL2
  • Gemini