Introduction
Understand the boundary between the OPPA desktop agent and the OpenPrinter integration ecosystem.
OPPA and OpenPrinter connect a remote application to printers that are reachable only from a user's local machine or network.
OPPA is the Open Printer Proxy Agent. It is a lightweight Tauri desktop application backed by a shell-independent Rust agent. It discovers and authenticates with a validated OpenPrinter service selected in runtime settings, discovers local printers, receives jobs, writes them to SQLite, renders their structured documents, submits them to a concrete printer transport, and reports the resulting state.
OpenPrinter is the generic integration layer.
@openprinter/protocol publishes the canonical TypeScript schemas and
codecs. @openprinter/server runs validated protocol sessions over
host-owned transports. The integrating application owns HTTP,
WebSocket or broker lifecycle, pairing authorization, durable public
credential storage, and connection routing; the SDK verifies the
initial gateway challenge. Neither package contains restaurant,
tenant, station, billing, or application-specific routing concepts.
The important invariant
OPPA never acknowledges receipt of a print job until the job is durably stored locally:
receive → validate → persist → acknowledge → render → submit → persist result → reportThe word submitted means that a printer backend accepted the job. It does not universally mean that paper was physically produced, because most printer interfaces cannot prove that.
Where to begin
- Follow Getting Started to run the example with a virtual printer.
- Read Architecture before adding an infrastructure boundary.
- Use Server SDK and Node.js Integration when integrating an existing application.
- Review Security before exposing an agent gateway.
The repository is intentionally conservative: it provides the foundation and explicit extension points without embedding a hosted queue, a business dashboard, arbitrary plugin execution, or a generic remote-control channel.