Why We Built This
MakerBot ended support for MakerBot Print and MakerBot Desktop on the Replicator+, leaving owners of an otherwise perfectly good printer without a way to slice models, send them over the network, or manage the printer's Wi-Fi. Rather than let good hardware end up in a landfill, we built OpenBot: a free, open-source replacement that does everything the original software did — and adds support for the popular Creality Ender-3 family alongside it.
OpenBot is real, released software, not a demo. It's downloadable today for macOS and Raspberry Pi, and licensed under the GPL so anyone can use it, audit it, or build on it. See the project page for a closer look at the app, or the GitHub repository for source and releases.
What It Does
OpenBot slices models, sends them to the printer, watches the print with a live camera feed, and manages the printer's network settings. It drives two very different printer families through two very different connections:
| MakerBot Replicator+ | Creality Ender-3 family | |
|---|---|---|
| Slicing | STL/OBJ → .makerbot, via the bundled OrcaSlicer engine |
STL/OBJ → G-code, using Creality's own OrcaSlicer profiles |
| Build plate | Multiple objects: drag in 3D, rotate, scale, duplicate, auto-arrange | |
| Connection | Network — encrypted, pinned certificate, one-time knob-press pairing | USB — Marlin firmware, checksummed lines with automatic resend |
| Printing | Upload & print, pause / resume / cancel | Print over USB, or save to an SD card (FAT32 check, safe names, eject) |
| Camera | Live view, snapshots, a photo of every finished print | — |
| Printer settings | Wi-Fi scan / join / forget, static IP or DHCP, rename | G-code console, preheat, home, emergency stop |
| Safety | Build-volume and temperature checks on every file | PTFE-safe temperature limit for the stock hotend (240°C) |
Server Mode — Sharing a Printer
A single Mac, or a Raspberry Pi sitting next to the printer, can share it with every other Mac on the network:
- Who can print — devices join with a 6-digit pairing code and get a role: Viewer, Operator, or Admin.
- Shared queue — jobs start only after someone confirms the build plate is clear.
- Web page — every server also serves a page at
https://<server>:8765/, so phones and tablets can watch the camera, manage the queue, and approve new devices without installing anything.
How It's Built
OpenBot is a Python application, distributed as a native macOS app (a universal2 DMG that runs on Apple Silicon and Intel, signed and notarized) and as a Debian package for Raspberry Pi OS. Both share the same core and a bundled OrcaSlicer engine for slicing.
MakerBot never published its network protocol, so connecting to the Replicator+ meant reverse-engineering it from scratch — the pairing handshake, the certificate pinning, and the file-transfer format are all documented in the repo's design notes. The Ender-3 side talks to Marlin firmware directly over USB, with checksummed lines and automatic resend so a dropped byte doesn't ruin a print. Every print, on either printer, passes a build-volume and temperature check first, and the Ender-3 path enforces a PTFE-safe temperature ceiling for printers with the stock hotend.
The whole thing is covered by a 95-plus test suite run with pytest, and both the desktop
app (openbot-app) and a scriptable command-line tool (openbot)
are built from the same codebase.
For the full story of that reverse-engineering work — reading the printer's own firmware source, cross-checking three independent open-source client projects, and verifying every call against a real Replicator+ before trusting it — see how we reverse-engineered MakerBot's undocumented protocol.
License & Support
OpenBot is licensed under the GNU GPL v3.0-or-later — free to download, use, and modify. If it saved a printer from the landfill, the project suggests a one-time $20 donation to support continued development, but it's entirely optional.
OpenBot is not affiliated with or endorsed by MakerBot, UltiMaker, Stratasys, or Creality. Those names are trademarks of their owners, used here only to say which printers OpenBot works with.