# Klippain: a generic Klipper configuration for 3D printers

> Klippain is a modular, heavily configurable Klipper configuration that spans Cartesian, CoreXY and CoreXZ machines, and it ships adaptive bed mesh, calibration helpers, input shaper workflows and vibration measurement scripts. It suits printer owners who want one maintained configuration across several machines, and it comes with a strict rule about where your own edits are allowed to live.

**Frix-x/klippain** — Generic Klipper configuration for 3D printers

- Repository: https://github.com/Frix-x/klippain
- Stars: 1,204 · Forks: 277
- Language: Shell
- License: GPL-3.0
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/frix-x-klippain

## What Klippain is, and what it is not

Klippain is a generic, modular and highly customizable Klipper configuration for 3D printers. The README calls it the pain-free recipe for french bread and butter Klipper configuration, and explains the name as a joke in which the pain in the name stands for bread, so there is no pain in this pain, only joy.

The important thing to establish is what kind of artefact this is. It is not firmware and it is not a printer model. It is a configuration, meaning the set of macros, templates and helper scripts that sit on top of a Klipper installation and turn a raw machine into something you can drive with a set of named commands.

That framing explains both the value and the constraint. The value is that somebody else has written the tedious parts, from bed meshing to input shaping to the calibration routines, and keeps updating them. The constraint is that those parts only work if your printer is described correctly in the configuration, so a first installation is a configuration exercise rather than a copy and paste.

The licence is GPL-3.0, the last push to the repository was on 2026-09-12, and the release history shows a steady but unhurried project, with v4.4.0-beta.1 from 2026-06-27, v4.3.1 from 2024-03-04 and v4.3.0 from 2024-02-27.

The repository layout matches the structure of the thing itself, with a config directory, a macros directory, a moonraker directory, a scripts directory, a user_templates directory for the MCU board templates, a tests directory, and an install.sh and uninstall.sh at the root.

## The machine coverage behind the generic claim

The claim of being generic is backed by a list of machines, and the list is the argument.

Klippain is designed for use on various machines such as Cartesian, CoreXY and CoreXZ, and it has been reported working correctly on the Voron V2.4, the Voron Trident, the Voron V0, the Voron SwitchWire, TriZero, VZbot, Ender5, Ender3 and Prusas.

Three motion systems in one configuration is not a small thing, because the differences between them are exactly the kind that break a macro. A bed mesh on a CoreXY is not the same operation as on a Cartesian machine, the kinematics differ, and the probe geometry is different. A configuration that handles all three is doing per-machine work in its templates rather than assuming one layout.

The mechanism for that is the templates. During installation you are prompted to select and install MCU board pin templates, and the README describes this as recommended for faster mcu.cfg setup, with the option of doing it manually later if you prefer. So the machine-specific facts live in a template you choose, and the generic behaviour lives in the shared code.

The consequence for you is that the configuration is only as good as its coverage of your machine. A printer in the list works out of the box, and a printer that is not in the list may need a template written for it, which is a contribution the project explicitly welcomes, since the README says to feel free to open an issue or a pull request for specific hardware device support.

## The feature set: meshing, calibration, input shaping and vibration

The features are described as custom features available out of the box, and the list is the reason to use this configuration rather than a plain one.

There is a full featured set of standard macros, so the everyday commands you would expect from a Klipper setup are present and consistent across machines. There is adaptive bed mesh, which is the part that matters most in practice, since a bed mesh is only worth anything if it is sampled densely enough in the regions you actually print in, and adaptive meshing samples more where it is needed rather than on a uniform grid.

There are custom printer calibrations, so the calibration procedures are part of the configuration rather than something you paste in from a forum post. There are automated input shaper workflows, which handle the measurement and the application of the shaper in one flow rather than as separate manual steps. And there are vibration measurement macros and scripts, which is the diagnostic layer underneath all of that, since you cannot shape what you have not measured.

The README defers to the features documentation for a detailed list and usage instructions, so the documentation directory, with features.md, configuration.md and overrides.md among its files, is the real reference and the README is the summary.

The repository also carries a scripts directory and an adxl_results directory, the latter being the place where accelerometer measurement output accumulates, which is a small detail that tells you the measurement workflow is a first class part of the project.

## Installing over SSH, and what the script does

The install path is a pipe over SSH, and it is worth reading what the script does before you run it.

The prerequisites are Klipper, Moonraker and a web interface already installed on the printer, and if you do not have them the README points at KIAUH for that step.

The install command is one line.

```bash
wget -O - https://raw.githubusercontent.com/Frix-x/klippain/main/install.sh | bash
```

The script does four things, according to the README. It backs up your old configuration, it downloads the repository to your Raspberry Pi home directory, it sets up Klippain in ~/printer_data/config, and it prompts you to select and install MCU board pin templates.

The backup is the part that makes the rest safe, and it pairs with the uninstall path later. The layout it creates is the one the configuration expects, with the config directory holding the shared configuration and the user_templates directory holding the board specific pieces you chose.

After installation, Klippain still needs a few steps to fit your printer, and those are the configuration guide in the documentation directory. The install gets the files in place, the guide is what makes the printer yours.

## The override rule, and why it exists

The README puts a warning in a block of its own, and it is the single most important thing to understand before you use this configuration.

The general rule to keep the auto-update feature working is never to modify Klippain files directly, but to add overrides as the documentation describes. And you can modify all the pre-installed templates in your config root folder, which are printer.cfg, mcu.cfg, variables.cfg and overrides.cfg, because they are preserved on update.

So the architecture is a two layer configuration. The Klippain files themselves are replaced wholesale when the project updates, and everything you need to survive that update has to live in the four templates in your own config root, which are yours and are kept.

The overrides file is where the customisation goes, and the documentation in the overrides directory explains the mechanism. The variables file is where the values that your machine needs are set, which keeps the difference between a Voron and an Ender in a value rather than in a fork of the code.

This is a deliberate trade. The alternative, editing the macros directly, produces a configuration that works until the next update and then silently loses the edit, which is a worse failure than a refused edit. The cost is that you have to learn one indirection before you can change anything, and the benefit is that the auto-update stays safe.

It also means Klippain is not a configuration you can shape arbitrarily. A macro whose behaviour you cannot reach through an override is a macro you cannot change without forking the project.

## Removing it, and the backups you keep

The uninstall path is as automated as the install path, which is a reasonable thing to expect from a configuration that rewrites your printer's config directory.

If Klippain does not suit your needs, or you installed it by mistake, the automated uninstall script removes all the specific Klippain files and configurations. During the uninstallation you are given an option to restore your previously backed-up configuration, which returns the printer to the state it was in before Klippain was installed.

```bash
wget -O - https://raw.githubusercontent.com/Frix-x/klippain/main/uninstall.sh | bash
```

The note underneath adds a useful detail, that all backups are preserved during the uninstallation process, so you can easily revert back at any time if you wish.

That is a good property for this kind of tool, because the failure mode of a configuration framework is precisely the machine that will not boot into a usable state. Being able to get back to the previous configuration in one command, with the backups left on disk afterwards, is what makes it reasonable to try a configuration you are not sure about.

The scripts are at the root of the repository, so a fork can modify them, and the tests directory in the repository is where the shell scripts are exercised, which matters more than usual for a configuration that ships as a pipe to bash over SSH.

## The alternative, and the terms of the project

The realistic alternative is a per-printer configuration of your own, or one supplied by the printer vendor or community, and the difference in approach is about who absorbs the work.

A bespoke configuration is exactly tuned to your machine and free of any conventions you do not want. It is also unmaintained, in the sense that the bed mesh workflow, the input shaper workflow and the calibration routines are yours to keep working as Klipper itself changes underneath you.

Klippain inverts that. You give up the ability to shape the internals directly, you learn the override indirection, and in exchange the routines are written once, tested by many people and updated as the ecosystem moves. The generic nature is what makes it possible, since a configuration that only works on one machine cannot be maintained by one person across a fleet.

The terms are the last thing to check. The project is GPL-3.0, and the repository carries the licence, a CHANGELOG.md, and a cliff.toml, which is the configuration for a changelog generator, so the release notes are generated from commit history rather than written by hand.

Funding and support are informal and personal. The README says the author strives to accommodate user requests that align with the configuration's design, invites issues and pull requests for hardware support and new features, and mentions buying a coffee or contributing to new hardware purchases. Contact is through the Voron Discord as the author named in the README, so the support channel is the community of one printer family rather than a help desk.

## Conclusion

Adopt Klippain if you own more than one printer or want a configuration that keeps receiving fixes, because one maintained set of macros covers Voron, Ender, Prusa and other machines and the install script handles the wiring into your printer data directory. Do not adopt it if you want to hand edit your configuration in place, because the project is explicit that its files must not be modified directly and that updates will overwrite them. Before you install, read the overrides documentation, since every customisation you need belongs in the four template files in your config root, and take note that the install script runs from a pipe over SSH.

## FAQ

### How do I install Klippain on my printer?

You need Klipper, Moonraker and a web interface already installed, and then you run wget -O - https://raw.githubusercontent.com/Frix-x/klippain/main/install.sh | bash over SSH. The script backs up your old configuration, downloads the repository, sets up Klippain in ~/printer_data/config and prompts you to select MCU board pin templates.

### Can I edit the Klippain macros directly?

No. The README states the general rule to keep the auto-update feature working is never to modify Klippain files directly, but to add overrides as the documentation describes. You may modify the templates in your config root folder, printer.cfg, mcu.cfg, variables.cfg and overrides.cfg, because they are preserved on update.

### Which printers does Klippain support?

It is designed for Cartesian, CoreXY and CoreXZ machines, and has been reported working correctly on the Voron V2.4, Trident, V0, SwitchWire, TriZero, VZbot, Ender5, Ender3 and Prusas. Support for other hardware can be requested through an issue or a pull request.

### How do I remove Klippain and get my old configuration back?

Run the uninstall script with wget -O - https://raw.githubusercontent.com/Frix-x/klippain/main/uninstall.sh | bash over SSH. It removes the Klippain files and offers to restore the configuration that was backed up during installation, and all backups are preserved during the uninstallation process.

## Sources

- [Frix-x/klippain on GitHub](https://github.com/Frix-x/klippain)
- [Issues](https://github.com/Frix-x/klippain/issues)
- [License: GPL-3.0](https://github.com/Frix-x/klippain/blob/main/LICENSE)
- [README](https://github.com/Frix-x/klippain/blob/main/README.md)
- [Releases](https://github.com/Frix-x/klippain/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/frix-x-klippain
