Symbiosis of SSB, key-value store and web server.
Go to file
glyph 6e5c017dd7 Merge pull request 'Remove uri_encode and use Tera filter instead' (#6) from remove_uri_dependency into main
Reviewed-on: #6
2022-09-09 10:09:17 +00:00
screenshots add ui screenshot to readme 2022-08-25 12:21:50 +01:00
src remove uriencode and use tera filter instead 2022-09-09 11:06:54 +01:00
static small indentation tweak 2022-09-06 08:48:47 +01:00
templates remove uriencode and use tera filter instead 2022-09-09 11:06:54 +01:00
.gitignore update ignore list to hide video thumbnail 2022-09-06 08:45:01 +01:00
Cargo.lock remove uriencode and use tera filter instead 2022-09-09 11:06:54 +01:00
Cargo.toml remove uriencode and use tera filter instead 2022-09-09 11:06:54 +01:00 add link to demo video 2022-08-26 10:31:50 +01:00


Symbiosis of SSB, key-value store and web server.


lykin is a tutorial application funded by a Secure Scuttlebutt (SSB) community grant. It is intended to showcase one way in which an SSB application can be written using the golgi client library. The application is not intended for widespread or longterm use and will not be maintained as such; it is purely for demonstration purposes. Anyone is free to fork the repository and use it as the basis for their own application.

If you'd like to learn how lykin works, or how to build your own simple Scuttlebutt client application, please read the lykin tutorial series. You might also like to watch the lykin demonstration video.

Screenshot of a web UI with a green navigation topbar, a blue list of peers, an orange list of posts and a yellow post content view.


Prerequisites: a running instance of go-sbot (see the installation guide).

Download, build and run lykin.

git clone
cd lykin
cargo build --release
RUST_LOG=lykin=info ./target/release/lykin

Open localhost:8000 in your browser.

Note: by default, lykin attempts to connect to the go-sbot instance on port 8021. Set the GO_SBOT_PORT environment variable if you wish to use another port.


lykin presents an email inbox-like UI and functions as a Scuttlebutt reader application. It allows the user to subscribe to peers and read the root posts of those peers. Individual posts can be marked as read or unread.

A summary of the features:

  • Subscribe to a peer (follow)
  • Unsubscribe from a peer (unfollow)
  • List subscribed peers
  • List root posts for each peer
  • Mark a post as read
  • Mark a post as unread
  • Fetch new posts


lykin has been built with the following components:

  • tera : templating engine
  • rocket : web server
  • golgi : Scuttlebutt client library
  • sled : transactional embedded database (key-value store)
  • sbot : Scuttlebutt server (in our case, go-ssb)


This project is documented in the form of code comments and Rust doc comments. In order to generate and read the doc comments in a web browser, run the following command in the lykin repo:

cargo doc --open --no-deps


lykin emits logs at three levels: debug, info and warn. The log level can be set using the RUST_LOG environment variable.

For example, emit only info logs:

RUST_LOG=lykin=info ./target/release/lykin

It is also possible to emit logs solely from a single module of lykin.

For example, emit only warn logs from the db module of lykin:

RUST_LOG=lykin::db=warn cargo run


I am grateful to the Butts who voted to fund this work, all contributors to the SSBC and Erick Lavoie in particular - both for partially funding this work and for developing and overseeing the community grant process.


I can be reached via email: or Scuttlebutt: @HEqy940T6uB+T+d9Jaa58aNfRzLx9eRWqkZljBmnkmk=.ed25519.