node package manager
Stop wasting time. Easily manage code sharing in your team. Create a free org »



The remoteStorage core from

Build Status devDependency Status Code Climate


    //set up the remoteStorage server instance: 
    var RemotestorageServer = require('remotestorage-server'),
      specVersion = 'draft-dejong-remotestorage-02',
      tokenStore = { _data: {}, get: function(username, token, cb) {
        cb(null, this._data[username+':'+token]);
      }, set: function(username, token, scopes, cb) {
        this._data[username+':'+token] = scopes; cb(null); } },
      dataStore =  { _data: {}, get: function(username, key, cb) {
        cb(null, this._data[username+':'+key]);
      }, set: function(username, key, buf, cb) {
        this._data[usernae+':'+key] = buf; cb(null);
    var serverInstance = new RemotestorageServer(specVersion, tokenStore, dataStore);
    //set up a https server: 
    var fs = require('fs'),
      https = require('https'),
      httpsConfig = {
        key: fs.readFileSync('./tls.key'),
        cert: fs.readFileSync('./tls.cert'),
        ca: fs.readFileSync('./ca.pem')
    //add access tokens (you would typically do this from an ajax call in your OAuth dialog): 
    tokenStore._data['me:SECRET'] = serverInstance.makeScopePaths(['tasks:rw', 'contacts:r']);
    tokenStore._data['me:GOD'] = serverInstance.makeScopePaths(['*:rw']);
    //serve storage: 
    //get the link for including in your webfinger record: 
    var link = remotestorageServer.getWebfingerLink('https', '', 8000, 'me', '');

You will also need:

  • a webfinger server, serving your webfinger record on path /.well-known/webfinger on port 443 (or on port 80 when testing on localhost).
  • an html page which serves as an OAuth dialog

See for an examples of both.