September 11, 2026
How to Set Up Spoolman with Klipper and Moonraker (Mainsail/Fluidd)
If you're running Klipper, Spoolman is the standard way to stop guessing how much filament is left on a spool — it's a free, self-hosted spool database, and Moonraker has built-in support for it, so once it's wired up, Mainsail and Fluidd both show a spool selector and update the remaining weight automatically as a print runs. Here's the setup, end to end.
Before you start
- Klipper and Moonraker already installed and working — Spoolman plugs into Moonraker, it doesn't replace any part of your existing setup.
- A place to run the Spoolman server itself: a Docker container on the same Raspberry Pi/SBC as Moonraker, or on a separate always-on machine on your network (a NAS, a home server, anything that stays up).
- Python 3.9+ if you're running Spoolman outside Docker, though Docker is the path most people take since Spoolman ships an official image.
1. Run the Spoolman server
The official route is Docker Compose — pull the spoolman image, give it a persistent volume for its database, and expose a port (7912 by default). Once the container is up, you should be able to open http://<spoolman-host>:7912 in a browser and see its web UI, empty for now.
2. Point Moonraker at it
Open moonraker.conf on your printer's host and add a [spoolman] section:
[spoolman]
server: http://<spoolman-host>:7912
Replace <spoolman-host> with the IP address or hostname where the Spoolman container is running — localhost if it's on the same machine as Moonraker, the LAN IP otherwise.
3. Restart Moonraker
sudo systemctl restart moonraker
Check Moonraker's log for a Spoolman connection line with no errors. If it can't reach the server, double-check the address and that the port is actually reachable from the printer's host (a quick curl http://<spoolman-host>:7912 from that machine is the fastest way to confirm).
4. Confirm it shows up in Mainsail or Fluidd
Both interfaces pick up the Spoolman integration automatically once Moonraker reports it — no separate plugin install needed. You should see a spool selector appear in the print status panel. If it's not there yet, a hard refresh of the browser tab is usually enough; Moonraker doesn't need a second restart.
5. Add your spools
In the Spoolman web UI, add a filament type (brand, material, diameter, density) and then a spool of that filament with its starting weight. Do this for every spool currently in rotation — it's the only manual step in the whole setup, everything after this updates itself.
6. Assign a spool before you print
Pick the active spool from the selector Mainsail/Fluidd now shows before starting a job. From here on, Moonraker reports estimated usage back to Spoolman as the print progresses, and the remaining weight on that spool drops automatically — no scale, no manual subtraction.
What this doesn't cover
Spoolman now knows what's physically left on each spool. It won't tell you what a print actually cost to make, because that was never its job — for that you need the price per kilogram you paid, the print time, and your electricity rate all in one place. If that's the next thing on your list, here's how Spoolman and order costing fit together rather than duplicating each other.