🏷️ 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
Metadata
Release files for labeljetty 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| labeljetty-0.6.0.tar.gz | 357.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| labeljetty-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 461.7 kB
Release files / labeljetty-0.6.0.tar.gz
| Download URL | labeljetty-0.6.0.tar.gz |
|---|---|
| Size | 357.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c7ffbaa316a7a239c236376d29705be82ff3fc2aa4e97315a2850865ed0087d5
|
|
BLAKE2b-256 checksum How to use checksums |
ee4c3aa91e75affbeb8e08184aaf410c38dbfa18f71dd58fe417a36e1862a91b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","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}
|
Release files / labeljetty-0.6.0-py3-none-any.whl
| Download URL | labeljetty-0.6.0-py3-none-any.whl |
|---|---|
| Size | 104.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
beeb717a2460f0d54eae00007a3beb33096abb86c3304177e2b4b6fd99e26c2b
|
|
BLAKE2b-256 checksum How to use checksums |
6bd5ef491161aa9e6cab085bc23f02c7dddcbc31c2358d85f84b2f59efa23131
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","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}
|