Mainsail CNC Pendant for Klipper

I have some CNC background from 20 years back but am currently most familiar with Klipper as ran on 3D printers. Was a natural choice for me but after committing I couldn’t find a CNC interface I liked so me and my new AI friend got to work. I’m not a developer but I think it’s available on Github… input, suggestion & advice appreciated…

The AI generated description:

Mainsail CNC Pendant — an Android-friendly Klipper interface (early LowRider V4 preview)

I’ve been working on making Mainsail feel more natural for CNC use on my LowRider V4. It started with work-light controls and grew into a separate CNC Pendant page. The goal: your phone becomes your CNC pendant.

Standard Mainsail remains available. The pendant works in a PC or phone browser, and there’s an Android app with screen-awake support. The app displays the page hosted on the Pi, so most interface updates don’t require reinstalling it.

Project, screenshots and documentation:

Android demonstration:

Current features include:

  • Compact XY/Z jogging, coarse/fine increments, machine/work coordinates and travel ranges.

  • Shared PC/Android settings, including millimeters, centimeters and useful inch jog increments.

  • Safe-Z controls, a below-safe-height jog-speed cap and configurable keep-out areas for pendant jogging.

  • A separate running screen, jogging while paused, and verified, confirmed Resume.

  • Background scanning of supported G-code before Start, checking programmed travel against machine limits and current work offsets.

  • Full-screen toolpath viewing, work-light controls, idle-stepper reminders and configurable automatic stepper disable.

This is early days. It grew from brainstorming and hands-on testing on my machine. ChatGPT / OpenAI Codex did most of the software implementation, automated tests and documentation. I supplied the ideas, CNC workflow and physical testing.

It’s an independent project—not an official Mainsail, Klipper or V1 Engineering release—and not a universal one-click installation yet. The repository includes a webpage installer with backup/uninstall support, but the complete setup also requires Moonraker components and carefully reviewed Klipper macro changes. An AI implementation handoff is linked from the README.

The reference remains LowRider-specific in places, particularly homing and dual-motor recovery. Every machine needs individual review and testing. Travel verification doesn’t certify clamp or cutter clearance, and software E-stop doesn’t replace a physical stop. Optional individual-motor recovery is Cartesian-only.

I’m a GitHub newcomer and would love feedback, pull requests and help making this a useful Klipper CNC interface. Help with installation, compatibility and testing on other machines would be particularly welcome.

I’ll link this thread from my build thread so the software discussion can stay together here.

I too am a cnc klipper user. I made a bluetooth pendant with a wii remote, a bluetooth pendant with a switch remote, and i currently have an original nes controller modified with a raspberry pi to be used as a pendant, but typically use my phone or most often the pc mouse next to the system to run it. Remote commands on klipper over the network are pretty straight forward i have found.

As one if the few other cnc klipper operators, I plan to try your pendant app. Thanks for sharing it.

A quick update: this has grown quite a bit since the original post.

To be perfectly honest, the project may currently resemble more of an active construction site than it did when I first posted it. We have been adding features quickly, testing them on my LowRider, and gradually turning the original pendant experiment into a more complete Klipper CNC workflow.

One of the biggest additions since the original post is the Fusion integration.

Because Fusion Personal/Hobby does not output true rapid moves, the custom post identifies eligible non-cutting travel moves while preserving the cutting and plunge feeds. The Pendant can then preview those changes and create a separate optimized copy with faster XY and Z travel rates. This does not unlock Autodesk’s rapid-move feature or modify the original file—it provides a reviewed workaround that restores practical rapid-travel behavior for Hobby users.

Fusion jobs can also be posted as separate one-tool stages and then reviewed, reordered and consolidated across manual tool changes. The resulting prepared program retains the tool identities, operations and deliberate tool-change pauses, while preserving the original posted files. Tool definitions are checked, and a printable setup sheet can be generated before machining.

Other recent additions include:

  • Fusion posting directly into a verified CNC Inbox

  • Multi-stage and multi-tool project preparation

  • Tool-change Resume checks

  • Tool-definition review and printable setup sheets

  • Better running-speed, motion and job-status information

  • Chip-load guidance

  • Configurable machine, spoilboard or saved work coordinates after homing

  • Endstop repeatability and hysteresis testing

  • Hardware-health monitoring groundwork

  • Dedicated Android and Windows pendant interfaces. Klipper sessions are no longer lost in browser sessions!

There are now quite a few safety checks around file changes, machine limits, work offsets, job state and tool changes. That also means installation is not yet a polished one-click experience, and some features remain specific to my LowRider V4 configuration. Please treat it as an actively developed reference project rather than finished CNC-control software.

The GitHub repository and README have just been brought up to date:

The latest catch-up commit is here:

Anyone running Klipper on a CNC is very welcome to take a look. Feedback about the workflow, installation, compatibility, unsafe assumptions, or features that would make it useful on another machine would be greatly appreciated.

@orob, I would be particularly interested in what feels natural or awkward compared with the phone, mouse and physical pendants you already use.

I have an android phone so ill check it out… Next week likely. Working on a 3d print halloween project, but i have a cribbage board to make so i hope to use your pendant for that.

I have not looked in detail yet, but my first question is where do my custom macros go on the pendant? I use a macro for probing z and zeroing the x/y position for workpiece positioning after squaring the system.

One thing that would be super helpful would be to record the position in the log when the x/y are zeroed, but that is likely out of scope for this project. I usually pencil it on the spoil board in case the system has to be resquared and then rezeroed.

Some action shots from tonight’s test…