Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

ssb-client v2

Scuttlebot client.

Create an rpc connection to an sbot running locally.


var ssbClient = require('ssb-client')
var ssbKeys = require('ssb-keys')

// simplest usage, connect to localhost sbot
// this will cb with an error if an sbot server is not running
ssbClient(function (err, sbot) {
  // ...

// configuration:
var keys = ssbKeys.loadOrCreateSync('./app-private.key')
  keys,                // optional, defaults to ~/.ssb/secret
    host: 'localhost', // optional, defaults to localhost
    port: 8008,        // optional, defaults to 8008
    key:,      // optional, defaults to

    caps: {
        // random string for `appKey` in secret-handshake
        shs: ''

    // Optional muxrpc manifest. Defaults to manifest provided by server.
    manifest: {}

  function (err, sbot, config) {
    // ...


require('ssb-client') => createEasyClient

createEasyClient(cb(err, sbot))

Create a connection to the local ssb-server instance, using the default keys. Configuration and keys will be loaded from directory specified by ssb_appname. (by default ~/.ssb)

The manifest will be the manifest provided by that server.

Calling this without arguments is handy for scripts, but applications should use the clearer apis.

there is a legacy api, that makes things as "easy" as possible, by loading configuration and defaults. This is useful for scripts but applications should probably use

createCustomClient({keys, config, manifest, remote}, cb(err, sbot))

Connect to a specific server with fixed settings. All fields are mandatory.

createLegacyClient(keys, opts, cb(err, sbot))

Connect to a client with some custom settings.

opts supports the keys:

  • remote multiserver address to connect to
  • host, port, key (legacy) if remote is not set, assemble address from host, port, key.
  • manifest use a custom manifest.

If you need custom options, it's recommended to use the createCustomClient API instead, but this is still provided for legacy support.


See ssb-keys. The keys look like this:

    id: String,
    public: String,
    private: String,
    curve: 'ed25519'


caps.shs is a random string passed to secret-handshake. It determines which sbot you are able to connect to. It defaults to a magic string in this repo and also in scuttlebot

var appKey = Buffer.from(opts.caps.shs, 'base64')


MIT, Copyright 2015 Paul Frazee and Dominic Tarr


client library to scuttlebot


Code of conduct





No packages published