{"id":13630165,"url":"https://github.com/ssbc/scuttle-shell","last_synced_at":"2025-07-06T23:04:35.954Z","repository":{"id":32661040,"uuid":"139076956","full_name":"ssbc/scuttle-shell","owner":"ssbc","description":"A system tray app for running Secure Scuttlebutt and providing sbot features to your local system","archived":false,"fork":false,"pushed_at":"2022-12-08T12:09:23.000Z","size":2686,"stargazers_count":55,"open_issues_count":17,"forks_count":7,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-06-09T16:18:50.299Z","etag":null,"topics":["nodejs","npm","scuttlebutt","securescuttlebutt","ssb","systray"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ssbc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-28T23:11:15.000Z","updated_at":"2024-11-30T05:57:29.000Z","dependencies_parsed_at":"2023-01-14T21:51:47.271Z","dependency_job_id":null,"html_url":"https://github.com/ssbc/scuttle-shell","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ssbc/scuttle-shell","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbc%2Fscuttle-shell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbc%2Fscuttle-shell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbc%2Fscuttle-shell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbc%2Fscuttle-shell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ssbc","download_url":"https://codeload.github.com/ssbc/scuttle-shell/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbc%2Fscuttle-shell/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260953051,"owners_count":23087968,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nodejs","npm","scuttlebutt","securescuttlebutt","ssb","systray"],"created_at":"2024-08-01T22:01:32.441Z","updated_at":"2025-07-06T23:04:35.938Z","avatar_url":"https://github.com/ssbc.png","language":"JavaScript","readme":"![Hermie The Crab](/icon.png)\n\n# Scuttle Shell\n\nThis is a [Secure Scuttlebutt](http://scuttlebutt.nz) system tray application. It provides an always-running _sbot_ for your local system.\n\n## Dependencies\n\nYou must have [Git](https://git-scm.com) and [Node](https://nodejs.org) installed.\n\n## Install globally\n\n```\n$ npm install -g scuttle-shell\n```\n\nor if you cloned this repo (run from the repo folder itself):\n\n```\n$ npm install -g\n```\n\nYou can run the app by executing `scuttleshell` on your terminal.\n\n## Using it programmatically\n\nRight now, there is only one feature exported by the `scuttle-shell` module which is the ability to start a server. Example:\n\n```\nlet scuttleshell = require(\"scuttle-shell\")\n\nconsole.log(\"Starting sbot, quitting after 30 seconds\")\nscuttleshell.start()\n\nsetTimeout(scuttleshell.stop, 30000)\n```\n\n## API\n\n### `start(customConfig, donecb)`\nThe `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.\n\nIn the custom config, you can only pass _appname_ and _plugins_. Other fields are ignored.\n\nThe callback receives no parameter.\n\n### `stop(done)` \nThe `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.\n\n### `getConfig()`\nThe `getConfig()` function is a synchronous function that returns an object contained the current configuration. The object has the following shape:\n\n```\n{\n    type: \"config\",\n    keys: \"\u003cstring\u003e\",\n    manifest: \"\u003cobject\u003e\",\n    remote: \"\u003cstring\u003e\n}\n```\n\nIf there is an error getting the config, the returned object will look like:\n\n```\n{\n    type: \"error\",\n    msg: \"\u003cstring\u003e\n}\n```\n\n## Setup\n\nThis application is built with [NodeJS](https://nodejs.org). To set it up run:\n\n```\n$ npm install\n```\n\nThis should set it up. If anything fails you can check your setup with\n\n\n### Plugins\n\nscuttle-shell supports mutliple ways to extend the sbot that it runs with pluigns (like [ssb-chess-db](https://github.com/Happy0/ssb-chess-db) or [ssb-query](https://github.com/dominictarr/ssb-query)).\n\nFirst of all, it supports and loads the plugins that were installed by running `sbot plugins.install ...`.\nThese are stored under `$HOME/.ssb/node_modules`.\n\nAdditonally, 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.\n\nAlternativly 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.\n\nIf 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.\n\n```json\n{\n    'plugins': ['path/to/plug1','path/to/plug2','path/to/plug3']\n}\n```\n","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssbc%2Fscuttle-shell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fssbc%2Fscuttle-shell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssbc%2Fscuttle-shell/lists"}