Klipper print farm: running many printers through Moonraker

Updated 31 October 2026

A Klipper print farm works because every printer exposes the same Moonraker API, so one tool can drive Vorons, Rat Rigs and anything else running it. Mainsail and Fluidd can already show several printers. What we did not find in their documentation is the farm part: choosing which printer runs the next job.

A note on our experience. We print motorcycle parts for our shop Revsticks in Thun on seven printers, and none is a Voron or a Rat Rig. Four are Bambus, and the one we control through Moonraker is an Anycubic Kobra S1 with Rinkhals firmware. So we know Klipper from one machine type, not from a room of them.

Why one tab per printer stops scaling

The tabs are the smaller problem, and they are partly solved. Mainsail lets you switch between Klipper instances and has a print farm overview. Its json printer list is "Recommended for Farms", because the default Moonraker-stored list "becomes impractical for printer farms". Fluidd can "manage multiple printers from one Fluidd install".

What doesn't scale is the decision behind each click. Which idle printer has a 0.4 mm nozzle and black PETG? Is there enough on that spool for a nine-hour plate? Has the last plate come off? You answer those once per print, in your head.

Starting prints on our seven took about 45 minutes every morning.

What Moonraker gives you, and what it doesn't

Moonraker is the API server next to Klipper. It listens on port 7125 by default.

Moonraker providesWhere
Print state, progress, temperatures, Klipper's last error/printer/objects/query
Upload a file and start it in one request/server/files/upload with print=true
Pause, resume, cancel/printer/print/pause, /resume, /cancel
A job queue for one instanceFIFO, per its docs
Filament usage sent to Spoolman, if you run it[spoolman] section

Two things are missing for a farm. The job queue's documentation describes an ordered list and says nothing about choosing between printers. And unless you add Spoolman, nothing in this table says what spool is loaded.

The options

All of these use Moonraker. We read their own pages on 31 October 2026. We didn't run the others ourselves, so their claims are theirs.

ToolWhat it isCostWho picks the printer
Mainsail, FluiddWeb interfaces for KlipperFreeYou
FDM MonsterSelf-hosted farm tool for Moonraker, OctoPrint, PrusaLink and BambuFree, AGPL-3.0Its docs describe a queue across printers and batch actions. We didn't test how it dispatches.
print-farm-managerSelf-hosted, multi-brand, SQLiteFree, MITIts scheduler assigns jobs to idle printers
SimplyPrintHosted, multi-brandFree for 2 printers, Print Farm $39.99 a month for 10, as listed on 31 October 2026Its queue and AutoPrint, by its own description
RackrewHosted, with a bridge on your networkFree for 2 printers, Workshop CHF 24 a month for 10The router

What each does well:

  • Mainsail and Fluidd are free and local, and you keep them whichever tool you add.
  • FDM Monster has over 9,000 commits on GitHub. It covers OctoPrint as well, says it can "control dozens of printers simultaneously", and offers a Raspberry Pi image. Its latest release was 2.1.1 when we looked.
  • print-farm-manager asks for a human sign-off on every finished print before the next job. Its release notes say it was "validated in production on a real 52-printer farm". It has no login by design, so keep it on a trusted network.
  • SimplyPrint connects through Moonraker's built-in simplyprint component, with no plugin. It has the most features here, including AI failure detection, filament inventory and maintenance, according to its own pages. If you need those or SSO, start there.

Rackrew is the cheaper hosted option at 10 printers, though that compares CHF with USD. It has no AI failure detection, you can't invite teammates yet, and it isn't self-hosted: files and the queue live with us. If you want everything on your own network, take one of the free tools.

Networking and fixed IP addresses

Reserve an address for every printer in your router on day one. A printer with a new address looks exactly like a dead one. See no Moonraker connection.

For Rackrew, the setup is one bridge in Docker on a Linux computer or Raspberry Pi, on the same network as the printers. Four details matter:

  • Reserve the bridge's address too. Every printer's moonraker.conf lists it under trusted_clients, and a new address means editing them all. A range such as 192.168.1.0/24 avoids that, but trusted clients get full API access, so keep it to your printer network.
  • No API key. Our driver connects as a trusted client and sends no key. With force_logins: True it gets refused once a Moonraker user exists.
  • Port 7125. The dashboard has no port field. Several Klipper instances on one host, or a Rinkhals build on another port, need port set through the API.
  • Cable or a strong signal. We allow five minutes for an upload, and we treat ten seconds of silence as offline. A slow Wi-Fi link is the usual cause of large files failing to start.

The full steps, including the camera, are in Klipper / Moonraker setup.

How filament checks work when Klipper doesn't know the spool

Our Moonraker driver reads no filament from the printer, so Rackrew's check rests on two things you can see.

What the file asks for. PrusaSlicer, OrcaSlicer and SuperSlicer write filament_type, filament_colour and filament used [g] as G-code comments. Rackrew reads them when you upload.

What you say is loaded. You register a spool with its net grams and assign it to the printer's slot. Each completed print subtracts the grams its file names.

The router compares the two. Material must match, colour must be the same hex value, and the spool must hold enough grams to finish.

SituationWhat happens
Spool assigned, too few gramsThat printer is skipped: not enough PLA on slot 0
No spool assigned, file names a filamentThat printer is skipped: slot 0 must hold PLA
File names no filament, such as from CuraNo filament check at all. The job runs.

Know these limits before you rely on it:

  • It is bookkeeping, not a sensor. If you swap a spool and don't tell Rackrew, it believes the old one is loaded. Failed and cancelled prints aren't subtracted either, so correct from a scale now and then.
  • Spoolman isn't connected. Rackrew doesn't read Moonraker's [spoolman] data, so Spoolman users would keep two records.
  • The spool form has a fixed list: PLA, PETG, ABS, ASA, TPU, PA and PC. A file asking for PETG-CF can't match a registered spool today.
  • Multi-material on Klipper isn't remapped. Unlike Bambu's AMS, our driver uploads the file as it is and sends no slot mapping. We haven't tested a Klipper multi-material unit, so treat each printer as one filament.

Sliced files and mixed fleets

If a file names a printer model and the printer has one set, they must agree, or the queue shows sliced for .... Klipper and Bambu printers share one queue in Rackrew. See how routing works, Bambu print farm and, for a Bambu-only room, Farm Manager vs Rackrew.

What it costs

Rackrew is free for 2 printers, without server slicing. Farm is CHF 14 a month for 5 printers. Workshop is CHF 24 for 10, then CHF 2 per extra printer, so 25 printers cost CHF 54 billed monthly. See pricing and the print farm calculator.

To try it, connect two printers for free, with no card, at app.rackrew.com/login.