Simple graph storage designed for universal interoperability
CoffeeScript JavaScript
Latest commit 7cd79cf Jan 7, 2017 @harlantwood harlantwood 0.6.0



Nodesphere is an interchange format for node networks. It has three primary objectives:

  1. Create interoperability among graph visualization interfaces
  2. Provide adaptors to connect these interfaces to personal data ecosystems, including social network data, online drives, and ultimately, any public or private data
  3. Abstract data storage and retrieval, allowing transitions from traditional server & database systems toward secure, distributed public and private storage, as these systems become practical and performant


Everything we want to share is a graph, which can be seen as a group of knowledge nodes. We think of this as a "sphere" of nodes; thus nodesphere. Nodesphere is designed to help enable the curation, sharing, visualization, and navigation of all your graph data.


const nodesphere = require('nodesphere')

IPFS (InterPlanetary File System)

nodesphere.adaptor.Ipfs.create({protocol: 'http', host: '', port: 80})
.then((ipfs) => {
  return ipfs.fetch({rootNodeId: 'QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr'})
}).then((sphere) => {

// prints something like:
// {
//   nodes: {
//     QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr: {},
//     QmeJTXoV3NeYjScPNAbzk81z9qa7kgb91AnxTgQicpGQXs: { name: '2010', size: 46656, ipfsType: 1 },
//     QmYg9SGT2qBu8BL7NbbT3Wzh1CXyJVGSMFuRLPcLquRhmX: { name: 'index.html', size: 134539, ipfsType: 2 },
//     ...
//   },
//   edges: {
//     'QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr -> QmeJTXoV3NeYjScPNAbzk81z9qa7kgb91AnxTgQicpGQXs': { start: [Object], end: [Object] },
//     'QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr -> QmYg9SGT2qBu8BL7NbbT3Wzh1CXyJVGSMFuRLPcLquRhmX': { start: [Object], end: [Object] },
//     ...
//   }
// }

Other Examples

For examples of usage in both Node.js and browser, see:

You can also see examples running live in the browser:

These are intentionally written in simple JS directly in the page source.

Project Genesis

Nodesphere comes from Enlightened Structure and Superluminal ⨕ Systems.

Nodesphere is being developed primarily in the context of the Core Network project.


Build Status

Nodesphere is currently pre-alpha, and things are likely to change. We don't recommend you use it in production yet.

Nodesphere had a complete rewrite on a fresh branch with a new history as of v0.4.0. The older version can be found on the 0.3.x tree.

In the browser

If you are creating a client side application using Nodesphere, consider using polyfills to ensure maximum browser compatibility. For example, include this line before all other javascript tags:

<script src="//"></script>

We build with Webpack. Browserify or similar should work fine too.