OctoPrint
The original web interface for 3D printers. It doesn't replace your printer's firmware — it talks to it over USB, adding remote control, monitoring, a webcam and a vast plugin ecosystem to any machine that already speaks G-code.
If you want to run and watch a printer from your browser without touching its firmware, OctoPrint is the answer — and it is the safe choice when your board can't run Klipper. It leaves stock firmware in place and drives the printer over USB, so you keep standalone SD printing and gain a web UI, a webcam, timelapses and plugins. The honest trade: OctoPrint sends G-code rather than planning motion, so the speed and quality wins of Klipper's input shaping live in the firmware, not here.
What it is
OctoPrint is a Python application — created by Gina Häußge and developed in the open since 2012 — that you run on a small always-on computer next to your printer, almost always a Raspberry Pi. It connects to the printer's controller over a USB serial link and speaks ordinary G-code to whatever firmware is already on the board, typically Marlin. On top of that connection it gives you a browser dashboard: upload and start prints, jog axes, set temperatures, watch a webcam, record timelapses, and read a live G-code terminal.
Crucially, OctoPrint is additive. It does not flash or change your firmware, so the printer's own screen and SD-card slot keep working exactly as before — OctoPrint simply adds a networked control layer beside them. Its defining feature is the plugin ecosystem, the deepest in the hobby, which extends it from bed-levelling visualisers to failure detection to remote access.
Where it wins
- No firmware flash — board-agnostic. If your printer speaks G-code over USB, OctoPrint drives it. That includes boards Klipper can't, which we learned the hard way on a GD32-based Ender 3 V2 — the full story is in We "bricked" an Ender 3 V2.
- The plugin ecosystem. Hundreds of community plugins — Obico failure detection, bed-mesh visualisers, filament tracking, OctoEverywhere remote access, custom controls. Most needs are a plugin away.
- You keep standalone printing. The printer's LCD and SD card still work; OctoPrint is an extra path, not a replacement. Print from the couch or from the front panel.
- Webcam, timelapse and remote eyes. Watch the first layer from another room, get a timelapse of every print, and check in remotely — the original reason most people install it.
- Mature and stable. Over a decade of development, an enormous community, and documentation that assumes you are a person, not a support ticket.
Where it still hurts
- It is a G-code sender, not a motion planner. Input shaping, pressure advance and the high-speed gains belong to the firmware. OctoPrint will not make a printer faster or smoother — for that you want Klipper, if your board can run it.
- USB serial is the weak link. Opening the connection can reset the board (the DTR quirk), so you connect between prints, not during. A busy or underpowered host streaming to a very fast printer can starve the serial buffer and cause stutter or blobs — give it a capable Pi.
- One printer per instance. Running several machines means several OctoPrint instances; there is no native multi-printer dashboard.
- Not built for the speed crowd. If chasing maximum throughput and ringing-free corners is the goal, OctoPrint is the wrong layer to optimise.
The AI angle
OctoPrint hosts one of the most useful pieces of applied ML in the hobby: Obico (formerly The Spaghetti Detective), an open-source plugin that watches the webcam and uses a computer-vision model to spot a failing print — the tell-tale "spaghetti" of a detached part — and can pause the printer or alert you before it wastes a spool. It is genuine, deployed AI doing a job a human otherwise has to babysit.
Architecturally, OctoPrint is also a natural fit for agent control: a documented REST API and event system sit over a simple G-code-over-serial link, so an agent can start prints, read live state, and react to events without any special integration. The same property that makes it board-agnostic — plain G-code in, structured status out — makes it scriptable.
Start here
- Flash the OctoPi image with Raspberry Pi Imager (under "Other specific-purpose OS"), or
pip installOctoPrint into a virtualenv on any existing Pi or Linux box. - Connect at your printer's baud rate — 115200 for a stock Ender 3 V2 running Marlin.
- Add the Obico plugin for AI failure detection, and a webcam for monitoring and timelapses.
- See it in a real build: our ender-pi project runs OctoPrint on a Pi 4 driving an Ender 3 V2 — after a GD32 board ruled out Klipper.
- Project home: octoprint.org · source: github.com/OctoPrint/OctoPrint.