Crate golgi

source · []
Expand description


The Golgi complex (aka. Golgi apparatus or Golgi body) packages proteins into membrane-bound vesicles inside the cell before the vesicles are sent to their destination.


Golgi is an asynchronous, experimental Scuttlebutt client that aims to facilitate Scuttlebutt application development. It provides a high-level API for interacting with an sbot instance and uses the kuska-ssb libraries to make RPC calls. Development efforts are currently oriented towards go-sbot interoperability.


Golgi offers the ability to invoke individual RPC methods while also providing a number of convenience methods which may involve multiple RPC calls and / or the processing of data received from those calls. The Sbot struct is the primary means of interacting with the library.

Features include the ability to publish messages of various kinds; to retrieve messages (e.g. about and description messages) and formulate queries; to follow, unfollow, block and unblock a peer; to query the social graph; and to generate pub invite codes.

Visit the API modules to view the available methods.

Example Usage

Basic usage is demonstrated below. Visit the examples directory in the golgi repository for more comprehensive examples.

use golgi::{messages::SsbMessageContent, GolgiError, Sbot};

pub async fn run() -> Result<(), GolgiError> {
    // Attempt to connect to an sbot instance using the default IP address,
    // port and network key (aka. capabilities key).
    let mut sbot_client = Sbot::init(None, None).await?;

    // Call the `whoami` RPC method to retrieve the public key for the sbot
    // identity.
    let id = sbot_client.whoami().await?;
    // Print the public key (identity) to `stdout`.
    println!("{}", id);

    // Compose an SSB post message type.
    let post = SsbMessageContent::Post {
        text: "Biology, eh?!".to_string(),
        mentions: None,

    // Publish the post.
    let post_msg_reference = sbot_client.publish(post).await?;

    // Print the reference (sigil-link) for the published post.
    println!("{}", post_msg_reference);



pub use crate::error::GolgiError;
pub use crate::sbot::Sbot;


API for interacting with a running go-sbot instance.

Blob utilities which do not require RPC calls.

Custom error type.

Message types and conversion methods.

Sbot type and connection-related methods.

Utility methods.