Spins up an empty, temporary ssb-server that stores data in your temp folder


var TestBot = require('scuttle-testbot')

var piet = TestBot()

piet.publish({type: 'test', content: "a test message"}, (err, msg) => {


  key: '%FQ2auS8kVY9qPgpTWNY3le/JG5+IlO6JHDjBIQcSPSc=.sha256',
  value: { 
    previous: null,
    sequence: 1,
    author: '@UreG2i/rf4mz7QAVOtg0OML5SRRB42Cwwl3D1ct0mbU=.ed25519',
    timestamp: 1517190039755,
    hash: 'sha256',
    content: { type: 'test', content: 'a test message' },
    signature: '0AxMJ7cKjHQ6vJDPkVNWcGND4gUwv2Z8barND5eha7ZXH/s5T0trFqcratIqzmhE3YJU2FY61Rf1S/Za2foLCA==.sig.ed25519' 
  timestamp: 1517190039758 


var TestBot = require('scuttle-testbot')

TestBot(opts = {})

Returns a ssb-server instance.

By default, CreateTestSbot deletes an existing database of the same name before starting.

Valid opts keys include:

  • name String (optional) (default: ssb-test + Number(new Date))
    • myTestName: Sets the database in /tmp/myTestName
  • keys String (optional) (default: scuttle-testbot generates a new set of random keys)
    • you can create your own keys with ssbKeys.generate()
  • startUnclean (default: false)
    • true: Don't delete an existing database before starting up.
    • this is useful if you want to test state after stopping and starting a server. In this case you need to set the name and keys options to be connecting to the same log


CreateTestSbot.use lets you add ssb-server plugins. use can be chained the same as the ssb-server api.


function Server (opts) {
  const stack = Testbot

  return stack(opts)

Testbot.replicate({ from, to, live, name }, done)

Replicates data from one testbot to another, which is sometimes needed when you have functions which are only triggered by another feedId, e.g. when I am added to a private group someone else started.


const piet = TestBot()
const katie = TestBot()

const content = {
  type: 'direct-message',
  text: 'oh hey'

piet.publish(content, (err, msg) => {
  TestBot.replicate({ from: piet, to: katie }, (err) => {
    katie.get({ id: msg.key, private: true }, (err, value) => {

      // should be same as content piet sent, if katie can decrypt



  • from SSB - an ssb instance to be replicated from. This will replicate only this feeds messages (not everything in log)
  • to SSB - an ssb instance being replicate to.
  • live Boolean (optional)- whether or not to keep replication running (default: false).
  • name Function (optional) - makes logged output easier to read by allowing you to replace feedIds with human readable names
      // example
      const name = (feedId) => {
        if (feedId === return 'piet'
        if (feedId === return 'katie'
  • done Function - an optional callback which is triggered when the replication is complete or if there is an error.
    • If live === true this will ony be called on an error. Signature done (err) { ... }


With npm installed, run

$ npm install scuttle-testbot


See Also



results matching ""

    No results matching ""