Mainsail
The web interface that turns a Klipper printer into something you drive from a browser tab. Clean, responsive and fast — it is one of the two front-ends the Klipper community actually uses.
If you run Klipper and want to control the printer from any device on your network, Mainsail is the front-end to reach for. It does not run the printer itself — it is a polished browser UI that talks to the machine through Moonraker. Pick it or Fluidd; the choice is largely taste.
What it is
Mainsail is a responsive single-page web application — built in Vue — that gives Klipper a graphical face. It does not speak to the printer directly. Klipper runs the motion and the heaters; Moonraker exposes that over an API; Mainsail is the browser client that consumes the API and renders a dashboard. Open it from a phone, tablet or desktop and you get the same interface.
The dashboard covers the day-to-day: temperature graphs, a live console, the G-code file list with an integrated viewer, manual movement and extrusion controls, webcam feeds, print history, and an update manager that keeps Klipper, Moonraker and Mainsail itself current. MainsailOS is a prebuilt Raspberry Pi image that bundles the whole stack — Klipper, Moonraker and Mainsail — so you can flash a card and skip the manual install.
Where it wins
- Responsive by design. The layout adapts cleanly from a desktop monitor down to a phone, so the printer is genuinely controllable from whatever is in your hand.
- Everything in one view. Temperatures, console, file management, G-code preview, webcam and history are all there without hunting through menus.
- Update manager. Klipper, Moonraker and the UI update from inside the interface — no SSH gymnastics for routine maintenance.
- MainsailOS shortcut. The prebuilt image gets a working Klipper server running on a Pi in minutes rather than an afternoon of manual setup.
- Open and self-hosted. GPL-3.0, served from your own Pi. No cloud account, no vendor lock-in, your printer stays on your network.
Where it still hurts
- It needs the full backend. Mainsail is only a face. Nothing works until Klipper and Moonraker are installed and configured — the UI is the easy part of a stack that demands a properly tuned
printer.cfg. - One of two, and they overlap. Mainsail and Fluidd cover almost the same ground. There is no clear winner — picking between them comes down to which layout you prefer, not capability.
- Not for stock factory firmware. If you are happy on a printer's bundled firmware and touchscreen, this is a different world entirely. The reward is real, but so is the commitment to the Klipper ecosystem.
The AI angle
Because Mainsail rides on Moonraker's HTTP and WebSocket API, the same surface that powers the browser UI is open to anything else — scripts, bots, dashboards and agents. That makes a Klipper machine remotely observable and controllable by code: an agent can query temperatures, watch print progress, trigger jobs or react to webcam frames through the API while a human uses Mainsail for the same printer. As LLM-driven assistants and vision-based failure detection mature, this API-first design is exactly the integration point they need.
Start here
- Read the docs at docs.mainsail.xyz — start with MainsailOS if you want the fast path.
- We ran it for real: ender-pi, a Pi 4 Klipper server for an Ender 3 V2, uses Mainsail as the control UI on the Pi — see github.com/2nth-ai/ender-pi.
- Pair it with Klipper and Moonraker; Fluidd is the alternative front-end if you prefer its layout.
- Source: github.com/mainsail-crew/mainsail.
- See where the UI sits in the bigger picture: the Klipper stack explained.