← Blog

Which self-hosted tools connect to Spoolman?

Moonraker, an OctoPrint plugin, and a few bridges feed Spoolman directly. Where each connection lives, and which layer ties consumption to a finished print.

spoolmanfilamentcomparisonself-hosted

Moonraker and the OctoPrint Spoolman plugin connect to Spoolman directly, and a few bridges extend that reach to Bambu AMS units and weighed spools. PrintStash is the odd one out: it consumes Spoolman from a layer above, tying each spool to a finished print and its measured grams. Here is what each connection actually does.

Spoolman waits to be connected

Start with what Spoolman is, because it decides everything else. It is a database of vendors, filaments, and spools behind a small REST API, with a web client on top. The project’s own wiki states the design plainly: “It’s designed to work the other way around, these softwares connect to your installed Spoolman service.” Nothing in Spoolman reaches out toward a printer. If usage never shows up in your inventory, a client failed to report, and the fix lives in the client.

The direct connections

On Klipper machines, Moonraker has a native spoolman section in moonraker.conf. Point it at your Spoolman instance, pick an active spool from Mainsail or Fluidd, and Moonraker reports usage into Spoolman as prints run. This is the path most Klipper users mean when they say they track filament. If you are still wiring the printer side up, connecting a Klipper printer via Moonraker covers that foundation.

OctoPrint gets the same treatment through a community plugin, octoprint-spoolman, which the Spoolman wiki itself links as the OctoPrint route. Both paths do the same job: they move usage numbers from the machine controller into the spool database. What neither carries is context. Spoolman ends up knowing how much of each spool is gone, and its data model stops at spools and filaments, so nothing ties the grams to a model, a G-code revision, or a particular machine.

Bridges for everything else

Bambu printers have no Moonraker, so their Spoolman story runs through intermediaries. Bambuddy, a self-hosted dashboard for Bambu machines, syncs AMS slots into Spoolman over RFID: official Bambu spools get their remaining weight and location updated automatically, and unknown tags can be auto-created or confirmed by hand. Its documentation is explicit that third-party and refilled spools are skipped, because the matching works off hardware tag identifiers rather than preset names.

SpoolmanSync approaches Bambu from another direction. It watches printers through Home Assistant, gives you a web UI for assigning spools, and pushes usage into Spoolman from there. FilaMan goes furthest into hardware: an ESP32 scale that sits under the spool, paired with a server that speaks the Spoolman API on purpose, so existing Klipper and OctoPrint clients work against it unchanged while the scale keeps the weights current.

SimplyPrint belongs in this list because it dominates the search results around Spoolman, and because it answers the question differently than everyone else. It is hosted software whose filament manager reads the G-code of prints on connected printers and deducts usage itself. By its own positioning it does not connect to Spoolman, it replaces it, which is a fair offer if the database is the part you did not want to run.

The library layer

One more kind of tool connects to Spoolman, and it looks nothing like the others. A print library does not live on the printer and does not replace the inventory. It sits where files, revisions, and print history already accumulate, and it uses that position to answer a question the printer layer cannot: which spool went into which finished part?

PrintStash is the library doing this today. Full disclosure: PrintStash is the tool behind this blog, so weigh this section accordingly. Its Spoolman integration is optional and off by default, and only a superuser can turn it on, which reads as reasonable caution once you notice the integration holds a write key to your inventory. Setup is a single base URL that the server, not your browser, has to be able to reach; the addressing trips people up when both containers share a Docker network. Sync pulls each Spoolman filament in as a read-only preset carrying material, brand, density, diameter, and price per kilogram, so Spoolman remains the one place to edit spool data. When you send a job, you pick the spool, and that selection becomes part of the print record. The full walkthrough lives in tracking filament use with Spoolman.

The interesting direction is the write-back. On a Moonraker print, PrintStash knows the grams the firmware reported, not a slicer estimate, and on completion it decrements the selected spool by that measured amount. Before writing, it checks whether Spoolman already lists an active spool, which means Moonraker’s native hook is performing the same decrement, and PrintStash stands down; if you disabled that hook on purpose, a separate superuser setting tells PrintStash to take the write anyway. An unreachable Spoolman never blocks a print or fails an upload. Reads return empty, the write is skipped, and the health endpoint notes the disconnection.

That pairing of spool choice and measured grams, attached to a completed job, is what none of the direct connections offer, because none of them know what a finished job is. The limit is scope: write-back exists on Moonraker alone. A Bambu printer on PrintStash’s beta LAN integration reports no consumption at all, and on every other provider the grams remain the slicer’s estimate, labeled as such. Where those numbers turn into money, real filament cost per print picks up the arithmetic, and the Spoolman guide holds the setup steps this post leaves to the docs.

Questions that come up

Does OrcaSlicer connect to Spoolman?

No. None of the mainstream slicers ship a Spoolman connection today. OrcaSlicer users have kept feature requests open since December 2023, and until one ships, the slicer’s contribution to tracking is the estimated weight embedded in the G-code. Other tools either use that estimate as-is or replace it with a measured number after the fact.

Can more than one tool update the same Spoolman spool?

Yes, and the wiki encourages it: one Spoolman instance can serve many Moonraker and OctoPrint clients, even ones drawing from the same spool. The failure mode is not concurrency, it is double counting, the same print subtracted twice by two writers. That is the reason PrintStash checks Spoolman’s active spool before its own write and skips when Moonraker’s hook is already counting, with an override for operators who turned that hook off on purpose.

Do any Bambu tools sync with Spoolman?

Bambuddy does, for official Bambu spools recognized by RFID, updating weight and location from the AMS and optionally creating unknown tags as new spools. SpoolmanSync covers Bambu printers through Home Assistant. PrintStash’s Bambu LAN support is beta and reports no filament consumption, so those printers currently have nothing to write back; its AMS material awareness is display metadata, not inventory.

Which connections report measured grams?

The ones that touch Moonraker. Moonraker’s native hook and PrintStash’s write-back both rest on the grams the firmware reports, and Moonraker’s readings are the only ones checked against real prints so far. Everything else moves numbers that began life as a slicer estimate or a scale reading. A scale is genuinely measuring something, just the spool rather than the job, which is a different fact.

Should Spoolman stay my inventory of record?

If you self-host and want the data local, yes. Every tool described here treats Spoolman as the source of truth for spools and prices while clients read from it and report into it. If you would rather not run the database at all, SimplyPrint’s hosted manager is the coherent alternative, and the honest way to frame it is replacement rather than connection.

Sources

  • Spoolman wiki, Automatic Filament Usage Tracking for the design note that printer software connects to Spoolman, and the Moonraker and OctoPrint routes. Checked August 22, 2026.
  • Moonraker configuration, the spoolman section the wiki links for Klipper. Status-checked August 22, 2026.
  • octoprint-spoolman, the plugin the wiki links for OctoPrint. Status-checked August 22, 2026.
  • Bambuddy Spoolman documentation for the RFID sync rules, including the official-spools-only limit. Checked August 22, 2026.
  • SpoolmanSync and FilaMan for the Home Assistant bridge and the scale that serves the Spoolman API. Checked August 22, 2026.
  • SimplyPrint’s Spoolman comparison for its own characterization of Spoolman as a database that other software feeds, and of SimplyPrint as hosted and printer-connected. Checked August 22, 2026.
  • PrintStash behavior read from the v0.12.1 source: defaults and superuser gating in backend/app/services/runtime_config.py, the write-back guard in backend/app/services/print_results.py, and the one-way preset mapping in backend/app/services/filament_sync.py. Operational detail in the Spoolman guide.
  • OrcaSlicer issues #2955 and #4771, the open slicer-side requests. Checked August 22, 2026.