node package manager


System configuration management framework


System configuration management framework (WIP) written with node.

$ npm install -g maru

To provision from a script simply pass it to maru(1), by default ~/.maru.js is used.

$ maru examples/github
    install : visionmedia-mon
    install : visionmedia-every
    install : visionmedia-mad
    install : visionmedia-burl
    install : visionmedia-watch
   complete : visionmedia-mad - 1s
   complete : visionmedia-burl - 1s
   complete : visionmedia-watch - 1s
   complete : visionmedia-every - 1s
   complete : visionmedia-mon - 1s

Maru supports packages straight from npm, for example of you invoke use('curl'), this effectively a short-hand syntax for use(require('maru-curl')()), where maru-curl is published as:

module.exports = function(){
  return {
    name: 'curl',
    which: 'curl',
    install: function(env, fn){
      env.exec('apt-get install curl -y', fn);

In your config script:


NOTE: maru assumes that the maru- prefix is always used in the npm name. For a list of available packages visit the wiki Packages page.

To enable debug output simply run with the DEBUG env variable set to "maru":

$ DEBUG=maru maru examples/apt
  maru jobs 3 +0ms
  maru use curl +3ms
  maru use git +0ms
  maru use make +0ms
  maru use gm +1ms
  maru use gs +0ms
  maru use ffmpeg +0ms