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 Interface dropdown lists every IPv4 address on the Windows host — one entry per address, not per adapter, so a single NIC carrying several addresses offers several bind targets. Extra addresses after an adapter's first are marked [alias]. 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.
Each enabled Virtual Printer needs its own address. Add the extra ones to the adapter you already use, from an Administrator PowerShell:
They persist across reboots, and the dropdown picks them up when the Settings page is reloaded. The Virtual Printer page has the full walkthrough.
Don't reach for extra NICs on the same subnet
Adding a second network adapter instead of a second address works only when that adapter is on its own subnet or VLAN. Several adapters of one machine on one subnet hit ARP flux: route print -4 shows a route per adapter, netstat -a shows every port LISTENING on every IP, and other machines can still reach only one of them. Weak host mode does not help.
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