Catch a failed print before it wastes a spool.
One camera image is enough. PrintSheriff scores every frame and alerts you when a print turns into spaghetti.
The OctoPrint plugin is completely free and open source — no account, no subscription, no usage limit.
Watch a failure get caught
A webcam pointed at the bed is all it needs. Every frame gets a failure score.
Try the live demo →Sits in the panel you already use
Status and probability show up next to the webcam feed. Alerts only fire after several failed frames in a row, so a nozzle crossing the shot will not page you.
Push alerts go out through ntfy, so you hear about a failed print
wherever you are — with the offending frame attached.
See why it decided
A heatmap shows which pixels drove the score — handy for checking a false alarm. The model should light up the print, not the wall behind it.
Attention gallery →What sets it apart
Most hosted print-monitoring services stream your webcam frames to their servers and meter how many hours they watch. PrintSheriff is built the other way round.
Runs on the printer host
Inference is local TFLite on your Raspberry Pi. Frames never leave your network, detection keeps working when your internet is down, and there is no per-hour quota.
Small enough for a Pi Zero
A MobileNet backbone scores a frame in ~40 ms on a Pi 5 and ~480 ms on a Pi Zero 2 W — no GPU, no separate box, no noticeable load during a print.
Trained on messy real data
Tens of thousands of crowdsourced frames across many printers, camera angles, filament colours and lighting conditions — not one tidy rig in one room.
Free and inspectable
The plugin is open source with no account or subscription, and every prediction can return a heatmap so you can check what the model actually looked at.
Need it without a Pi? The same model is available as a hosted HTTP endpoint — see the API page. Full pipeline and ROC numbers are on the technical details page.
Upload a photo or use your webcam.
Open → APIOne POST, one score.
Docs → PluginLocal inference on the Pi.
Install → ContactFalse alarm or missed fail?
Write →Give every 3D printer a pair of eyes.
Run it on OctoPrint, or just call the API.