All articles

September 11, 2026

Spoolman with Klipper and Moonraker: Setup Guide for Mainsail and Fluidd

0 viewsNo ratings yet· Log in to rate

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.

"Live updates from Spoolman aren't working" in Fluidd

If Fluidd shows "Live updates from Spoolman aren't working. Spoolman is blocking Fluidd's browser origin — check your Spoolman configuration to allow it", the problem is on the Spoolman side, not in Moonraker. For live spool updates the browser tab talks to Spoolman directly, and Spoolman only accepts browser requests from origins it has been told about — so a Fluidd or Mainsail served from a different address than Spoolman gets refused.

Add the address you open Fluidd (or Mainsail) at to SPOOLMAN_CORS_ORIGIN in the Spoolman container's environment, then restart the container:

environment:
  - SPOOLMAN_CORS_ORIGIN=http://fluidd.local,http://192.168.1.50

Each entry needs the scheme (http:// or https://) and the port if it isn't the default one — a bare host:port never matches. Separate several origins with commas. SPOOLMAN_CORS_ORIGIN=* also works, but it switches the origin check off entirely, so any website you visit could read and change your Spoolman data in the background — only use it on a trusted network. Spool usage reporting goes through Moonraker, which isn't a browser, so it keeps working either way; the setting only affects the live view in the browser.

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.

Was this article helpful?00Log in to rate this article

Comments