Bambusy
A self-hosted print archive and management system for Bambu Lab 3D printers
Features •
Screenshots •
Installation •
Configuration •
Usage •
Contributing
Features
- Multi-Printer Support - Connect and monitor multiple Bambu Lab printers (X1, X1C, P1P, P1S, A1, A1 Mini)
- Automatic Print Archiving - Automatically saves 3MF files when prints complete
- 3D Model Preview - Interactive Three.js viewer for archived prints
- Real-time Monitoring - Live printer status via WebSocket with print progress, temperatures, and more
- Smart Plug Integration - Control Tasmota-based smart plugs with automation:
- Auto power-on when print starts
- Auto power-off when print completes
- Time-based delay (1-60 minutes)
- Temperature-based delay (waits for nozzle to cool down)
- Print Statistics Dashboard - Customizable dashboard with drag-and-drop widgets
- Print success rates
- Filament usage trends
- Print activity calendar
- Cost tracking
- Time accuracy tracking
- Print Time Accuracy - Compare estimated vs actual print times
- Color-coded badges (green=accurate, blue=faster, orange=slower)
- Per-printer accuracy statistics
- Dashboard widget showing average accuracy
- Duplicate Detection - Automatically detect when models have been printed before
- SHA256 content hash for exact matching
- Purple badge indicator on archive cards
- "Duplicates" collection filter to find all duplicates
- View duplicate history when viewing archive details
- Filament Cost Tracking - Track costs per print with customizable filament database
- Photo Attachments - Attach photos to archived prints for documentation
- Failure Analysis - Document failed prints with notes and photos
- Project Page Editor - View and edit embedded MakerWorld project pages with images, descriptions, and designer info
- Cloud Profiles Sync - Access your Bambu Cloud slicer presets
- File Manager - Browse and manage files on your printer's SD card
- Re-print - Send archived prints back to any connected printer
- Dark/Light Theme - Easy on the eyes, day or night
- Keyboard Shortcuts - Quick navigation with keyboard shortcuts
Screenshots
Customizable Dashboard with drag-and-drop widgets
Real-time printer monitoring
Print archive with grid and list views
Interactive 3D model preview
Requirements
System Requirements
- Python 3.10+ (3.11 or 3.12 recommended)
- Node.js 18+ (only needed if building frontend from source)
- Git (for cloning the repository)
Network Requirements
- Bambu Lab printer with LAN Mode enabled
- Printer and Bambusy server must be on the same local network
- Ports used: 8883 (MQTT/TLS), 990 (FTPS)
Supported Printers
- Bambu Lab H2C / H2D / H2S
- Bambu Lab X1 / X1 Carbon
- Bambu Lab P1P / P1S
- Bambu Lab A1 / A1 Mini
Installation
Option 1: Quick Install (Linux/macOS)
# Clone the repository
git clone https://github.com/maziggy/bambusy.git
cd bambusy
# Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate
# Install Python dependencies
pip install -r requirements.txt
# Start the server
uvicorn backend.app.main:app --host 0.0.0.0 --port 8000
Open http://localhost:8000 in your browser.
Option 2: Detailed Install (All Platforms)
Step 1: Install Prerequisites
macOS:
# Install Homebrew if not installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Python and Node.js
brew install python@3.12 node
Ubuntu/Debian:
sudo apt update
sudo apt install python3 python3-venv python3-pip nodejs npm git
Windows:
- Download and install Python 3.12 (check "Add to PATH")
- Download and install Node.js LTS
- Download and install Git
Step 2: Clone the Repository
git clone https://github.com/maziggy/bambusy.git
cd bambusy
Step 3: Set Up Python Environment
Linux/macOS:
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
Windows (PowerShell):
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install --upgrade pip
pip install -r requirements.txt
Windows (Command Prompt):
python -m venv venv
venv\Scripts\activate.bat
pip install --upgrade pip
pip install -r requirements.txt
Step 4: Build Frontend (Optional)
The repository includes pre-built frontend files in /static. If you want to build from source:
cd frontend
npm install
npm run build
cd ..
Step 5: Run the Application
uvicorn backend.app.main:app --host 0.0.0.0 --port 8000
Open http://localhost:8000 in your browser.
Running as a Service (Linux)
Create a systemd service for automatic startup:
sudo nano /etc/systemd/system/bambusy.service
Add the following content (adjust paths as needed):
[Unit]
Description=Bambusy Print Archive
After=network.target
[Service]
Type=simple
User=YOUR_USERNAME
WorkingDirectory=/home/YOUR_USERNAME/bambusy
Environment="PATH=/home/YOUR_USERNAME/bambusy/venv/bin"
ExecStart=/home/YOUR_USERNAME/bambusy/venv/bin/uvicorn backend.app.main:app --host 0.0.0.0 --port 8000
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Enable and start the service:
sudo systemctl daemon-reload
sudo systemctl enable bambusy
sudo systemctl start bambusy
# Check status
sudo systemctl status bambusy
# View logs
sudo journalctl -u bambusy -f
Running with Docker (Coming Soon)
docker run -d \
--name bambusy \
-p 8000:8000 \
-v bambusy_data:/app/data \
-v bambusy_archive:/app/archive \
maziggy/bambusy:latest
Updating Bambusy
cd bambusy
git pull origin main
# Activate virtual environment
source venv/bin/activate # Linux/macOS
# or: .\venv\Scripts\Activate.ps1 # Windows PowerShell
# Update dependencies
pip install -r requirements.txt
# Rebuild frontend (if needed)
cd frontend
npm install
npm run build
cd ..
# Restart the application
Configuration
Enabling LAN Mode on Your Printer
To connect Bambusy to your printer, you need to enable LAN Mode:
- On your printer, go to Settings > Network > LAN Mode
- Enable LAN Mode (this requires Developer Mode to be enabled first)
- Note down the Access Code displayed
- Find your printer's IP Address in network settings
- Find your printer's Serial Number in device info
Adding a Printer in Bambusy
- Go to the Printers page
- Click Add Printer
- Enter:
- Name: A friendly name for your printer
- IP Address: Your printer's local IP
- Access Code: The code from LAN Mode settings
- Serial Number: Your printer's serial number
- Click Save
The printer should connect automatically and show real-time status.
Usage
Keyboard Shortcuts
| Key |
Action |
1 |
Go to Printers |
2 |
Go to Archives |
3 |
Go to Statistics |
4 |
Go to Cloud Profiles |
5 |
Go to Settings |
? |
Show keyboard shortcuts |
Dashboard Widgets
The statistics dashboard features draggable, resizable widgets:
- Drag widgets by the grip handle to reorder
- Resize widgets by clicking the resize icon (cycles through 1/4, 1/2, full width)
- Hide widgets by clicking the eye icon
- Reset layout using the Reset Layout button
Your layout preferences are saved automatically.
Archiving Prints
Prints are automatically archived when they complete. You can also:
- Manually add photos to any archive
- Add failure analysis notes for failed prints
- Re-print any archived 3MF to a connected printer
- Export archives for backup
Project Page
3MF files downloaded from MakerWorld contain embedded project pages with model information. To view:
- Right-click any archive in the Archives page
- Select "Project Page" from the context menu
- View title, description, designer info, license, and images
- Click "Edit" to modify the project page metadata
- Changes are saved directly to the 3MF file
Smart Plug Integration
Bambusy supports Tasmota-based smart plugs for automated power control. This is useful for:
- Automatically turning on your printer when a print starts
- Safely turning off the printer after it cools down
- Energy savings by powering off idle printers
Supported Devices
Any smart plug running Tasmota firmware with HTTP API enabled. Popular compatible devices include:
- Sonoff S31 / S26
- Gosund / Teckin / Treatlife smart plugs
- Any ESP8266/ESP32-based plug with Tasmota
Setting Up a Smart Plug
- Go to Settings > Smart Plugs
- Click Add Plug
- Enter the plug's IP address and click Test to verify connection
- Give it a name (auto-filled from device if available)
- Optionally add username/password if your Tasmota requires authentication
- Link it to a printer for automation
- Click Add
Automation Options
Once linked to a printer, you can configure:
| Setting |
Description |
| Enabled |
Master toggle for all automation |
| Auto On |
Turn on plug when a print starts |
| Auto Off |
Turn off plug when print completes |
| Delay Mode |
Choose how to delay the power-off |
Delay Modes:
- Time-based: Wait a fixed number of minutes (1-60) after print completes
- Temperature-based: Wait until nozzle temperature drops below threshold (default 70°C)
Manual Control
Each plug card shows:
- Current status (ON/OFF/Offline)
- On/Off buttons for manual control
- Expandable settings panel
Tech Stack
- Backend: Python / FastAPI
- Frontend: React / TypeScript / Tailwind CSS
- Database: SQLite
- 3D Viewer: Three.js
- Printer Communication: MQTT (TLS) + FTPS
Project Structure
bambusy/
├── backend/
│ └── app/
│ ├── api/routes/ # API endpoints
│ ├── core/ # Config, database
│ ├── models/ # SQLAlchemy models
│ ├── schemas/ # Pydantic schemas
│ └── services/ # Business logic (MQTT, FTP, etc.)
├── frontend/ # React application
├── static/ # Built frontend + images
├── archive/ # Stored 3MF files
└── bambusy.db # SQLite database
API Documentation
Once running, API documentation is available at:
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature)
- Commit your changes (
git commit -m 'Add some AmazingFeature')
- Push to the branch (
git push origin feature/AmazingFeature)
- Open a Pull Request
Troubleshooting
Printer won't connect
- Check LAN Mode is enabled on your printer (Settings > Network > LAN Mode)
- Verify the Access Code - it changes when you toggle LAN Mode
- Check network connectivity - printer and server must be on the same network
- Firewall issues - ensure ports 8883 (MQTT) and 990 (FTPS) are not blocked
- Correct Serial Number - find it in printer settings under Device Info
"Connection refused" errors
- The printer may be in sleep mode - wake it up and try again
- Check if another application is connected (only one MQTT connection allowed)
- Restart the printer if issues persist
3MF files not archiving automatically
- Ensure the printer is connected (green status indicator)
- Check that the print completed successfully
- Look at the server logs for any error messages
Frontend not loading
- Make sure you built the frontend:
cd frontend && npm run build
- Check that the
/static folder contains index.html and /assets
- Clear browser cache and hard refresh (Ctrl+Shift+R)
Database errors
The SQLite database (bambusy.db) is created automatically. If you encounter issues:
# Backup and reset database
mv bambusy.db bambusy.db.backup
# Restart the application - a new database will be created
View server logs
# If running directly
uvicorn backend.app.main:app --host 0.0.0.0 --port 8000 --log-level debug
# If running as systemd service
sudo journalctl -u bambusy -f
Smart plug not responding
- Check the IP address - Make sure the plug is on the same network and the IP hasn't changed
- Test via browser - Visit
http://<plug-ip>/cm?cmnd=Power to test directly
- Check Tasmota web interface - Access
http://<plug-ip> to verify Tasmota is running
- Authentication - If Tasmota has a password set, configure it in the plug settings
- Firewall - Ensure port 80 is accessible between Bambusy server and the plug
Auto power-off not working
- Check plug is linked - The plug must be linked to a printer for automation
- Verify automation is enabled - Check the Enabled, Auto On, and Auto Off toggles
- Temperature mode issues - If using temperature mode, ensure the printer is still connected so Bambusy can read the nozzle temperature
Known Issues / Roadmap
Beta Limitations
Planned Features
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Bambu Lab for making great printers
- The reverse engineering community for documenting the Bambu Lab protocol
- All contributors and testers
Made with ❤️ for the 3D printing community