printpapi v1.0.0
Self-hosted, open-source PrintNode alternative — first public release.
What's in the box
- HTTP print server — Python standard library only, no dependencies. REST API, SQLite job queue (WAL + visibility-timeout reaper), per-client API keys (SHA-256-hashed, revocable), web dashboard.
- Cross-platform agent — polls outbound (works behind NAT/firewalls, no inbound ports). Windows: win32print RAW + SumatraPDF for PDF. Linux: CUPS. Raw network printers via socket://host:9100.
- Documents and labels — raw jobs (ZPL/ESC-POS) go straight to the printer; PDFs are rendered first. Label printers are never sent a PDF by accident.
- 67 tests, real loopback HTTP + real SQLite, no mocks.
Getting started
See the README — server up in one command, agent in three steps.
printpapi-agent.zip below contains the agent script + an agent.ini template for machines where you don't want to clone the repo.
Known limitation
The Windows agent is not code-signed yet — on locked-down machines (Smart App Control/WDAC) run it via the signed Python interpreter (see docs/agent.md).