Status: DEV

Usage no npm install needed!

<script type="module">
  import openpeerRolodex from '';


Status: DEV

Rolodex for Open Peer

Having a distributed and secure communication system like Open Peer is quite useless if you have nobody to talk with.

This rolodex SDK supports the following:

  • Integration with passport for authentication with 120+ services.
  • Contact federation for any service with a contacts API (that we have a plugin for).
  • Q promise based AMD-compatible client API.
  • connect middleware to service client requests.
  • Contact information normalized to hCard properties.
  • Communication with services scheduled via kickq ( currently disabled due to kickq bug )
  • Contacts and service status cached in redis.
  • Easy horizontal round-robin scaling via shared-noting architecture (requires central redis).


cd example
make install
# Configure services in `rolodex.config.json` (see 'Configuration' below)
make run



npm install openpeer-rolodex
# Provision a Redis database

When you first run your application, required dependencies for any configured service will be automatically installed. You can also install these manually:

cd ./lib/plugin/<service>
npm install


  • Server-side - See ./example/server.js.
  • Client-side - See ./example/ui/index.html and ./example/ui/app.js.


For each service you want to integrate with you need to:

  1. Create an application on the service.
  2. Configure the service in rolodex.config.json.

The rolodex.config.json file must be structured as follows:

    "allow": {
        # Optional for cross-domain access.
        "hosts": [
    "db": {
        "redis": {
            "host": "<redis host>",
            "port": <redis port>,
            # The following are defaults and may be omitted.
            "password": "",
            "prefix": "rolodex:"
    "routes": {
        # The following are defaults and may be omitted.
        client: "/.openpeer-rolodex/client",
        auth: "/.openpeer-rolodex/auth",
        authCallback: "/.openpeer-rolodex/callback",
        logout: "/.openpeer-rolodex/logout",
        refetch: "/.openpeer-rolodex/refetch",
        services: "/.openpeer-rolodex/services",
        contacts: "/.openpeer-rolodex/contacts"
    "services": [
        // One or more of the service config objects below.


Create application here with callback URL http://localhost:8080/.openpeer-rolodex/callback/github.

    "name": "github",
    "passport": {
        "clientID": "<Client ID>",
        "clientSecret": "<Client Secret>"


Create application here with callback URL

    "name": "twitter",
    "passport": {
        "consumerKey": "<Consumer key>",
        "consumerSecret": "<Consumer secret>"


Create application here

    "name": "linkedin",
    "passport": {
        "apiKey": "<API Key>",
        "secretKey": "<Secret Key>"


Create application here

    "name": "facebook",
    "passport": {
        "appID": "<App ID>",
        "appSecret": "<App Secret>"