Network-accessible printing for USB TSPL thermal label printers (library + REST API + web UI).
Project description
🏷️ LabelJetty
Turn a cheap, USB-only TSPL thermal label printer into a smart, network-accessible label printer - drive it from your phone, desktop, or another machine over your LAN. It talks to the printer directly over USB (no CUPS, no vendor driver) and gives you a mobile-first web UI, a REST API, and a Python library for printing PNGs, PDFs, text, markdown, barcodes and QR codes. Optional, self-contained Homebox integration is built in.
Install
pip install labeljetty
# or, with uv:
uv tool install labeljetty
This gives you three commands:
labeljetty- runs the service (REST API + web UI + background print worker)labeljetty-testbench- drives the printer library directly (real device or dry-run)labeljetty-hash-password- generates a password hash for a login user
You need Python 3.11+, libusb, and a USB TSPL printer. PRINTER_USB auto-detects a
single connected printer; pin one (e.g. PRINTER_USB=vid:2d37:pid:62de, found via lsusb) in a
.env or the environment if you have several. Then run labeljetty and open
http://localhost:8888/. The
Setup guide is the overview;
finding the printer and the udev rule
are covered under Advanced usage.
Prefer Docker? The image is
motey/labeljetty.
Heads-up
- No authentication by default - fine on a trusted home LAN, but turn on
AUTH_MODE=protectedbefore exposing it to an untrusted network. - Reference hardware is a Vretti 420B (Poskey-class TSPL, ~203 dpi). It should work with any USB TSPL printer; feedback/PRs for other models are welcome.
More information
Full docs, the configuration reference, authentication, the REST API, printer/udev setup, and Homebox integration live on GitHub: https://github.com/motey/LabelJetty
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file labeljetty-0.4.0.tar.gz.
File metadata
- Download URL: labeljetty-0.4.0.tar.gz
- Upload date:
- Size: 329.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1758df3fe20ba15c267908f1e0e5bee20445ce24b7054ae526f03eaddafb86a
|
|
| MD5 |
910707acf0ff841233a933b7a3e751ad
|
|
| BLAKE2b-256 |
9b5f8e74bb726c3dd39013a104fbcdb2999126b86da9ab2937bc526b7656fe30
|
File details
Details for the file labeljetty-0.4.0-py3-none-any.whl.
File metadata
- Download URL: labeljetty-0.4.0-py3-none-any.whl
- Upload date:
- Size: 101.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de4208e06b229c7494b9c326b7652d263f57ff20021665320bf8eed7f3b15981
|
|
| MD5 |
630aca0977575f61e56f3af7576b3650
|
|
| BLAKE2b-256 |
9cb30272a0abdec1536e7c8995cb80babe110f6acec3bd7a2416c38d6f4ec38e
|