Your printers. No cloud. Your rules.
A provider-neutral, self-hosted command center for Bambu Lab, FlashForge LAN,
and Klipper/Moonraker printers.
Features β’ Screenshots β’ Quick Start β’ Fork Policy β’ Documentation β’ Fork Issues β’ Contributing
This repository is an independent, maintained fork of
maziggy/bambuddy. It is not an official
upstream release or a replacement for the upstream project.
The fork has three goals:
- Add first-class FlashForge LAN and Klipper/Moonraker printer support.
- Keep Bambu Lab behavior compatible with upstream while moving shared features toward provider-neutral interfaces.
- Regularly merge changes from upstream
mainso fixes and new Bambuddy features continue to flow into this fork.
Fork builds are published from this repository as
ghcr.io/noobydp/bambuddy:latest.
Use this repository's issue tracker
for FlashForge, Klipper, or fork-specific problems. See FORK.md for
the provider scope, support expectations, and upstream-sync policy.
This fork would not exist without the upstream project and its contributors. Please support upstream as well:
- Explore and star
maziggy/bambuddy, and use its documentation and discussions for shared Bambuddy features. - Contribute generally useful fixes upstream. If a problem or improvement also applies to an unmodified Bambuddy installation, consider reporting or contributing it to upstream. FlashForge, Klipper, and fork-specific provider work should be reported here.
- Support the upstream maintainer through GitHub Sponsors or Ko-fi.
- FlashForge LAN: confirmed against the Creator 5 Pro, including monitoring, camera, storage, upload/start, print controls, temperatures, lights, speed, thumbnails, and notifications. See the FlashForge capability notes.
- Klipper/Moonraker: capability-discovered monitoring and controls, cameras, files, macros, console, heaters, fans, motion/leveling controls, sensors, and toolchanger state. Initial live validation uses modern TinyT and Trident installations.
- Provider-neutral direction: new shared features should depend on reported capabilities rather than Bambu model checks, making future printer providers easier to add.
Print from anywhere in the world β Bambuddy's new Proxy Mode acts as a secure relay between your slicer and printer:
- π End-to-end TLS encryption β FTP, file transfer, and camera are transparently proxied with the printer's real TLS certificate
- π‘οΈ Optional Tailscale integration β per-VP toggle + Docker socket mount surface the host's Tailscale IP on the VP card, so you know which
100.x.x.xto paste into the slicer when you want a virtual printer reachable over your tailnet (setup). Bambuddy's self-signed CA import is still required on the slicer side: Bambu Studio / OrcaSlicer validate printer TLS against a bundled BBL CA (not the system trust store), and their Add Printer dialog is IP-only (no hostname to match an LE cert against), so a publicly-trusted cert can't help on either dimension. Tailscale's role is the private tunnel (reachability from anywhere, no port forwarding), not cert-import elimination. - π No cloud dependency β Direct connection through your own Bambuddy server
- π Uses printer's access code β No additional credentials needed
- β‘ Full-speed printing β Transparent TCP proxy, only MQTT is decrypted for IP rewriting
Perfect for remote print farms, traveling makers, or accessing your home printer from work.
π Setup Guide β
No desktop slicer required. Drop an STL or 3MF into Bambuddy's File Manager, hit Slice, and the result lands as a ready-to-print .gcode.3mf in the same folder β without ever opening Bambu Studio or Orca Slicer.
- π° One-click slicing β Slice from any browser. The job runs server-side in a tiny sidecar container, progress streams back as a toast, and the sliced file appears in your library when it's done.
- π± Slice from your phone or tablet β Bambuddy's PWA + the new server-side slicer means you can drop an STL in from mobile and queue a print without ever touching a desktop.
- π Bring your own profiles β Import a
Printer Preset Bundle(.bbscfg) exported from Bambu Studio: pick a curated printer + process + filament triplet from a dropdown in the Slice dialog, no more juggling JSON files. - π Re-slice for a different printer in one click β Open any sliced archive in Bambuddy and re-slice it for any printer, including across the single-nozzle β dual-nozzle (H2D / H2D Pro) boundary that BambuStudio's CLI would normally reject. Bambuddy detects the class change and auto-arranges objects laid out for the source bed (e.g. X1C 256Γ256) so they land safely on the target (e.g. H2D 350Γ320 with its per-nozzle dead zones).
- π± Slice all plates at once β Multi-plate projects (parted statues, multi-part kits) get a "Slice all N plates" toggle in the Slice dialog. One click produces a single
.gcode.3mfcontaining every plate's gcode, ready for the printer. The toast shows "Plate 2 of 5 β Generating G-code (47%)" as the loop runs. - π Same dispatch as the rest of Bambuddy β The sliced output flows into the existing queue / plate-picker / AMS-mapping path, so all the regular conveniences (multi-printer dispatch, AMS routing, scheduled prints) just work.
Optional but recommended β drop the slicer-api/ Compose stack next to your Bambuddy install and the Slice button lights up everywhere.
π Slicer Integration Guide β
Stop re-picking the same printer + process + filament + bed-type combination every slice. Save a Slicer Pipeline once from the Slice dialog, then apply the whole bundle to any file with a single click β from File Manager, Archives, or MakerWorld imports.
- π§© One-click reuse β A pipeline captures the entire Slice modal selection (printer + process + per-AMS-slot filaments + bed type) and surfaces as Run with pipeline β <name> on every sliceable row.
- π― Specific printer or printer class β Pin a pipeline to one printer, or to a class (e.g. any X1C) and let the queue scheduler pick the first available match. Identical-fleet farms get a single recipe instead of one-per-printer.
- πͺ’ Multi-copy fanout β Slice once, dispatch up to N copies. With class targeting the copies fan out across the matching printers in parallel β Spread (fastest wall-clock), Single printer (minimise colour-change overhead), or First N (one to each).
- π Runs dashboard β A new Pipelines tab on the Print Queue page lists every run with colour-coded status badges (queued / slicing / dispatching / in-progress / completed / partial-failure / failed / cancelled), per-copy detail on expand, filter dropdowns (Pipeline / Status / Target), and a Retry failed button that re-runs only the copies that didn't complete β successful copies are never re-printed.
- π Permission-gated β Three permissions (
pipelines:read/pipelines:write/pipelines:run) let you split authoring the recipe from spending filament with it.
π Slicer Pipelines Guide β
- Own your data β All print history stored locally, no cloud dependency
- Works offline β Uses Developer Mode for direct printer control via local network
- Full automation β Schedule prints, auto power-off, get notified when done
- Multi-printer support β Manage your entire print farm from one interface
Bambuddy includes experimental FlashForge LAN support for confirmed compatible models such as the Creator 5 Pro. It supports monitoring, camera snapshots/streaming, upload/start, pause/resume/stop, heater targets, chamber light, print speed, file listing, thumbnails, and notifications. Some Bambu-only controls are intentionally hidden when the FlashForge LAN API does not expose an equivalent command. See docs/flashforge-local-api.md for the current feature matrix and capability contract.
|
|
Plus: Configurable slicer (Bambu Studio / OrcaSlicer) β’ Customizable themes (style, background, accent) β’ Mobile responsive β’ Keyboard shortcuts β’ Multi-language (EN/DE/JA/IT) β’ Auto updates β’ Database backup/restore β’ System info dashboard
Refreshed printer card in 1.2.5b2 β tighter layout, popovers for all controls (temperature setpoints, fan speeds, jog), and a bottom-aligned power row. The screenshots below predate the refresh.
Click to expand screenshots
Real-time printer monitoring with AMS status
Print archive with 3D preview and project assignment
Re-print with AMS filament mapping preview
Built-in timelapse editor with trim, speed, and music
Group related prints into projects
Project detail view with assigned archives
Project timeline and print history
Print scheduling and queue management
Schedule prints for specific date and time
Customizable statistics dashboard
Maintenance tracking per printer
Configure maintenance types and intervals
Pressure advance (K-factor) profiles
Edit K-factor profile settings
General configuration and integrations
Smart plug control and energy monitoring
Multi-provider notification system
API keys and webhook endpoints
Virtual printer appears in Bambu Studio/Orca Slicer
- Docker on a Linux AMD64 host is recommended for the published fork image.
- The Bambuddy host must be able to reach the printer on the local network.
- Bambu Lab: Developer Mode, access code, serial number, and LAN connectivity.
- FlashForge: supported LAN mode and the printer's LAN credentials.
- Klipper: reachable Moonraker endpoint (normally port
7125) and an API key only when the Moonraker configuration requires one. - Python 3.10+ and Node.js are needed only when running directly from source.
This fork does not currently publish a signed Windows installer release. Docker Desktop or a source installation from this repository will include the FlashForge and Klipper changes. The installer downloadable from upstream installs upstream Bambuddy and does not provide this fork's additions.
Option A: Pre-built fork image (recommended)
mkdir bambuddy && cd bambuddy
curl -O https://raw.githubusercontent.com/noobydp/bambuddy/main/docker-compose.yml
docker compose up -dOption B: Build from source
git clone https://github.com/noobydp/bambuddy.git
cd bambuddy
docker compose up -d --buildOpen http://localhost:8000 in your browser.
Published architecture: The fork's pre-built image currently targets
linux/amd64, including typical Unraid servers. Other architectures can build the repository from source.
macOS/Windows users: Docker Desktop doesn't support
network_mode: host. Edit docker-compose.yml: comment outnetwork_mode: hostand uncomment theports:section. Printer discovery won't work - add printers manually by IP.
Linux users: If you get "permission denied" errors, either prefix commands with
sudo(e.g.,sudo docker compose up -d) or add your user to the docker group.
Docker Configuration & Commands
Environment Variables:
| Variable | Default | Description |
|---|---|---|
TZ |
UTC |
Your timezone (e.g., America/New_York, Europe/Berlin) |
PORT |
8000 |
Port BamBuddy runs on (with host networking mode) |
DEBUG |
false |
Enable debug logging |
LOG_LEVEL |
INFO |
Log level: DEBUG, INFO, WARNING, ERROR |
Data Persistence:
| Volume | Purpose |
|---|---|
bambuddy.db |
SQLite database with all your print data (not used with PostgreSQL) |
archive/ |
Archived 3MF files and thumbnails |
logs/ |
Application logs |
Updating:
# Pre-built image: just pull the latest
docker compose pull && docker compose up -d
# From source: rebuild after pulling changes
cd bambuddy && git pull && docker compose up -d --buildFork image tags:
# Recommended combined build
docker pull ghcr.io/noobydp/bambuddy:latest
# Compatibility aliases currently point to the same combined build
docker pull ghcr.io/noobydp/bambuddy:flashforge-creator5pro
docker pull ghcr.io/noobydp/bambuddy:klipper-moonrakerThe image is rebuilt from main after each accepted change. latest is the
canonical tag for installations that should receive all fork features.
Useful Commands:
# View logs
docker compose logs -f
# Stop/Start
docker compose down
docker compose up -d
# Shell access
docker compose exec bambuddy /bin/bashCustom Port:
ports:
- "3000:8000" # Access on port 3000Reverse Proxy (Nginx):
server {
listen 443 ssl http2;
server_name bambuddy.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400;
}
}Note: WebSocket support is required for real-time printer updates.
Network Mode Host (required for printer discovery and camera streaming):
services:
bambuddy:
build: .
network_mode: hostNote: Docker's default bridge networking cannot receive SSDP multicast packets for automatic printer discovery. When using
network_mode: host, Bambuddy auto-detects your network subnet and can discover printers via subnet scanning in the Add Printer dialog.
# Clone and setup
git clone https://github.com/noobydp/bambuddy.git
cd bambuddy
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Run (--loop asyncio avoids a uvloop TLS bug that can truncate VP FTP uploads)
uvicorn backend.app.main:app --host 0.0.0.0 --port 8000 --loop asyncioOpen http://localhost:8000 and add your printer!
Need detailed instructions? See the Installation Guide
Run from PowerShell with Docker Desktop already installed:
powershell -ExecutionPolicy Bypass -Command "iwr -useb https://raw.githubusercontent.com/noobydp/bambuddy/main/install/docker-install.ps1 -OutFile docker-install.ps1; .\docker-install.ps1"The helper downloads this fork's Compose configuration, switches it from host networking to Windows-compatible port mappings, and starts Bambuddy. Printer discovery is unavailable through Docker Desktop, so add printers manually by IP address.
Developer Mode allows third-party software like Bambuddy to control your printer over the local network.
- On printer: Settings β Network β LAN Only Mode β Enable
- Enable Developer Mode (appears after LAN Only Mode is enabled)
- Note the Access Code displayed
- Find IP address in network settings
- Find Serial Number in device info
Note: Developer Mode disables cloud features but provides full local control. Standard LAN Mode (without Developer Mode) only allows read-only monitoring.
In Bambu Studio or OrcaSlicer, enable "Store sent files on external storage" so that print files (3MF) are saved to the printer's SD card. Bambuddy needs these files to extract thumbnails and 3D model previews.
- Open Bambu Studio or OrcaSlicer
- Go to the Device tab for your printer
- In Print Options, enable Store Sent Files on External Storage
The upstream documentation at wiki.bambuddy.cool remains the best reference for shared Bambuddy features:
- Installation β Shared installation concepts
- Getting Started β Core Bambuddy setup
- Features β Detailed upstream feature guides
- Troubleshooting β Common issues
- API Reference β REST API documentation
Fork-specific documentation lives in this repository:
- Fork goals and upstream relationship
- FlashForge LAN capability notes
- Updating this fork
- Server-side slicer
| Provider | Confirmed or inherited coverage | Connection | Status |
|---|---|---|---|
| Bambu Lab | X1/X2, H2, P1/P2, A1/A2 families inherited from upstream | Developer Mode over LAN | Upstream-compatible |
| FlashForge | Creator 5 Pro confirmed; other compatible LAN models require testing | FlashForge LAN API | Experimental |
| Klipper / Moonraker | Modern TinyT and Trident installations confirmed; other Moonraker printers are capability-discovered | Moonraker HTTP/WebSocket, normally port 7125 | Experimental |
Experimental means the provider is usable and tested on the listed hardware, but it has less model coverage than the inherited Bambu integration. Please include the exact printer, firmware/Klipper version, and diagnostics when reporting additional model results.
| Component | Technology |
|---|---|
| Backend | Python, FastAPI, SQLAlchemy |
| Frontend | React, TypeScript, Tailwind CSS |
| Database | SQLite (default) or PostgreSQL |
| 3D Viewer | Three.js |
| Communication | MQTT (TLS), FTPS |
Contributions to the fork are welcome, particularly provider-neutral changes, FlashForge model validation, and Klipper/Moonraker capability coverage.
- π Document β Improve fork-specific guides and capability notes
- Test β Report issues with your printer model
- Translate β Add new languages
- Code β Submit PRs for bugs or features
Open a fork issue before a substantial change so provider scope and upstream compatibility can be discussed. See CONTRIBUTING.md for guidelines.
AGPL-3.0 License β see LICENSE for details.
- maziggy/bambuddy and its contributors for the upstream project this fork builds upon
- SpoolEase by yanshay β early inspiration for NFC-based spool tracking and AMS inventory concepts
- Bambu Lab for amazing printers
- The reverse engineering community for protocol documentation
- All testers and contributors
Made with β€οΈ for the 3D printing community
Upstream Project β’
Report Fork Bug β’
Request Fork Feature β’
Upstream Documentation







