Skip to content
A common interface for multiple 3D printers
Python JavaScript CSS Shell G-code TSQL Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Karmen - monitor and manage your 3D printers

Documentation Status Build status Gitter chat

Karmen aims to give its users a single place for monitoring and managing multiple 3D printers. While existing solutions such as Octoprint excel in controlling a single printer, there does not seem to be an open source platform for a multi-printer setup or even a large scale printer farm.

Our solution is a perfect fit for a shared makerspace, small batch part factory or a public school that offers multiple printers to various users.

Contributing and support

If you would like to take part in this project, hit us up on or leave us a note on Gitter. You can read more in our contributing rules.

If you are interested in a more in-depth documentation, go visit our docsite.

Installation and usage

Check our documentation for up to date instructions.


While it is possible to run both the Python backend and Javascript frontend as standalone projects, the most comfortable way is again with docker compose.

$ git clone && cd karmen/ # get the repo
$ mkdir tmp && docker-compose up --build
# GO VISIT http://localhost:3000/

The network autodiscovery via ARP does not work at all in the dev mode. The mDNS resolution also does not work in the dev mode due to the networking configuration. (You can enable these two features by altering the network settings of the containers, check docker-compose.release.yml for inspiration).

On the other hand, two fake virtual printers are automatically added to your envirnoment, so you have a few things to play with.

Note: If something suddenly breaks within this setup, try to clean docker with docker system prune, it might help.

Versioning and releases

If you are making a new release, you need to tag this repository and Travis does the rest. You also want to bump the version numbers in the appropriate places in source code, such as package.json, Python modules etc. That's exactly what the script does. So the release procedure would be:

$ VERSION=1.2.3
$ python $VERSION
$ git add src/ docs/ && git commit -m "Version $VERSION" && git tag "v${VERSION}"


All of the code herein is copyright 2019 Fragaria s.r.o. and released under the terms of the GNU Affero General Public License, version 3.

You can’t perform that action at this time.