Free, open source · host hardware and optional services add costs
Our verdict
A sensible starting choice for a Klipper printer: Mainsail puts files, monitoring and configuration in one adjustable browser dashboard. Its convenience depends on a working Klipper and Moonraker setup; it does not configure the printer for you.
Best atKlipper users who want browser controls, configurable phone and desktop layouts, and troubleshooting tools together.
Less suited toOwners seeking wireless printing without a Klipper conversion, or businesses needing built-in operator roles and automatic farm-wide job assignment.
| Required software | Klipper plus MoonrakerMainsail is the browser interface; check your exact printer and control board before converting. |
|---|---|
| Computer requirements | A suitable host, usually running LinuxA phone or laptop opens the dashboard but does not replace the computer running Klipper. |
| Print files | G-code from a separate slicerUpload files or send them from a supported slicer; thumbnails need the correct slicer settings. |
| Dashboard layout | Separate phone and desktop arrangementsMove or hide panels to keep familiar controls and print checks within reach. |
| Troubleshooting | Configuration editor, bed mesh and object exclusionBed-mesh setup and correctly labeled objects are prerequisites for the corresponding tools. |
| Network access | Local use needs no cloud subscriptionAway-from-home access requires a separately configured VPN or supported remote service. |
Budget For The Host And Remote Access. Allow for a suitable host if your printer lacks one, an optional camera, and time to configure the printer. Camera viewing needs a working stream; timelapse needs an added component. Optional remote-access services can add ongoing costs.
| Mobile access | Browser-based; an installable web app needs a compatible HTTPS setup and browser. |
|---|---|
| Pause, resume and cancel | Behavior depends on printer-specific macros; check these routines during setup. |
| Multiple printers | Switch between reachable Moonraker connections and use the farm overview; the job queue belongs to each connected printer. |
| Configuration backups | Keep a known-working printer.cfg and its included files on another device before editing. |
| Updates | Moonraker supports the update manager; check release notes and the printer maker’s guidance for customized installations. |
Mainsail is a good choice if your printer runs Klipper and you want to send files, check a print and change settings from the same browser window. Its strongest feature is how much of your printer it puts within reach: temperatures, camera feeds, configuration files and buttons for your own routines. You can also arrange the dashboard differently on your computer and phone.
The catch is that you still need to understand your printer’s setup. Mainsail makes settings easier to reach, but it doesn’t choose the right settings for you. I recommend it for an existing Klipper setup or a planned Klipper conversion. If you just want wireless printing without replacing your printer’s control software, OctoPrint may be the more sensible starting point, provided it supports your printer.
Mainsail works with two other programs. Klipper is firmware: software that controls the printer’s movements and heaters. It divides its work between the printer’s control board and a host computer. Moonraker passes commands and information between Klipper and other software. Mainsail is the browser interface you click and read.
That distinction matters: installing Mainsail alone won’t make an ordinary printer faster or improve its print quality. Those changes depend on the printer, Klipper settings and tuning.
The host usually runs Linux and might be a Raspberry Pi or another suitable computer. Some printers already have a host built in. Your phone or laptop opens the dashboard; it doesn’t replace the computer running Klipper.
If Klipper and Moonraker already work, adding Mainsail is mostly an interface installation and connection task. Converting a printer is a bigger project. You need a configuration that matches its hardware and a supported way to install Klipper on its control board. Check the exact printer and board revision before starting, especially with a manufacturer’s customized Klipper system.
For a fresh host, MainsailOS packages the operating system, Mainsail, Moonraker and Klipper into an installation image for supported boards. It saves software setup work; you still have to configure the printer. KIAUH, an installation helper for Debian-based Linux systems, is another route. Manual and Docker installations suit people already comfortable maintaining Linux software.
Mainsail is free, open-source software. A host, camera or optional remote service can add costs, and setup takes time. The official GitHub project is mainsail-crew/mainsail, with releases and an issue tracker. Community help is available through Discord and GitHub Discussions; contributions include documentation and translations as well as code.
The update manager can handle supported software updates through Moonraker. Read the release notes and your printer maker’s guidance before updating a customized installation. A convenient update button doesn’t remove compatibility checks.
Your print starts in a slicer, the program that turns a 3D model into printer instructions called G-code. You can upload that file through Mainsail’s file manager, organize it into folders and select it when you’re ready to print.
You can also send files straight from a supported slicer. In PrusaSlicer, for example, the physical-printer settings offer Klipper (via Moonraker) as a host type. Enter the printer’s network address and test the connection. This avoids moving each file manually, but the destination still needs the correct printer profile and access settings. A successful upload doesn’t mean you sliced the model for the right machine.
Thumbnail previews make similar filenames easier to tell apart. They depend on your slicer including a supported preview image in the file, so a missing picture may need a slicer-setting change. Mainsail’s G-code viewer lets you inspect the planned paths and layers. It shows what the instructions tell the printer to do; a camera shows what’s actually happening on the bed.

After you select a file and start the job, the dashboard brings together printer state, progress, temperature readings and controls. You can compare the nozzle and bed temperatures with their targets and check elapsed time. Treat the remaining-time figure as an estimate. Layer information also depends on the information supplied by your slicer and configuration.
The useful part is having these checks next to your controls. If the wrong file is running, you can cancel from the interface. If you need to interrupt a job, pause and resume are available—but their behavior depends on the printer’s macros, which are saved command sequences. Where the nozzle parks, how filament retracts and what happens on cancellation need to be configured for your machine. Check those actions during setup, before depending on them midway through a long print.
You can move, hide or collapse dashboard panels. On a desktop, you might keep the temperature graph beside the camera. On your phone, put print status and the camera near the top and hide controls you rarely use. Mainsail lets you arrange these screens separately, so simplifying the phone view won’t change your desktop layout. You can also group frequently used macros, such as a printer-specific filament-loading routine, into their own panel.
For mobile use, think of Mainsail primarily as a website. It also supports an installable web app on compatible setups using an encrypted HTTPS connection; installation behavior depends on your browser. That isn’t the same as a separate native iOS or Android application. I’d use the phone for checks and familiar controls, and a larger screen for editing configuration files.
Camera viewing needs a working camera stream, commonly set up with Crowsnest. Timelapse recording adds another component, such as moonraker-timelapse. Neither happens simply because a camera panel appears in the interface.
Mainsail’s browser editor is one of its most useful features. You can open printer.cfg, the file holding your printer’s Klipper settings, without typing commands into a separate program. The editor uses colors to make the text easier to follow, but that doesn’t tell you whether a setting is right for your hardware.
Before changing configuration, download a known-working copy of printer.cfg and its included files to another device. If an edit causes a configuration error, read the message, undo the change or restore the relevant file, then restart Klipper. That depends on the host and Moonraker remaining reachable. If the host itself fails, you need a separate recovery route; copies stored only on its card won’t help.
The standard [include mainsail.cfg] setup supplies required sections and pause, resume and cancel macros. Check what your installation already provides before adding duplicate definitions. MainsailOS treats that supplied file as a read-only include; its documented customization uses variables in your own configuration. For example, you can change where the nozzle parks during a pause, using coordinates that suit your printer.
The Heightmap page helps explain uneven first layers by showing the bed mesh: measured height differences across the print surface. Check the numerical range as well as the picture, because the display scale can exaggerate small differences. The page needs Klipper bed-mesh configuration. It helps you investigate a tilted or uneven surface; it doesn’t straighten loose or bent hardware.

Object exclusion is useful when one of several parts fails. You can select that object and stop printing it while the others continue. Klipper needs [exclude_object], and the G-code needs correctly labeled objects. PrusaSlicer 2.7 or newer can emit native Klipper labels; other workflows may need Moonraker’s enable_object_processing setting and a fresh upload. Enabling the feature won’t repair an unprepared file already printing. With Cura and IdeaMaker, support material can continue after an object is excluded, so check what will remain on the bed.
On your home network, a locally installed Mainsail dashboard can communicate with your printer without a cloud subscription. Away from home, the connection is another job to set up. Saving a printer address or choosing a browser-based connection mode doesn’t make that address reachable over the internet.
A VPN can give your device a private route back to the printer’s network. Alternatively, a service such as OctoEverywhere or Obico can provide remote access through an added host component and service account. Choose based on whether you want the full interface, camera access or just notifications, and check the service’s current limits. Mainsail itself doesn’t include a universal remote-access account.
Use a VPN or a supported remote-access service instead of directly exposing Moonraker’s control port to the internet. Authentication is handled through Moonraker, which supports logins and API keys. Its trusted-client settings can also grant access based on a device’s network address. Don’t assume a login prompt protects every connection if your configuration already trusts a broad network range.
For several printers, Mainsail offers more than a list of bookmarks. You can add their Moonraker connections, switch between them and use the print farm overview, including configured camera feeds, to check several machines together. Each printer still needs its own working Klipper/Moonraker setup and a connection your browser can reach.

Mainsail also has a job queue backed by Moonraker. That queue belongs to the connected printer; it isn’t a shared pool that automatically sends work to whichever machine becomes free. Moonraker’s automatic transition to the next job is disabled by default. On an ordinary printer, you still need to remove the finished parts and prepare the bed before starting another job.
The same distinction applies to people. A centrally configured printer list can give users the same machines to choose from, but it isn’t a team-permissions system. If you need restricted operator roles, approval steps or automatic job assignment across a farm, those requirements call for additional management software. Mainsail fits personal multi-printer oversight better than a production business that needs those features in one package.
Fluidd is the closest alternative. It uses the same Klipper and Moonraker foundation and covers the same central tasks: file uploads, temperature checks, cameras, macros, configuration editing and object exclusion. Both let you customize their dashboards. Choose between them by how easily you can find the controls you use, rather than expecting a firmware or print-quality upgrade from switching interfaces.
If you already like Fluidd, there’s little reason to move just because a tutorial uses Mainsail. On a standard setup, the interfaces can use the same underlying printer configuration. You’ll still need to arrange the new dashboard and check its connection and macro requirements. Keep your working configuration instead of blindly adding both projects’ sample macro files.
Small differences can matter when something goes wrong. In a May 2025 Reddit report, an owner using Forge-X modified firmware tried object exclusion in both interfaces during a nine-part print. They initially preferred Mainsail’s graphical selection, then corrected their claim after learning Fluidd also allowed graphical selection through its G-code preview. That’s a useful example of a control being easier to discover for one person, rather than a feature being absent. The report didn’t identify interface versions.
Keep that 2025 experience separate from a current comparison. By the end of 2025, Mainsail had reached 2.16.1 and Fluidd 1.36.0. In September 2026, their latest stable releases are Mainsail 2.19.0 and Fluidd 1.37.4. Both continue to receive changes. Those updates don’t tell you which will be easier for you to use, faster on your computer or less demanding of its memory.
OctoPrint makes more sense if you want to keep supported existing firmware or rely on a particular plugin. Plugins are add-ons that give it extra features. It can work with many conventional printers without requiring a Klipper conversion. Check your exact model and connection support first. It also supports Klipper through a documented setup, so adopting Klipper doesn’t automatically force you to abandon OctoPrint.
For sending files, watching temperatures and pausing jobs, all three cover the basics. The bigger difference is how you add capabilities. Mainsail and Fluidd build around Klipper and Moonraker, with features such as bed-mesh viewing already integrated. OctoPrint offers an extensive plugin system, including options for bed visualization and specialized timelapses. Those plugins don’t transfer into Mainsail; check for an equivalent before migrating.
OctoPrint also offers user and group permissions, which deserve a closer look if several people share one printer. That doesn’t by itself make it a fleet scheduler. Its maintenance burden includes checking plugin compatibility, especially during the current transition: OctoPrint 2.0 is still a release candidate in early September 2026, and some plugins need updates for it. Choose a supported combination of OctoPrint and your essential plugins, rather than assuming every plugin works with every release.
I recommend Mainsail if you already use Klipper and want configurable browser controls with file handling, camera viewing and troubleshooting tools close together. Separate phone and desktop layouts are particularly useful if you check prints on one device and adjust settings on another. The farm overview also makes sense for keeping an eye on several reachable printers.

Its main drawback is the work behind those controls. Pause behavior, bed measurements, object labels and remote access all depend on how you’ve set up the printer and its software. If you’re comfortable learning that setup, Mainsail gives you a practical place to manage it. If you want those choices handled for you, changing the interface won’t remove them.
Keep Fluidd if it already does what you need. Consider OctoPrint if you want to retain compatible firmware or depend on its plugins and permissions. For a new Klipper installation with no existing interface preference, Mainsail is a sensible starting choice—just allow time to configure and check the printer before trusting the dashboard’s buttons.