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 Socket.io 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 !
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.
Live demo based on XMPP transport running on Amazon EC2.
First you can start a little DHT based on UDP transport using this command :
Then in an other terminal, start the web-based debug UI using the following Jake command and go to
See the wiki for more informations on how to launch your own DHT from scratch and on different environments.
Then run :
npm install kadoh# or: git clonecd kadohnpm 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
To build the source inside the
dist folder run one of the following Jake command :
This will build two versions of KadOH supporting different transports :
If you need to use KadOH in a node.js application, just add
kadoh in your package dependencies and use :
var kadoh = ;
KadOH is built on top of many open-source libraries and projects:
For the moment, tests are not running anymore.. But we hope that will be fixed as soon as we migrate to Mocha.
jake test:nodejake test:browser