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.
Prerequisites: a running instance of go-sbot (see the installation guide).
Download, build and run lykin.
git clone https://git.coopcloud.tech/glyph/lykin.git cd lykin cargo build --release RUST_LOG=lykin=info ./target/release/lykin
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:
warn. The log level can be set using the
RUST_LOG environment variable.
For example, emit only
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: email@example.com or Scuttlebutt: