node.js module to elect a master peer in a distributed system
Latest commit c8cbe0d Apr 27, 2015 Lars Jacob version 0.2.3
Failed to load latest commit information.
.gitignore first commit Jun 11, 2013
LICENSE first commit Jun 11, 2013 Removed code and added reference to file Apr 22, 2014
example.js Fixed ids in example Apr 22, 2014
index.js Merge branch 'watchdog/init' Apr 27, 2015
package.json version 0.2.3 Apr 27, 2015


node.js module to elect a master peer in a distributed system. This module uses the Bully Algorithm for the election process. Unresponsive/offline peers will be recognized through heartbeat timeouts.


Install via npm:

npm install bully

Include in your project

var Bully = require('bully');

var opts = { id: "id", /* unique identifier of this peer */
             peers: [], /* event emitter instances of other peers */
             me: me /* event emitter instance of local peer */

var bully = new Bully(opts);

bully.on("master", function () {
    console.dir('I am now the master');
bully.on("stepped_down", function () {
    console.dir('Unfortunately I had to step down from my responsibilities');

Adding a new peer

var EventEmitter = require('events').EventEmitter;

var peer = new EventEmitter(); = 'anoter_unique_id';


Remove peer


Error handling

bully.on("error", function (err) {
    // handle error here


  • Unknown Peer: triggered once a message is received from an unknown


See example.js. Run with full debug information as follows:

DEBUG=bully npm test