Modules
Isaac Schlueter (creator of npm) puts it very well: agreement is very difficult, so limit the amount of agreement necessary.
i.e. write modules.
With less agreement required, it's easier to find points of agreement, and so we can have more agreements overall.
stack concept outline:
stack module outline:
Streams
pull-stream
: minimal composable streams with lazy back pressure and error propagationmutant
: lazy observables and reactive html elements
Modules
Database
ssb-db
: database of unforgable append-only feeds, optimized for efficient peer-to-peer replication
flumedb
: modular database where logs are moved with streamsflumelog-offset
: An flumelog where the offset into the file is the keyflumelog-memory
: A simple in-memory flumelogflumeview-query
: A flumeview with map-filter-reduce queriesflumeview-level
: A flumeview implemented on top of levelflumeview-reduce
: A flumeview into a reduce functionflumeview-hashtable
: A in-memory hashtable based flumeviewflumeview-search
: fulltext search as a flumeview
ssb-keys
: keyfile operations for ssbssb-feed
: create a secure-scuttlebutt feedssb-config
: standard configuration for ssbssb-ref
: check if a string is a valid ssb-reference
Crypto
chloride
: a cryptographic library for JavaScript environments, often wrappping libsodium.secret-handshake
: secure-channel based on a a mutually authenticating key agreement handshake, with forward secure identity metadata.private-box
: private message between two parties (with noto
field)
Server
ssb-server
: peer-to-peer log store used as a database, identity provider, and messaging system
muxrpc
: lightweight multiplexed rpcmdmanifest
: markdown manifests for mux rpc apismuxrpcli
: command-line interface to mux rpc serverssecret-stack
: connect peers to each other using secret-handshakesssb-validate
: validate ssb messages, completely functionallyssb-query
: a functional query engine, that operates over streams of js objects, and can be optimized via database indexes.ssb-blobs
: blob gossiping ssb-subprotocolssb-serve-blobs
: HTTP server to expose blobsssb-conn
: automatically manage connections with peersssb-replicate
: feed replication algorithmssb-friends
: the logic around who to replicate or notmultiblob
: a content-addressable-store that supports multiple hashing algorithmsssb-ooo
: out-of-order messagesssb-ebt
: replication with epidemic-broadcast-trees- pubs
easy-ssb-pub
: an easy-to-host server that runs an SSB "Pub"ssb-pub
: easily host your own ssb pub in a docker container
- rooms
ssb-room
: easily host your own ssb room server in a docker container
Client
patchcore
: a shared library to build ssb appsssb-client
: client library to scuttlebotssb-party
: get a scuttlebot client instance. if scuttlebot isn't running, start it in the background, and keep it running until all the clients have disconnected.ssb-notifier
: desktop notifications for secure-scuttlebutt activityssb-avatar
: query for the avatar that an ssb feed has been assignedssb-mentions
: extract the mentions in a ssb messagessb-markdown
: render ssb messages to markdown.ssb-sort
: sort a collection of messages by their causal order
Mobile
react-native-node
: Node.js background process for React Native apps, fundamental for running sbot on mobile devicesreact-native-ssb-shims
: basic shims required to insert modules from the SSB ecosystem into React Native appsreact-native-scuttlebot
: scuttlebot but for React Native applicationsreact-native-ssb-client
: like ssb-client, but runs in React Native appsreact-native-ssb-client-keys
: keyfile operations for SSB, to be used from the client-side of React Native apps
Git
git-ssb
: Git repos, issue tracking, and pull requests using SSBgit-remote-ssb
: A git remote helper for usingssb://
URLs with gitgit-ssb-web
: A web server for browsing repos locally
App helpers
ssb-schema-definitions
: Standardised schema definitions for ssb message types using is-my-json-validscuttle-shell
: A system tray app for running Secure Scuttlebutt and providing sbot features to your local systemscuttle-poll
: Create and vote on polls on ssbssb-poll-schema
: Gives parsers and validators for all known schema versions of ssb-poll messages
scuttle-gathering
: Returns a set of functions as an API for validating, building, publishing and reading records related to gatheringsscuttle-tag
: Tag reading and manipulation plugin for secure scuttlebutt.scuttle-blog
: A helper module which covers all your ssb blog related needs fromblog
datassb-meme
: Uses flumeview-search to build an index of all images names.ssb-chat-core
: All the core functionality used byscat
ssb-bot
: conversational user interfaces for Scuttlebutt :robot:
Dev helpers
scuttle-playbook
: A very opinionated but very convenient way to test Secure Scuttlebutt applicationsssb-utils
: CLI utilities for use with Secure Scuttlebutt (SSB)