Skip to content

Quickstart

The current distribution is a source checkout. Published binaries and production configuration are not ready yet.

Docker (recommended), or a current Rust toolchain and Git to build from source.

The quickest path is the published main image from GitHub Container Registry:

Terminal window
docker pull ghcr.io/axmouth/fibril-server:main
docker run --rm \
-p 9876:9876 \
-p 8081:8081 \
-v fibril-server-data:/app/server_data \
ghcr.io/axmouth/fibril-server:main

The main tag is a moving pre-release image. CI also publishes immutable sha-<commit> tags for exact builds.

As a backup, run from a source checkout instead:

Terminal window
git clone https://github.com/Axmouth/fibril.git
cd fibril
cargo run --release --bin fibril-server

Either way, the development server currently:

  • listens for broker TCP traffic on 9876
  • serves the early admin interface on 8081
  • stores durable state under server_data/ (the fibril-server-data volume with Docker)
  • uses development authentication defaults in the server binary

Do not expose this development server directly to the public internet.

Fibril has Rust, TypeScript, and Python clients over the same broker surface: publishers, delayed publish, and manual-ack subscriptions. The examples are for the current pre-alpha source tree, not a stable package contract.

The Rust client lives in crates/client.

let client = ClientOptions::new()
.auth("fibril", "fibril")
.connect("127.0.0.1:9876")
.await?;
let publisher = client.publisher("email.send")?;
publisher.publish("hello").await?;
publisher.publish_delayed("hello later", 30u64).await?;
let mut sub = client
.subscribe("email.send")?
.prefetch(32)
.sub()
.await?;
while let Some(msg) = sub.recv().await {
process(msg.content()?).await?;
msg.complete().await?;
}

The API is evolving. Treat examples as a guide to the current source tree rather than a stable package contract.

For more publishing, subscription, delayed publish, and message encoding examples, see client usage.

For startup config, runtime settings, and idle queue cleanup options, see configuration.

To stand up a real multi-broker cluster locally and watch ownership, replication, and failover from the admin dashboard, see try a cluster with Docker in under a minute. Clustering is experimental.