Back to rankings

purpleidea/mgmt

Gomgmtconfig.com

Next generation distributed, event-driven, parallel config management!

golanggoconfiguration-managementconfig-managementdevopsetcddistributed-systemsgraph-theorychoreography
Star Growth
Stars
4.3k
Forks
353
Weekly Growth
Issues
65
2k4k
Sep 2015Apr 2019Dec 2022Jul 2026
ArtifactsGo Modulesgo get github.com/purpleidea/mgmt
README

mgmt: next generation config management!

mgmt!

Go Report Card Build Status GoDoc Matrix Support

[!TIP] Introductory guide now available!

[!TIP] Resource reference now available!

[!TIP] Function reference now available!

About:

Mgmt is a real-time automation tool. It is familiar to existing configuration management software, but is drastically more powerful as it can allow you to build real-time, closed-loop feedback systems, in a very safe way, and with a surprisingly small amount of our mcl code. For example, the following code will ensure that your file server is set to read-only when it's friday.

import "datetime"
$is_friday = datetime.weekday(datetime.now()) == "friday"
file "/srv/files/" {
	state => $const.res.file.state.exists,
	mode => if $is_friday { # this updates the mode, the instant it changes!
		"0550"
	} else {
		"0770"
	},
}

It can run continuously, intermittently, or on-demand, and in the first case, it will guarantee that your system is always in the desired state for that instant! In this mode it can run as a decentralized cluster of agents across your network, each exchanging information with the others in real-time, to respond to your changing needs. For example, if you want to ensure that some resource runs on a maximum of two hosts in your cluster, you can specify that quite easily:

import "sys"
import "world"

# we'll set a few scheduling options, and request each node be scheduled:
schedule "mygroup42" {
	strategy => "rr",
	max => 2,
	ttl => 10,
}

# read the (changing) scheduled result stream:
$set = world.schedule("mygroup42")

if sys.hostname() in $set {
	# use your imagination to put something more interesting right here...
	print "i got scheduled" {} # this will run on the chosen machines
}

As you add and remove hosts from the cluster, the real-time schedule function will dynamically elect up to two hosts from the available pool. These specific functions aren't intrinsic to the core design, and new ones can be easily added.

Please read on if you'd like to learn more...

Community:

Come join us in the mgmt community!

Medium Link
Website https://mgmtconfig.com/
Matrix #mgmtconfig on Matrix.org
Mastodon #mgmtconfig
Mailing list looking for a new home, suggestions welcome
Support m9rx.com for enterprise products and services

Status:

Mgmt is a next generation automation tool. It has similarities to other tools in the configuration management space, but has a fast, modern, distributed systems approach. The project contains an engine and a language. Please have a look at a video or blog post.

Mgmt is over ten years old! It is very powerful today, and has a solid foundation and architecture which has been polished over the years. It's used in production with a growing number of both corporate and individual users. Interested parties should start with the official website.

Sponsors:

Mgmt is generously sponsored by:

m9rx corporation

Mgmt received a generous grant from:

nlnet foundation

Please reach out if you'd like to sponsor!

Documentation:

Please read, enjoy and help improve our documentation!

Documentation Additional Notes
quick start guide for everyone
introductory guide for everyone
resource reference for everyone
function reference for everyone
frequently asked questions for everyone
general documentation for everyone
language guide for everyone
function guide for mgmt developers
resource guide for mgmt developers
style guide for mgmt developers
contributing guide for mgmt contributors
service API guide for external developers
godoc API reference for mgmt developers
prometheus guide for everyone
development for mgmt developers
videos for everyone
blogs for everyone

Questions:

Please ask in the community! If you have a well phrased question that might benefit others, consider asking it by sending a patch to the FAQ section. I'll merge your question, and a patch with the answer!

Get involved:

Feel free to grab one of the issues if you're a first time contributor to the project or if you're unsure about what to hack on! Please get involved by working on one of these items or by suggesting something else!

Bugs:

Please set the DEBUG constant in main.go to true, and post the logs when you report the issue. Please include the full mcl code you used as well as the exact command you used to run it. Feel free to read my article on debugging golang programs.

Contributing:

We'd love to have your patches! Please send them our way!

On the web:

Blog posts and recorded talks about mgmt are listed here!

Happy hacking!

Related repositories
practical-tutorials/project-based-learning

Curated list of project-based tutorials

PythonPyPIMIT Licensetutorialproject
274.4k35.4k
avelino/awesome-go

A curated list of awesome Go frameworks, libraries and software

GoGo ModulesMIT Licensegolanggolang-library
awesome-go.com
178.7k13.4k
ollama/ollama

Get up and running with Kimi-K2.6, GLM-5.2, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models.

GoGo ModulesMIT Licensellamallm
ollama.com
176.5k17k
golang/go

The Go programming language

GoGo ModulesBSD 3-Clause "New" or "Revised" Licenseprogramming-languagelanguage
go.dev
135.3k19.3k
caddyserver/caddy

Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

GoGo ModulesApache License 2.0goweb-server
caddyserver.com
74.2k4.8k
unionlabs/union

The trust-minimized, zero-knowledge bridging protocol, designed for censorship resistance, extremely high security, and usage in decentralized finance.

Rustcrates.ioApache License 2.0blockchaincosmos
union.build
73.9k3.9k
moby/moby

The Moby Project - a collaborative project for the container ecosystem to assemble container-based systems

GoGo ModulesApache License 2.0dockercontainers
mobyproject.org
71.9k19k
nektos/act

Run your GitHub Actions locally 🚀

GoGo ModulesMIT Licensegithub-actionsgolang
nektosact.com
71.1k2k
traefik/traefik

The Cloud Native Application Proxy

GoGo ModulesMIT Licensemicroservicedocker
traefik.io
64.1k6.1k
santifer/career-ops

Open-source AI job search: scan job portals, score listings A-F, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Gemini, Codex, OpenCode…)

JavaScriptnpmMIT Licenseai-agentanthropic
career-ops.org
60.8k12k
pocketbase/pocketbase

Open Source realtime backend in 1 file

GoGo ModulesMIT Licenseauthenticationbackend
pocketbase.io
60.1k3.6k
rclone/rclone

"rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Azure Blob, Azure Files, Yandex Files

GoGo ModulesMIT Licensegolanggo
rclone.org
58.5k5.2k