No description
Find a file
maziggy 693466eafc Add project parts tracking separate from plates
Track individual parts/objects separately from print plates in projects.
Useful for multi-part builds like Voron where 25 plates produce 150 parts.

Backend:
- Add target_parts_count field to Project model
- Calculate parts_progress_percent and remaining_parts in stats
- Auto-detect quantity from 3MF printable objects when archiving
- Sum archive quantities for completed_count (parts)
- Use archive_count for plates progress

Frontend:
- Add "Target Parts" input in project create/edit modal
- Show separate progress bars for plates vs parts
- Stats footer displays both plates and parts count
- Header badge shows parts progress when target set

Scripts:
- Add update_archive_quantities.py to migrate existing archives

Tests:
- Add 5 integration tests for parts tracking
- Add 3 unit tests for 3MF object extraction

Closes #85
2026-01-16 07:33:44 +01:00
.github Run all backend tests in CI (unit + integration) 2026-01-11 07:44:55 +01:00
backend Add project parts tracking separate from plates 2026-01-16 07:33:44 +01:00
demo-video Demo video 2026-01-03 13:00:02 +01:00
deploy Fix browser freeze on print completion with camera stream open 2025-12-16 18:45:03 +01:00
docs Updated screenshots 2026-01-02 14:12:36 +01:00
frontend Add project parts tracking separate from plates 2026-01-16 07:33:44 +01:00
icons Added debug logging for printer's hour counter and current active AMS slot mapping 2026-01-04 08:08:10 +01:00
mockup/icons - Add interactive API Browser to Settings > API Keys 2026-01-02 15:00:21 +01:00
scripts Add project parts tracking separate from plates 2026-01-16 07:33:44 +01:00
static Add project parts tracking separate from plates 2026-01-16 07:33:44 +01:00
tests - Add interactive API Browser to Settings > API Keys 2026-01-02 15:00:21 +01:00
.coverage Add comprehensive automated testing infrastructure 2025-12-11 10:03:40 +01:00
.dockerignore Added Docker support 2025-12-09 17:06:54 +00:00
.env.example Added configurable logging; Major improvements and bugfixes 2025-11-30 12:55:00 +01:00
.gitignore Add firmware update helper for LAN-only printers 2026-01-04 18:41:24 +01:00
.pre-commit-config.yaml Fix backend code formatting for CI 2026-01-11 07:30:22 +01:00
bambuddy-issue-notes.txt Fixed critical bug. 2026-01-08 14:09:49 +01:00
build_docker.sh Fixed docker build warnings 2025-12-14 09:36:19 +01:00
CHANGELOG.md Add project parts tracking separate from plates 2026-01-16 07:33:44 +01:00
CODE_OF_CONDUCT.md - Added 2025-12-30 10:57:44 +01:00
CONTRIBUTING.md - Added 2025-12-30 10:57:44 +01:00
docker-compose.test.yml Improved Docker support; Added Docker test suite 2025-12-14 10:16:33 +01:00
docker-compose.yml Fix virtual printer model codes and serial prefixes 2026-01-04 14:05:08 +01:00
docker-publish.sh - Improved Docker environment 2026-01-02 12:28:32 +01:00
Dockerfile - Improved Docker environment 2026-01-02 12:28:32 +01:00
Dockerfile.test Improved Docker support; Added Docker test suite 2025-12-14 10:16:33 +01:00
LICENSE Initial commit 2025-11-28 10:21:08 +01:00
PLAN.md Renaming app to Bambuddy 2025-12-09 08:55:59 +00:00
pyproject.toml Added docker test suite 2025-12-14 09:15:49 +01:00
README.md Add project parts tracking separate from plates 2026-01-16 07:33:44 +01:00
requirements-dev.txt Added docker test suite 2025-12-14 09:15:49 +01:00
requirements.txt Archive improvements: list view actions, object count, cross-view highlighting 2026-01-09 08:24:14 +01:00
SECURITY.md Updated README 2026-01-13 09:49:52 +01:00
test_backend.sh Add comprehensive automated testing infrastructure 2025-12-11 10:03:40 +01:00
test_docker.sh Improved Docker support; Added Docker test suite 2025-12-14 10:16:33 +01:00
test_frontend.sh Add comprehensive automated testing infrastructure 2025-12-11 10:03:40 +01:00
update_website_wiki.sh Minor fixes 2026-01-05 08:48:58 +01:00

Bambuddy Logo

Bambuddy

Self-hosted print archive and management system for Bambu Lab 3D printers

Release License Stars Issues Discord

FeaturesScreenshotsQuick StartDocumentationDiscordContributing


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 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

📦 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)
  • Re-print to any connected printer with AMS mapping (auto-match or manual slot selection)
  • Archive comparison (side-by-side diff)

📊 Monitoring & Control

  • Real-time printer status via WebSocket
  • Live camera streaming (MJPEG) & snapshots
  • Fan status monitoring (part cooling, auxiliary, chamber)
  • Printer control (stop, pause, resume, chamber light)
  • Resizable printer cards (S/M/L/XL)
  • Skip objects during print
  • AMS slot RFID re-read
  • HMS error monitoring with history
  • Print success rates & trends
  • Filament usage tracking
  • Cost analytics & failure analysis
  • CSV/Excel export

Scheduling & Automation

  • Print queue with drag-and-drop
  • Scheduled prints (date/time)
  • Queue Only mode (stage without auto-start)
  • Smart plug integration (Tasmota)
  • Energy consumption tracking
  • Auto power-on before print
  • Auto power-off after cooldown

📁 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

🔔 Notifications

  • WhatsApp, Telegram, Discord
  • Email, Pushover, ntfy
  • Custom webhooks
  • Quiet hours & daily digest
  • Customizable message templates

🔧 Integrations

  • Spoolman filament sync
  • MQTT publishing for Home Assistant, Node-RED, etc.
  • Bambu Cloud profile management
  • K-profiles (pressure advance)
  • External sidebar links
  • Webhooks & API keys
  • Interactive API browser with live testing

🖨️ Virtual Printer

  • Emulates a Bambu Lab printer on your network
  • Send prints directly from Bambu Studio/Orca Slicer
  • Configurable printer model (X1C, P1S, A1, H2D, etc.)
  • Queue mode or auto-start mode
  • SSDP discovery (appears in slicer automatically)
  • Secure TLS/MQTT communication

🛠️ Maintenance & Support

  • Maintenance scheduling & tracking
  • Interval reminders (hours/days)
  • Print time accuracy stats
  • File manager for printer storage
  • Firmware update helper (LAN-only printers)
  • Debug logging toggle with live indicator
  • Support bundle generator (privacy-filtered)

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

Printers
Real-time printer monitoring with AMS status

Archives
Print archive with 3D preview and project assignment

Reprint AMS Mapping
Re-print with AMS filament mapping preview

Timelapse Editor
Built-in timelapse editor with trim, speed, and music

Projects
Group related prints into projects

Project Detail
Project detail view with assigned archives

Project Detail Timeline
Project timeline and print history

Queue
Print scheduling and queue management

Schedule Print
Schedule prints for specific date and time

Statistics
Customizable statistics dashboard

Maintenance
Maintenance tracking per printer

Maintenance Settings
Configure maintenance types and intervals

Cloud Profiles
Bambu Cloud filament profiles

Cloud Profiles Edit
Edit filament preset settings

K-Profiles
Pressure advance (K-factor) profiles

K-Profiles Edit
Edit K-factor profile settings

Settings
General configuration and integrations

Smart Plugs
Smart plug control and energy monitoring

Notifications
Multi-provider notification system

API Keys
API keys and webhook endpoints

Virtual Printer Settings
Virtual printer configuration

Slicer Virtual Printer
Virtual printer appears in Bambu Studio/Orca Slicer

MQTT Debug Log
MQTT debug logging for troubleshooting

Quick Power Plug
Quick power plug control in sidebar


🚀 Quick Start

Requirements

  • Python 3.10+ (3.11/3.12 recommended)
  • Bambu Lab printer with Developer Mode enabled (see below)
  • Same local network as printer

Installation

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/amd64 and linux/arm64 (Raspberry Pi 4/5).

macOS/Windows users: Docker Desktop doesn't support network_mode: host. Edit docker-compose.yml: comment out network_mode: host and uncomment the ports: 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 Developer Mode

Developer Mode allows third-party software like Bambuddy to control your printer over the local network.

  1. On printer: SettingsNetworkLAN Only Mode → Enable
  2. Enable Developer Mode (appears after LAN Only Mode is enabled)
  3. Note the Access Code displayed
  4. Find IP address in network settings
  5. 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.


📚 Documentation

Full documentation available at wiki.bambuddy.cool:


🖨️ Supported Printers

Series Models
H2 H2D, H2S
X1 X1, X1 Carbon
P1 P1P, P1S, P2S
A1 A1, A1 Mini

🛠️ 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:

  1. Test — Report issues with your printer model
  2. Translate — Add new languages
  3. Code — Submit PRs for bugs or features
  4. 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

Join our DiscordReport BugRequest FeatureDocumentation