Windows Installer¶
The Windows installer is a self-contained .exe that bundles everything Bambuddy needs: an embedded Python 3.13 distribution, the pre-built React frontend, ffmpeg, and NSSM (the Windows service supervisor). No Python, Node, Docker, Git, or any other runtime is required on the target machine.
It installs Bambuddy as a Windows service running on http://localhost:8000, so the dashboard is always available after a reboot without any manual start.
Download¶
Latest stable release:
bambuddy-windows-x64-setup.exe
For daily beta builds (newest features, less tested): browse the releases page and pick the most recent prerelease tagged v<version>-daily.<date>.
Windows 10 / 11 x64 only
The installer targets 64-bit Windows 10 and 11. ARM64 (Surface Pro X, Snapdragon) is not currently supported — most Bambuddy deps don't ship ARM64 Windows wheels.
SmartScreen Warning on First Run¶
Until our SignPath OSS code-signing approval lands, the installer is unsigned. Windows SmartScreen will warn:
Windows protected your PC — Microsoft Defender SmartScreen prevented an unrecognised app from starting.
Click More info → Run anyway to proceed. The installer is built in public on GitHub Actions (windows-installer.yml) so you can verify the build provenance directly.
Once signing is wired in, the warning will go away after a short SmartScreen reputation-building period across the first signed releases.
Installer Flow¶
When you run the .exe:
- UAC prompt — admin elevation is required because the installer registers a Windows service and writes to
C:\Program Files\andC:\ProgramData\. This is a one-time prompt during install only; normal Bambuddy use doesn't need admin. - License + install directory — defaults to
C:\Program Files\Bambuddy\. - Optional firewall rule — checkbox to add a Windows Firewall inbound rule for TCP
8000so devices on your LAN can reach the dashboard. Default: enabled. Uncheck if you only want loopback access from this machine. - Optional desktop shortcut — default: off.
- Install — files copy, Bambuddy service registers and starts.
- Browser opens — default browser navigates to
http://localhost:8000.
Installation Layout¶
C:\Program Files\Bambuddy\ Install root (managed by installer)
├── python\ Embedded Python 3.13 + venv
├── app\
│ ├── backend\ Backend source
│ ├── static\ Frontend bundle (served by FastAPI)
│ └── gcode_viewer\ 3D preview iframe assets
├── bin\
│ ├── nssm.exe Windows service supervisor
│ ├── ffmpeg.exe Timelapse / camera processing
│ └── ffprobe.exe
├── service\ Service install/uninstall scripts
├── bambuddy.ico App icon
└── unins000.exe Uninstaller
C:\ProgramData\Bambuddy\ Data root (preserved on uninstall)
├── data\
│ ├── bambuddy.db SQLite database
│ ├── archive\ Archived 3MF files + thumbnails
│ └── plate_calibration\ Plate detection cache
└── logs\
├── service-stdout.log NSSM-captured uvicorn stdout
├── service-stderr.log NSSM-captured uvicorn stderr
└── *.log Bambuddy application logs
The split between Program Files (read-only after install, replaced on update) and ProgramData (persistent user data) means updates never touch your database or archives.
Windows Service¶
Bambuddy runs as a Windows service named Bambuddy, registered to start automatically at boot. The service runs as LocalSystem.
| Setting | Value |
|---|---|
| Service name | Bambuddy |
| Display name | Bambuddy |
| Startup type | Automatic |
| Account | LocalSystem |
| Restart on failure | Yes (NSSM-managed, 5s delay) |
Why LocalSystem?
The optional Virtual Printer feature needs to bind privileged ports (322 / 990 / 8883) for the RTSPS camera proxy, FTPS file server, and MQTT broker that emulate a real Bambu printer for slicer uploads. Only LocalSystem or a similarly-privileged account can bind ports below 1024 on Windows. If you don't use Virtual Printer mode, the extra privilege isn't doing anything — it's there so you can flip the feature on later without a service-account change.
Managing the service¶
Get-Service Bambuddy # Status
Start-Service Bambuddy # Start
Stop-Service Bambuddy # Stop
Restart-Service Bambuddy # Restart
Or via the GUI: services.msc → find Bambuddy.
Updating¶
To update to a new version, just download and run the newer installer over the existing install. Inno Setup detects the prior install, stops the running Bambuddy service, replaces the program files, and re-registers + restarts the service automatically.
- Your data in
C:\ProgramData\Bambuddy\is untouched. - Your settings (notifications, integrations, OAuth tokens) persist.
- The service stops for ~5 seconds during the file swap.
1. Download the new bambuddy-windows-x64-setup.exe
2. Run it (UAC prompt)
3. Click through the wizard (your existing config is detected)
4. Service restarts on the new version automatically
No manual Stop-Service is needed — the installer handles that with a pre-install hook. If you do see a "file in use" error, stop the service manually (Stop-Service Bambuddy in admin PowerShell) and click Retry.
Uninstalling¶
Standard Windows uninstall flow:
- Settings → Apps → search "Bambuddy" → Uninstall, or
- Control Panel → Programs and Features → Bambuddy → Uninstall
The uninstaller stops the service, removes the Windows Firewall rule, deletes the C:\Program Files\Bambuddy\ install tree, and deregisters the service.
Your data is preserved by default
C:\ProgramData\Bambuddy\ (database, archives, logs) is not removed by the uninstaller. If you reinstall Bambuddy later, you'll pick up exactly where you left off. To wipe everything, delete the C:\ProgramData\Bambuddy\ folder manually after uninstall.
Logs¶
Bambuddy writes three log streams on Windows:
| File | Source |
|---|---|
C:\ProgramData\Bambuddy\logs\service-stdout.log | NSSM-captured uvicorn stdout |
C:\ProgramData\Bambuddy\logs\service-stderr.log | NSSM-captured uvicorn stderr + Python tracebacks |
C:\ProgramData\Bambuddy\logs\bambuddy.log | Bambuddy's own rotating application log |
Quick log access:
# Tail the service stdout
Get-Content "C:\ProgramData\Bambuddy\logs\service-stdout.log" -Tail 100 -Wait
# Tail Bambuddy's app log
Get-Content "C:\ProgramData\Bambuddy\logs\bambuddy.log" -Tail 100 -Wait
A Start Menu shortcut Bambuddy → Bambuddy Logs opens the logs folder in Explorer for quick triage.
:material-firewall: Windows Firewall¶
If you ticked Add firewall rule during install, an inbound TCP rule is created for port 8000:
| Setting | Value |
|---|---|
| Name | Bambuddy Dashboard |
| Direction | Inbound |
| Protocol | TCP |
| Port | 8000 |
| Action | Allow |
This makes the dashboard reachable from other devices on your LAN at http://<windows-host-ip>:8000. The uninstaller removes this rule.
Bambuddy is unauthenticated by default
With the firewall rule active, anyone on your LAN can open the Bambuddy dashboard without credentials. Open Settings → Security in the dashboard and enable authentication before relying on LAN access, especially on shared / guest networks.
Virtual Printer + Network Interfaces¶
When you add a Virtual Printer, the Bind IP dropdown lists every network interface on the Windows host that has an IPv4 address. On Windows you may see entries you don't see on Linux:
Ethernet,Wi-Fi— your real LAN adaptersvEthernet (WSL),vEthernet (Default Switch)— Hyper-V virtual switchesTailscale— if you have Tailscale installedBluetooth Network Connection— if active
This is intentional — Bambuddy doesn't filter Windows-specific virtual adapters because some users legitimately want to bind a VP to one (common cases: binding to the Tailscale interface for remote slicing across a tailnet, or to a WSL interface for slicing from Linux tools running inside WSL).
For most users, pick the real LAN adapter that matches the subnet your Bambu printer is on.
Troubleshooting¶
Installer file-in-use error during update¶
If you see "permission denied" or "file in use" mid-install when upgrading, the previous Bambuddy service is still holding python.exe or its DLLs. The pre-install hook should stop the service automatically, but if it didn't:
Then click Retry in the installer dialog.
Service won't start after install¶
Check the NSSM stderr log first:
Common causes:
- Port 8000 already in use by another application. Stop the other app or change Bambuddy's port via env var. (Port change UX is a v1.1 polish item — for now, edit
C:\Program Files\Bambuddy\service\install-service.batand re-run it as admin to re-register the service on a different port.) - Antivirus blocking the embedded Python — quarantines
python.exe. AddC:\Program Files\Bambuddy\to your AV's exclusion list.
Browser doesn't open at end of install¶
The auto-open is best-effort; if your default-browser config is unusual (e.g. a privacy launcher), it may not fire. Use the Start Menu shortcut Bambuddy → Open Bambuddy Dashboard, or just point any browser at http://localhost:8000.
Virtual Printer dropdown is empty¶
If you see no interfaces when adding a VP: restart the service and refresh the page. On some Windows configurations (heavy firewall / endpoint protection) psutil.net_if_addrs() returns stale data until the next service restart.
Removing everything cleanly¶
# 1. Uninstall via Settings → Apps
# 2. Then wipe persistent data:
Remove-Item "C:\ProgramData\Bambuddy" -Recurse -Force
Build From Source¶
The installer is built in CI from the public GitHub Actions workflow at .github/workflows/windows-installer.yml. Build inputs:
installers/windows/build.py— stages embedded Python + deps + frontend + vendored NSSM + ffmpeginstallers/windows/bambuddy.iss— Inno Setup compiler scriptinstallers/windows/vendor/nssm.exe— vendored NSSM 2.24
To build locally you need Windows 10/11 + Python 3.11+ + Node.js 22 + Inno Setup 6. See installers/windows/README.md for the build steps.
Next Steps¶
After install:
- Open Bambuddy at
http://localhost:8000 - Add your first Bambu printer — see First Printer Setup
- Optionally enable authentication under Settings → Security