decentralised Social Machine Virtual Machine (dSMVM) network - distributed social components for the Web
Switch branches/tags
Clone or download
Latest commit 9b05576 Apr 14, 2016
Type Name Latest commit message Commit time
Failed to load latest commit information.
www index Apr 14, 2016
.bowerrc bwerrr Jan 31, 2016
.gitignore first commit Jan 28, 2016 readme Apr 5, 2016
bower.json beginning Apr 12, 2016
config.sample.json smvm yay Apr 3, 2016
config2.sample.json config samples Mar 9, 2016
config3.sample.json config samples Mar 9, 2016
package.json smvm yay Apr 3, 2016
smvm-app.js a little closer Apr 4, 2016
smvm-auth.js request Apr 4, 2016
smvm-components.js readme Apr 5, 2016
smvm-crypto.js factoirng in and out Mar 9, 2016
smvm-net.js lots of little changes Apr 13, 2016
smvm-registry.js readme Apr 5, 2016 starts Jan 31, 2016

![sociam logo] (

the decentralised social machines project

The Decentralised Social Machines project is an effort to try to end-users and programmers to easily create social applications that, through transparency, decentralised trust, and partitioning, limits the propagation of sensitive information while providing powerful social computational primitives.

For a short introduction, take a look at this:

set up:

install bower dependencies

bower install

install npm dependencies

npm install

running your own mongo instance

  • install mongo
  • run
    mongod --replSet $HOSTNAME --dbpath <path to data dir>
  • start replication
    echo $HOSTNAME
    rs.initiate({_id: "<hostname>", members: [{_id: 0, host: ""}]})

fork a config, edit the parameters to point to your mongo instance

cp config.sample.json config.json

define your smvm in smvm-registry.js

Currently, to prevent code injection attacks, smvm uses modules defined that have to be pre-defined within smvm-registry. This is a limitation that will be removed later as we figure out how to use isolates / some other technique to ensure that stored code can be safely later executed. Let me know if you have ideas!

Use the examples in the registry to define some delicious SMOps and your new social machine.

edit the bootloader code in smvm-app.js

SMVM app is designed for demo purposes only so it manually creates specific social machines, to be refactored later. Edit the app.listen startup code to make it call your new social machine constructor (declared in smvm-registry) instead.


node smvm-app.js <config file>

You should see each of the ops come up with their own REST endpoints.

open up a browser and interact!

open a browser to http://localhost:3000 - now you should be able to use the window.posti() and window.geti() methods from the console. There will be a nice user interface coming soon :)