MCM - Machine Configuration Manager


Welcome to the home of Machine Configuration Manager (MCM)!

MCM manages the content of files and directories. Its tools are simple, fast and transparent. Its declarative language is simple and easy on the eye yet very powerful. One or more of the managed files is normally a script, which when executed lets MCM manage anything.

MCM is as clear and transparent and auditable as can be. The changes that MCM will perform are clear and transparent:



> mcm --help
Configure the specified files and directories
(both file/directory contents and permissions).
Changes to be made (if any) are displayed before they are enacted.

STARTINGPOINT	starting point (default = "Go.<lowercase_hostname>").
FIXTYPE		no|prompt|ifnew|yes|promptunlessonlyadditions

  -V            --version                      show version and exit
  -P PATH       --config-path=PATH             colon-separated list of directories holding configs (default = ".")
  -r DIRECTORY  --root=DIRECTORY               path to manage (default = "./build")
                --error-on-leftover-fragments  complain if there are fragments without corresponding files
  -f FIXTYPE    --fix=FIXTYPE                  whether to enact the changes (default="prompt")
  -d            --diff                         display differences (requires 'diff')
                --diff-command=COMMANDLINE     command to use when displaying differences (default="diff ORIGPATH -")
                --parse-only                   parse configuration only
  -c DIRECTORY  --compile-to=DIRECTORY         compile to a single MCM file
                --stdin                        read (initial) config from stdin
  -h            --help                         show this help and exit

More usage detail can be found in the mcm manpage. See also the manpages for the other mcm tools: mcmtags, mcm2html and commands2html.

Suggested Uses

MCM can be used in all sorts of places, for all sorts of things. For example:

See the articles for more.

The more important the system, the more important it is that configuration control be used. But more than that, the written configurations need to be really easy to review, to read, to understand and to refactor. MCM has been designed for this.

Installing MCM

MCM is written for Debian and friends, though should install and work on most Linux, Windows and OS X systems.

There are several ways to install MCM:

If you use vim, I heartily recommend using mcm.vim (distributed along with MCM) as its syntax highlighting gives instant feedback to prevent simple syntax errors. And it is nice to edit in colour too.


The articles are a good source of commented examples, the MCM texts for which are available for download. The MCM tests that are distributed with the MCM sources are illustrative too (mcmtestfiles.tgz).


Some tools/systems that can be used for similar purposes:


MCM is a creation of Anthony Doggett. Suggestions and encouragement (to are most welcome!