Bambuddy
A self-hosted print archive and management system for Bambu Lab 3D printers
Install / Use
/learn @maziggy/BambuddyREADME
<p align="center">
<img src="static/img/bambuddy_logo_dark.png" alt="Bambuddy Logo" width="300">
</p>
<h1 align="center">Bambuddy</h1>
<p align="center">
<strong>Self-hosted print archive and management system for Bambu Lab 3D printers</strong>
</p>
<p align="center">
<a href="https://github.com/maziggy/bambuddy/releases"><img src="https://img.shields.io/github/v/release/maziggy/bambuddy?style=flat-square&color=blue" alt="Release"></a>
<img src="https://github.com/maziggy/bambuddy/actions/workflows/ci.yml/badge.svg?branch=main">
<img src="https://github.com/maziggy/bambuddy/actions/workflows/github-code-scanning/codeql/badge.svg">
<img src="https://github.com/maziggy/bambuddy/actions/workflows/security.yml/badge.svg">
<a href="https://github.com/maziggy/bambuddy/blob/main/LICENSE"><img src="https://img.shields.io/github/license/maziggy/bambuddy?style=flat-square" alt="License"></a>
<a href="https://github.com/maziggy/bambuddy/stargazers"><img src="https://img.shields.io/github/stars/maziggy/bambuddy?style=flat-square" alt="Stars"></a>
<a href="https://github.com/maziggy/bambuddy/issues"><img src="https://img.shields.io/github/issues/maziggy/bambuddy?style=flat-square" alt="Issues"></a>
<a href="https://discord.gg/aFS3ZfScHM"><img src="https://img.shields.io/discord/1461241694715645994?style=flat-square&logo=discord&logoColor=white&label=Discord&color=5865F2" alt="Discord"></a>
<a href="https://ko-fi.com/maziggy"><img src="https://img.shields.io/badge/Ko--fi-Support-ff5e5b?style=flat-square&logo=ko-fi&logoColor=white" alt="Ko-fi" target=_blank></a>
</p>
<p align="center">
<a href="#-features">Features</a> •
<a href="#-screenshots">Screenshots</a> •
<a href="#-quick-start">Quick Start</a> •
<a href="http://wiki.bambuddy.cool">Documentation</a> •
<a href="https://discord.gg/aFS3ZfScHM">Discord</a> •
<a href="#-contributing">Contributing</a>
</p>
🌐 NEW: Remote Printing with Proxy Mode
<p align="center"> <img src="docs/images/proxy-mode-diagram.png" alt="Proxy Mode Architecture" width="800"> </p>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
- 🛡️ VPN recommended — Use Tailscale/WireGuard for full data encryption (details)
- 🌍 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.
Why Bambuddy?
- 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
✨ Features
<table> <tr> <td width="50%" valign="top">📦 Print Archive
- Automatic 3MF archiving with metadata
- 3D model preview (Three.js)
- Duplicate detection & full-text search
- Photo attachments & failure analysis
- Timelapse editor (trim, speed, music) with automatic AVI-to-MP4 conversion for P1-series printers, manual upload & remove
- Re-print to any connected printer with AMS mapping (auto-match or manual slot selection, multi-plate support, nozzle-aware matching for dual-nozzle H2D/H2D Pro)
- Plate thumbnail browsing for multi-plate archives (hover to navigate between plates)
- Archive comparison (side-by-side diff)
- Tag management (rename/delete across all archives)
- Print Log — Chronological table view of all print activity with columns for date/time, print name, printer, user, status, duration, and filament. Filterable by search, printer, user, status, and date range. Pagination with configurable page size. Clear button removes log entries without affecting archives.
📊 Monitoring & Control
- Real-time printer status via WebSocket
- Live camera streaming (MJPEG) & snapshots with multi-viewer support
- Streaming overlay for OBS - Embeddable page with camera + status for live streaming (
/overlay/:printerId), configurable FPS (?fps=30), status-only mode (?camera=false) - External camera support (MJPEG, RTSP, HTTP snapshot, USB/V4L2) with layer-based timelapse
- Build plate empty detection - Auto-pause print if objects detected on plate (multi-reference calibration, ROI adjustment)
- Fan status monitoring (part cooling, auxiliary, chamber)
- Printer control (stop, pause, resume, chamber light, print speed)
- Resizable printer cards (S/M/L/XL)
- Skip objects during print
- AMS slot RFID re-read
- AMS slot configuration (model-filtered presets, K profiles, color picker, pre-population for configured slots)
- AMS info card (hover for serial number, firmware version) with custom friendly names that persist across printers
- AMS remote drying — Start, monitor, and stop drying sessions for AMS 2 Pro and AMS-HT directly from the Printers page with filament-based temperature/duration presets, optional spool rotation; automatic PSU detection and HMS power error reporting
- Queue auto-drying — Automatically dry filament between scheduled prints when humidity exceeds threshold; configurable presets per filament type, optional blocking mode
- Ambient drying — Automatically keep filament dry on idle printers based on humidity, regardless of whether prints are queued
- Configurable drying presets per filament type (temperature & duration for AMS 2 Pro and AMS-HT)
- Dual external spool support for H2D (Ext-L / Ext-R)
- HMS error monitoring with history and clear errors
- Print success rates & trends
- Filament usage tracking
- Cost analytics & failure analysis
- CSV/Excel export
⏰ Scheduling & Automation
- Background print dispatch — FTP uploads and print-start commands run in the background with real-time WebSocket progress toasts (per-job upload bars, status badges, cancel button)
- Print queue with drag-and-drop
- Multi-printer selection (send to multiple printers at once)
- Model-based queue assignment (send to "any X1C" for load balancing) with location filtering
- Filament override for model-based queue (swap filament colors/types before scheduling)
- Filament validation (only assign to printers with required filaments)
- Per-printer AMS mapping (individual slot configuration for print farms)
- Scheduled prints (date/time)
- Queue Only mode (stage without auto-start)
- Clear plate confirmation between queued prints
- Smart plug integration (Tasmota, Home Assistant, MQTT)
- MQTT smart plugs: Subscribe to Zigbee2MQTT, Shelly, or any MQTT topic for energy monitoring
- Energy consumption tracking (per-print kWh and cost)
- HA energy sensor support (for plugs with separate power/energy sensors)
- Auto power-on before print
- Auto power-off after cooldown
📁 File Manager (Library)
- Upload and organize sliced files (3MF, gcode, STL)
- STL thumbnail generation - Auto-generate previews for STL files on upload or batch generate for existing files
- ZIP file extraction with folder structure preservation
- Option to create folder from ZIP filename
- Folder structure with drag-and-drop
- Rename files and folders via context menu
- Print directly to any printer with full options
- Add to queue without creating archive upfront
- Plate selection for multi-plate 3MF files
- Duplicate detection via file hash
- Mobile-friendly with always-visible action buttons
📁 Projects
- Group related prints (e.g., "Voron Build")
- Track plates (print jobs) and parts separately
- Auto-detect parts count from 3MF files
- Color-coded project badges
- Bulk assign archives via multi-select toolbar
- Import/Export projects as ZIP (includes files) or JSON
🔔 Notifications
- WhatsApp, Telegram, Discord
- Email, Pushover, ntfy
- Home Assistant persistent notifications
- Custom webhooks
- Quiet hours & daily digest
- Customizable message templates with per-filament usage details
- Print finish photo URL in notifications
- Filament usage and progress in failed/cancelled print notifications
- HMS error alerts (AMS, nozzle, etc.)
- Build plate detection alerts
- First layer complete alert (with camera snapshot)
- Bed cooled alerts (configurable threshold)
- Queue events (waiting, skipped, failed)
🧵 Spool Inventory
- Built-in spool inventory with AMS slot assignment, usage tracking, and remaining weight management
- Automatic filament consumption tracking: 3MF slicer estimates for all spools (primary), AMS remain% delta as fallback
- Per-layer gcode accuracy for partial prints (failed/cancelled), with linear scaling fallback
- Per-spool cost tracking — Set cost/kg on each spool; costs are automatically calculated at print completion and aggregated to archives. Print modal shows real-time cost preview. Configurable default cost and currency in Settings.
- Bulk spool addition — Add multiple identical spools at once (quantity 1–100) with a single form submission. Quick Add mode for stock spools that only need material, color, and weight.
- Spool catalog, color catalog, PA profile matching, and low-stock alerts
🔧 Integrations
- Spoolman filament sync with per-filament usage tracking and fill level display
- MQTT publishing for Home Assistant, Node-RED, etc.
- Prometheus metrics - Export printer telemetry for Grafana dashboards
- Bambu Cloud profile management
- Local Profiles - Import OrcaSlicer presets (
.orca_filament,.bbscfg,.bbsflmt,.zip,.json) without Bambu
