Documentation
Print generated content to receipt and label printers.
Slipbridge is a local CLI for agents, scripts, and terminal workflows. It accepts Markdown, text, images, and JSON templates, renders them into printer-ready output, and sends them to thermal receipt printers or Brother label printers.
Quickstart
Install from the repository, check the local environment, find a printer, and print a Markdown file.
git clone https://github.com/slipbridge/slipbridge
cd slipbridge
cargo install --path . --force
slipbridge doctor --json
slipbridge printers list --json
slipbridge print ./ticket.md \
--printer tcp://epson-m30:9100 \
--paper 80mm \
--json
Use --printer with a discovered printer id, a cups://
destination, a tcp:// endpoint, or a usb:// selector.
Print content
Slipbridge can print files directly or render them first. Use render when
you want to preview the PNG that will be sent to the printer.
slipbridge print ./receipt.png --type image \
--printer tcp://epson-m30:9100 --paper 80mm
slipbridge print ./ticket.md --type markdown \
--printer tcp://epson-m30:9100 --paper 80mm
slipbridge print ./note.txt --type text \
--printer tcp://epson-m30:9100 --paper 80mm
slipbridge render ./ticket.md \
--output preview.png --media c62 --label-length-mm 100
Templates
Templates use Handlebars syntax. Pass a JSON input file with --template
to render structured data before printing.
slipbridge print ./badge-data.json \
--template ./badge.hbs \
--printer cups://Brother_QL_810W \
--media c62 \
--label-length-mm 100 \
--landscape
{
"name": "Avery",
"subtitle": "Pickup shelf 4"
}
# {{name}}
{{subtitle}}
Connect printers
Start with discovery, then inspect the selected printer when you need to see resolved driver behavior and capabilities.
Receipt printers over TCP
tcp://epson-m30:9100
Raw socket endpoints used by many ESC/POS receipt printers.
USB receipt printers
usb://04b8:0e15
USB vendor and product id, with optional bus and address.
Brother labels through CUPS
cups://Brother_QL_810W
CUPS destinations for Brother QL label workflows on macOS and Linux.
slipbridge printers list --json
slipbridge printers inspect \
--printer cups://Brother_QL_810W \
--json
slipbridge printers test \
--printer tcp://epson-m30:9100 \
--json
Automation
Add --json when another process needs to read results. Use the
structured fields instead of parsing human output.
slipbridge print ./ticket.md \
--printer tcp://epson-m30:9100 \
--paper 80mm \
--json
ok
Whether the command completed successfully.
printer.id
The resolved printer target used for the command.
driver.resolved
The selected driver, such as escpos or cups.
Queueing
Queueing is useful when more than one process may print to the same device. Slipbridge writes a job to disk, then a worker sends queued jobs while holding a per-printer lock.
slipbridge print ./badge.png \
--printer cups://Brother_QL_810W \
--enqueue \
--json
slipbridge jobs list --json
slipbridge jobs inspect --job <job-id> --json
slipbridge jobs cancel --job <job-id> --json
slipbridge jobs run --once --json
Queue state lives in the platform data directory by default. Set
SLIPBRIDGE_STATE_DIR when you want an isolated queue for tests or
development.
Printer defaults
Defaults keep repeated commands short. They are stored locally in
printers.toml, so a script or agent can use the same settings as a human
operator.
slipbridge printers defaults set \
--printer cups://Brother_QL_810W \
--driver cups \
--media c62 \
--cut-mode end-of-page
slipbridge printers defaults show \
--printer cups://Brother_QL_810W \
--json
Troubleshooting
Start with diagnostics
Run slipbridge doctor --json to check local USB access and the
rendering pipeline.
Discovery shows the wrong printer
Use an explicit cups://, tcp://, or
usb:// selector instead of relying on a display name.
Labels are clipped
Set --media c62, add --label-length-mm, and use
slipbridge render to inspect the output before printing.