Skip to content
Simple graph storage designed for universal interoperability
CoffeeScript JavaScript
Branch: master
Clone or download
Latest commit 769523e Mar 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples use metamaps production site for example Dec 30, 2016
src Update Node constructor Mar 17, 2019
test Bugfix: Stop using edge start->end as edge ID Jan 7, 2017
.gitignore ignore .idea dir Dec 30, 2016
.npmignore Publish less to npm Mar 18, 2019
.travis.yml infrastructure Aug 24, 2015 verbiage Sep 23, 2016
package.json 0.6.12 Mar 18, 2019
webpack.config.js remove babel, seems to not be needed Apr 28, 2016
yarn.lock un-link lightsaber Mar 18, 2019



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.

You can’t perform that action at this time.