No Description

maziggy 6e56aa7ab3 Inventory UX improvements, color catalog expansion, settings polish 3 months ago
.codeql cfc97f8cc4 Add CodeQL advanced setup workflow with accepted-risk exclusions 3 months ago
.github 1e5b263acb Added -n auto to run tests in parallel via pytest-xdist 3 months ago
backend 6e56aa7ab3 Inventory UX improvements, color catalog expansion, settings polish 3 months ago
deploy 196b7a93e9 Added one-shot install scripts 3 months ago
docs 583c374f01 Add Virtual Printer Proxy Mode for remote printing 3 months ago
frontend 6e56aa7ab3 Inventory UX improvements, color catalog expansion, settings polish 3 months ago
icons 018a744475 Location filter for queue and auth fixes (Issue #220) 3 months ago
install bb88527915 Changed to use %~dp (for improved security) 3 months ago
scripts 65a6e7791b Fix Bambu Cloud preset lookup by transforming filament_id to setting_id 3 months ago
static 6e56aa7ab3 Inventory UX improvements, color catalog expansion, settings polish 3 months ago
tests b99536cc33 Remove unused imports, variables, and fix minor CodeQL findings 3 months ago
.coverage ff53e62ef8 Add comprehensive automated testing infrastructure 5 months ago
.dockerignore 83d8c4e865 Added Docker support 5 months ago
.env.example eda1f5a9e7 Home Assistant: add environment variable configuration support 3 months ago
.gitignore f9b47282a1 Nozzle-aware AMS mapping for dual-nozzle printers, BL spool detection fix, AMS startup fix, SQLite WAL (#318) 3 months ago
.pre-commit-config.yaml 5672d7965a Add recalculate costs button and reprint cost tracking 4 months ago
.trivyignore 01cb23ee85 Add .trivyignore to suppress Dockerfile USER directive finding (DS-0002) 3 months ago
BETA_TEST_PLAN.md 469a13519a Add requirement for spool without RFID tag 3 months ago
CHANGELOG.md 6e56aa7ab3 Inventory UX improvements, color catalog expansion, settings polish 3 months ago
CODE_OF_CONDUCT.md ac6cbd757a - Added 4 months ago
CONTRIBUTING.md ce4c56fe86 adding french 3 months ago
DOCKERHUB.md ec82092bc7 Sync 3 months ago
Dockerfile 70622e6e53 Add proxy mode for virtual printer (cross-LAN slicer support) 3 months ago
Dockerfile.test 964be0eb26 Improved Docker tests 3 months ago
LICENSE 8a85147713 Initial commit 6 months ago
README.md a37dfaf7fb feat: dual external spool support, AMS slot model filtering & pre-population 3 months ago
SECURITY.md 2db76c325b Updated README 4 months ago
build_docker.sh 6cd9cb7033 Fixed docker build warnings 5 months ago
docker-compose.test.yml 964be0eb26 Improved Docker tests 3 months ago
docker-compose.yml dc306af888 Merge branch '0.1.9b' into fix/timezone-env-variable 3 months ago
docker-publish-beta.sh 620ba5ff2a Added docker-publish-beta.sh 3 months ago
docker-publish.sh 4b46e443dc Fix critical FTP upload failure and revert dangerous exception narrowing 3 months ago
pyproject.toml 819ab896bd Fix Python 3.10 compatibility (Issue #269) 3 months ago
requirements-dev.txt 23d539f284 Fix CI backend-tests failing to collect FTP test suite 3 months ago
requirements.txt e6e62f2a68 Add spool inventory: AMS slot assignment, usage tracking, and remaining weight editing 3 months ago
test_all.sh 2e0415dd9c Updated test_all.sh 3 months ago
test_backend.sh cffe7e62bc Fix maintenance tasks showing wrong rod type for printer models (#351) 3 months ago
test_docker.sh 964be0eb26 Improved Docker tests 3 months ago
test_frontend.sh 6a35e945ce Post work PR #262 3 months ago
test_security.sh 598cc699d4 Add CodeQL query suites for zero-finding scans and fix remaining security issues 3 months ago
update_website_wiki.sh a6b1f6fc28 Updated update_website_wiki.sh 3 months ago

README.md

Bambuddy Logo

Bambuddy

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

Release License Stars Issues Discord Ko-fi

FeaturesScreenshotsQuick StartDocumentationDiscordContributing


🌐 NEW: Remote Printing with Proxy Mode

Proxy Mode Architecture

Print from anywhere in the world — Bambuddy's new Proxy Mode acts as a secure relay between your slicer and printer:

  • 🔒 TLS-encrypted control channels — MQTT and FTP control fully encrypted
  • 🛡️ 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 — FTP and MQTT protocols proxied transparently

Perfect for remote print farms, traveling makers, or accessing your home printer from work.

👉 Setup Guide →


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, 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) ### 📊 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) - 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) - Dual external spool support for H2D (Ext-L / Ext-R) - 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 - Multi-printer selection (send to multiple printers at once) - Model-based queue assignment (send to "any X1C" for load balancing) with location filtering - 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 - 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 - 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 - Spool catalog, color catalog, PA profile matching, and low-stock alerts ### 🔧 Integrations - [Spoolman](https://github.com/Donkie/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 Cloud - K-profiles (pressure advance) - **GitHub backup** - Schedule automatic backups of cloud profiles, k profiles and settings to GitHub - External sidebar links - Webhooks & API keys - Interactive API browser with live testing ### 🖨️ Virtual Printer & Remote Printing - **🌐 Proxy Mode (NEW!)** — Print remotely from anywhere via secure TLS relay - Emulates a Bambu Lab printer on your network - Send prints directly from Bambu Studio/Orca Slicer - Configurable printer model (X1C, P1S, A1, H2D, etc.) - Archive mode, Review mode, Queue mode, or Proxy mode - SSDP discovery (same LAN) or manual IP entry (VPN/remote) - Network interface override for multi-NIC/Docker/VPN setups - Secure TLS/MQTT/FTP communication ### 🛠️ Maintenance & Support - Maintenance scheduling & tracking - Interval reminders (hours/days) - Print time accuracy stats - File manager for printer storage - Firmware update helper with version badge (LAN-only printers) - Debug logging toggle with live indicator - Live application log viewer with filtering - Support bundle generator with comprehensive diagnostics (privacy-filtered) ### 🔒 Optional Authentication - Enable/disable authentication any time - Group-based permissions (50+ granular permissions) - Default groups: Administrators, Operators, Viewers - JWT tokens with secure password hashing - Comprehensive API protection (200+ endpoints secured) - User management (create, edit, delete, groups) - User activity tracking (who uploaded archives, library files, queued prints, started prints) - **Advanced Auth via Email** — SMTP integration for automated user onboarding and self-service password resets - Admin creates users with email — system sends secure random password automatically - Users can reset their own password from the login screen (no admin needed) - Customizable email templates (welcome email, password reset)

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


🎬 Demo

Bambuddy Demo Video
Click to watch the demo on YouTube


📸 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

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

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 | | `archive/` | Archived 3MF files and thumbnails | | `logs/` | Application logs | **Updating:** ```bash # 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:** ```bash # 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:** ```yaml ports: - "3000:8000" # Access on port 3000 ``` **Reverse Proxy (Nginx):** ```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): ```yaml 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 auto-detects your network subnet and can discover printers via subnet scanning in the Add Printer dialog.

Windows (Portable Launcher)

The easiest way to run Bambuddy on Windows - no installation required:

git clone https://github.com/maziggy/bambuddy.git
cd bambuddy
start_bambuddy.bat

Double-click start_bambuddy.bat and it will:

  • Download Python and Node.js automatically (portable, no system changes)
  • Install dependencies and build the frontend
  • Open your browser to http://localhost:8000

Everything is stored in the .portable\ folder. Use start_bambuddy.bat reset to clean up.

Custom port: set PORT=9000 & start_bambuddy.bat

Manual Installation (Linux/macOS)

# 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
X1 X1, X1 Carbon, X1E
H2 H2D, H2D Pro, H2C, H2S
P1 P1P, P1S
P2 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

If you like Bambuddy and want to support it, you can buy Martin a coffee.


Made with ❤️ for the 3D printing community

Join our DiscordReport BugRequest FeatureDocumentation