When manufacturers drop driver support for perfectly good hardware, the usual fix is setting up a dedicated Linux box as a print server. Printervention skips all of that and puts the entire print server inside a Chrome tab.
You plug in an unsupported printer (like the Canon SELPHY photo printers), open the site, and print. No installs. Here’s what’s going on under the hood:
The browser connects to the printer over WebUSB, then boots v86, an x86 emulator written in JavaScript that compiles machine code to WebAssembly at runtime. Inside that emulator, it runs Alpine Linux with CUPS and Gutenprint drivers. The correct driver gets matched to your printer model using trigram search.
The really clever part is how the emulated Linux and the browser actually talk to the printer. USB/IP on the Linux side packages USB data into TCP packets. On the JavaScript side, tcpip.js (lwIP compiled to WebAssembly) turns the raw Ethernet frames from v86’s emulated network card back into TCP/IP. This makes the bridge bidirectional, so CUPS can report paper jams, ink levels, and print progress back to the browser.
The project was built by George MacKerron using Claude Code. He’s also working on a companion scanning app using SANE at yes-we-scan.app.