v0.1.6b7 ## AMS Color Mapping (#76) - Manual AMS slot selection in ReprintModal, AddToQueueModal, EditQueueItemModal - Dropdown to override auto-matched AMS slots with any loaded filament - Blue ring indicator distinguishes manual selections from auto-matches - Status indicators: green (match), yellow (type only), orange (not found) - Shared color utility (utils/colors.ts) with ~200 Bambu color mappings - Widened modals (max-w-md → max-w-lg) to fit long color names - Fixed AMS mapping format to match Bambu Studio exactly: - Use slot_id from 3MF to position tray IDs correctly - Fill unused slots with -1 placeholder - Add ams_mapping2 with detailed {ams_id, slot_id} pairs - Resolves "stuck at filament change" on multi-color reprints ## Print Options in Reprint Modal - Bed leveling, flow calibration, vibration calibration toggles - First layer inspection, timelapse toggles - Collapsible "Print Options" section - Fixed print command format for proper printer recognition ## Time Format Setting (#75) - New date utilities (utils/date.ts): parseUTCDate, formatDate, formatDateTime - Applied to 12 components: PrintersPage, ArchivesPage, QueuePage, ProjectDetailPage, SystemInfoPage, AMSHistoryModal, NotificationLogViewer, CalendarView, FilamentTrends, PrinterQueueWidget, ProfilesPage - Fixes archive times showing in UTC instead of local timezone ## Statistics Dashboard (#72) - Size-aware rendering passes widget size (1/4, 1/2, full) to components - PrintCalendar: Dynamic cell sizing via ResizeObserver, 3/6/12 months - SuccessRateWidget: Per-printer breakdown at larger sizes - TimeAccuracyWidget: Per-printer breakdown at larger sizes - FilamentTypesWidget: Grid layout at larger sizes - FailureAnalysisWidget: More failure reasons at larger sizes ## Firmware Update Helper - Check firmware versions against Bambu Lab servers for LAN-only printers - Orange "Update" badge on printer cards when updates available - Firmware modal with version info, release notes, upload progress - One-click upload to printer SD card via FTP with progress callback - Local firmware caching for faster re-uploads - New services: firmware_check.py, firmware_update.py - New routes: /api/v1/firmware/* ## FTP Reliability - Configurable retry (1-10 attempts, 1-30s delay) in Settings > General - Applies to: 3MF archiving, print uploads, timelapse downloads, reprint uploads, firmware updates - A1/A1 Mini SSL fix: skip SSL on data channel entirely (control encrypted) - X1C/P1S: SSL with session reuse on data channel (required by vsFTPd) - Configurable FTP timeout (10-120s, default 30s) for slow WiFi ## Bulk Operations - Bulk project assignment from multi-select toolbar (#70) - BatchProjectModal for assigning archives to projects - "Remove from project" option for bulk clearing ## Chamber Light Control (#67) - Light toggle button on printer cards (next to camera) - Custom ChamberLight SVG icon with on/off states - Backend: POST /printers/{id}/chamber-light?on=true|false - H2D dual chamber lights controlled together ## Support Bundle Feature - Debug logging toggle with real-time duration timer in Layout - /api/v1/support/bundle generates ZIP with system info and logs - Privacy protection: filters secrets, sanitizes paths, removes IPs/emails - Requires debug logging enabled before download ## Archive Improvements - List view: edit/delete buttons and context menu with full parity - Object count display on cards (extracted from 3MF metadata) - Cross-view highlighting: click calendar/project to highlight in cards - Context menu button (⋮) on cards and list rows ## Maintenance Improvements (#59) - wiki_url field for custom type documentation links - Model-specific Bambu Lab wiki URLs for system types - External link icon next to maintenance item names - Fix: deleted printer now removed from maintenance ## Spoolman Integration - Clear location when spools removed from AMS during sync - find_spools_by_location_prefix() to find spools at a printer - clear_location_for_removed_spools() clears stale locations ## Bug Fixes - Browser freeze from CameraPage WebSocket (removed duplicate connection) - Project card filament badges showing duplicates and raw color codes - Print object label positioning in skip objects modal - Printer hour counter not updated on backend restart - Virtual printer excluded from discovery - Print cover fetch in Docker environments - Critical: Archive delete safety checks prevent deleting parent dirs
Bambuddy
Self-hosted print archive and management system for Bambu Lab 3D printers
Features • Screenshots • Quick Start • Documentation • Contributing
Testers Needed! I only have X1C and H2D devices. Help make Bambuddy work with all Bambu Lab printers by reporting your experience!
Why Bambuddy?
- Own your data — All print history stored locally, no cloud dependency
- Works offline — Uses LAN Mode for direct printer communication
- Full automation — Schedule prints, auto power-off, get notified when done
- Multi-printer support — Manage your entire print farm from one interface
✨ Features
📦 Print Archive
📊 Monitoring & Control
⏰ Scheduling & Automation
📁 Projects
|
🔔 Notifications
🔧 Integrations
🖨️ Virtual Printer
🛠️ Maintenance & Support
|
Plus: Customizable themes (style, background, accent) • Mobile responsive • Keyboard shortcuts • Multi-language (EN/DE) • Auto updates • Database backup/restore • System info dashboard
📸 Screenshots
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
🚀 Quick Start
Requirements
- Python 3.10+ (3.11/3.12 recommended)
- Bambu Lab printer with LAN Mode enabled
- Same local network as printer
Installation
Docker (Recommended)
Option A: Pre-built image (fastest)
mkdir bambuddy && cd bambuddy
curl -O https://raw.githubusercontent.com/maziggy/bambuddy/main/docker-compose.yml
docker compose up -d
Option B: Build from source
git clone https://github.com/maziggy/bambuddy.git
cd bambuddy
docker compose up -d --build
Open http://localhost:8000 in your browser.
Multi-architecture support: Pre-built images are available for
linux/amd64andlinux/arm64(Raspberry Pi 4/5).
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.
Docker Configuration & Commands
Environment Variables:
| Variable | Default | Description |
|---|---|---|
TZ |
UTC |
Your timezone (e.g., America/New_York, Europe/Berlin) |
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 |
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 --build
Useful Commands:
# View logs
docker compose logs -f
# Stop/Start
docker compose down
docker compose up -d
# Shell access
docker compose exec bambuddy /bin/bash
Custom Port:
ports:
- "3000:8000" # Access on port 3000
Reverse 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: host
Note: Docker's default bridge networking cannot receive SSDP multicast packets for automatic printer discovery. When using
network_mode: host, Bambuddy can discover printers via subnet scanning - enter your network range (e.g.,192.168.1.0/24) in the Add Printer dialog.
Manual Installation
# Clone and setup
git clone https://github.com/maziggy/bambuddy.git
cd bambuddy
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Run
uvicorn backend.app.main:app --host 0.0.0.0 --port 8000
Open http://localhost:8000 and add your printer!
Need detailed instructions? See the Installation Guide
Enabling LAN Mode
- On printer: Settings → Network → LAN Mode
- Enable LAN Mode and note the Access Code
- Find IP address in network settings
- Find Serial Number in device info
📚 Documentation
Full documentation available at wiki.bambuddy.cool:
- Installation — All installation methods
- Getting Started — First printer setup
- Features — Detailed feature guides
- Troubleshooting — Common issues & solutions
- API Reference — REST API documentation
🖨️ Supported Printers
| Series | Models | Status |
|---|---|---|
| H2 | H2C, H2D, H2S | ✅ Tested (H2D) |
| X1 | X1, X1 Carbon | ✅ Tested (X1C) |
| P1 | P1P, P1S | 🧪 Needs testing |
| A1 | A1, A1 Mini | 🧪 Needs testing |
🛠️ Tech Stack
| Component | Technology |
|---|---|
| Backend | Python, FastAPI, SQLAlchemy |
| Frontend | React, TypeScript, Tailwind CSS |
| Database | SQLite |
| 3D Viewer | Three.js |
| Communication | MQTT (TLS), FTPS |
🤝 Contributing
Contributions welcome! Here's how to help:
- Test — Report issues with your printer model
- Translate — Add new languages
- Code — Submit PRs for bugs or features
- Document — Improve wiki and guides
# Development setup
git clone https://github.com/maziggy/bambuddy.git
cd bambuddy
# Backend
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
DEBUG=true uvicorn backend.app.main:app --reload
# Frontend (separate terminal)
cd frontend && npm install && npm run dev
See CONTRIBUTING.md for guidelines.
📄 License
MIT License — see LICENSE for details.
🙏 Acknowledgments
- Bambu Lab for amazing printers
- The reverse engineering community for protocol documentation
- All testers and contributors
Made with ❤️ for the 3D printing community
Report Bug •
Request Feature •
Documentation





