Hermie The Crab

Scuttle Shell

This is a Secure Scuttlebutt system tray application. It provides an always-running sbot for your local system.


You must have Git and Node installed.

Install globally

$ npm install -g scuttle-shell

or if you cloned this repo (run from the repo folder itself):

$ npm install -g

You can run the app by executing scuttleshell on your terminal.

Using it programmatically

Right now, there is only one feature exported by the scuttle-shell module which is the ability to start a server. Example:

let scuttleshell = require("scuttle-shell")

console.log("Starting sbot, quitting after 30 seconds")

setTimeout(scuttleshell.stop, 30000)


start(customConfig, donecb)

The start() function is used to launch scuttle-shell. You can pass a custom configuration object as the first parameter and a callback to be triggered once the shell starts.

In the custom config, you can only pass appname and plugins. Other fields are ignored.

The callback receives no parameter.


The stop() function is used to stop scuttle-shell. It will close the tray application and also stop sbot. You can pass a callback to be triggered after it stops everything.


The getConfig() function is a synchronous function that returns an object contained the current configuration. The object has the following shape:

    type: "config",
    keys: "<string>",
    manifest: "<object>",
    remote: "<string>

If there is an error getting the config, the returned object will look like:

    type: "error",
    msg: "<string>


This application is built with NodeJS. To set it up run:

$ npm install

This should set it up. If anything fails you can check your setup with


scuttle-shell supports mutliple ways to extend the sbot that it runs with pluigns (like ssb-chess-db or ssb-query).

First of all, it supports and loads the plugins that were installed by running sbot plugins.install .... These are stored under $HOME/.ssb/node_modules.

Additonally, you can either pass the file paths to the API constructor by adding a plugins field to the object you pass to .start(). Check out examples/launch_sbot_custom_plugin.js to see it in action.

Alternativly you can use the command-line flag of scuttleshell, named --extra-plugins. i.e. scuttleshell --extra-plugin path/to/plugin1 --extra-plugin path/to/plugin2. Please note that these are not installed or persisted, you need to take care of that.

If you don't want to store them in the $HOME/.ssb folder, there is also the option to create a scuttleshell.json file next to your custom scuttle-shell and set a plugins array inside it.

    'plugins': ['path/to/plug1','path/to/plug2','path/to/plug3']

results matching ""

    No results matching ""