The Kademlia DHT in Javascript for Node.js and Browsers
JavaScript CSS Ruby
Latest commit 80fd755 Dec 8, 2013 @alexstrat alexstrat Merge pull request #67 from garyhodgson/master
removal of listeners before closing results in disconnect state not being set
Failed to load latest commit information.
UI Fixes Issue #63 (Ping bug in debug UI ?) #63 Oct 3, 2013
apps Add boilerplate app Nov 15, 2012
bin move cube into /statistics Jun 11, 2012
doc applying the cleanups to doc/ Feb 26, 2012
statistics/cube move cube into /statistics Jun 11, 2012
test add a keys method to VM Jun 25, 2012
.gitignore adding Gemfile.lock to gitignore Mar 28, 2012
.travis.yml Add node v0.8 to travis Jul 2, 2012
Jakefile Add boilerplate app Nov 15, 2012
LICENSE Update licence date Mar 16, 2012 Update README: link to wiki/Transport May 20, 2012
package.json Package name to lowercase + indexes Jun 11, 2012

KadOH - Javascript P2P framework

KadOH is a framework to build P2P applications for browsers and node.js. By implementing the basis of the Kademlia DHT, KadOH lets you build distributed web applications for mobile and desktop devices. With its flexible and extensible design, you can easily adapt KadOH to fit your needs. KadOH is available under the MIT License.

KadOH abstract many different transport protocols to provide P2P connections. In the browser we support XMPP over Bosh and shipped with a node.js router, and you can go for UDP and native XMPP in a node.js application. We plan to support WebRTC soon !

See the wiki for more informations ! Also take look at our report and be aware that this document may be outdated.

Acknowledgments — We would like to thank Dr. Tudor Dumitraş, who gave us the honor to work with him during our project and always made available his support.

Alexandre Lachèze and Pierre Guilleminot

See it in action

Live demo based on XMPP transport running on Amazon EC2.

Run it yourself

First you can start a little DHT based on UDP transport using this command :

bin/dht udp.default

Then in an other terminal, start the web-based debug UI using the following Jake command and go to localhost:8080 :

jake run:udp

See the wiki for more informations on how to launch your own DHT from scratch and on different environments.


Install KadOH

The only required dependency is node.js (version >= 0.6, but you clould try below..). Take a look at the official manual to install node on your system.

Then run :

npm install kadoh
# or: git clone
cd kadoh
npm install

You may also want to install the Jake module globally :

npm install -g jake

For Linux users, if the installation of KadOH's dependencies fails, you may need to install the libexpat-dev package. For Ubuntu/Debian users, run the following command :

sudo apt-get install libexpat-dev

Build and go


To build the source inside the dist folder run one of the following Jake command :

jake build

This will build two versions of KadOH supporting different transports :

  • SimUDP using
  • XMPP using Strophe.js for XMPP over Bosh


If you need to use KadOH in a node.js application, just add kadoh in your package dependencies and use :

var kadoh = require('kadoh');


KadOH is built on top of many open-source libraries and projects:


Build Status

For the moment, tests are not running anymore.. But we hope that will be fixed as soon as we migrate to Mocha.

jake test:node
jake test:browser