broker / queue / durable delivery

Useful messaging without broker ceremony.

Fibril is a lightweight message broker focused on durable queues, explicit delivery semantics, leasing, retries, and predictable operational behavior, with fan-out streams alongside the work queues when you need broadcast. Most applications need durable queues, predictable delivery semantics, reconnect behavior that doesn't surprise them, and operational controls that are easy to understand during incidents. Fibril optimizes for that path. It is implemented in Rust, but the identity is simple, inspectable broker behavior. It is still early, and the missing pieces are named rather than hidden.

Durability is core and tested. Production readiness is still earned, not claimed.

queue email.send
worker leased
ack
delay 30s
queue lifecycletraffic: active
worker.rsexplicit lifecycle
while let Some(msg) = sub.recv().await? {
    match send_email(msg.content()?).await {
        Ok(_) => msg.complete().await?,
        Err(err) if err.is_temporary() => msg.retry_after(30).await?,
        Err(_) => msg.fail().await?,
    };
}

// settlement says what should happen next
01

Durable by default

Append-only logs, snapshot, and replay are part of the model.

02

Clients that read like intent

Complete, retry, delay, or fail work without building broker rituals into your app.

03

Lease under load

Pull-based delivery and bounded prefetch make pressure visible.

04

Fan-out streams

Plexus streams broadcast each record to every subscriber, alongside the work queues, with durability tiers you opt into.

current shape

Working parts, plainly stated.

The broker has a useful baseline today. The table separates available behavior from areas that still need tooling or client polish.

Read project status
FeatureStatusNotes
Durable queues available Append-only log, snapshot, and replay.
Publish and subscribe available Custom TCP protocol with Rust, TypeScript, Python, Go, and C# clients.
Explicit settlement available ACK, fail, immediate retry, and delayed retry paths.
Delayed publish available Broker path and Rust, TypeScript, Python, Go, and C# client methods are wired.
Message TTL available Per-message or per-queue default. Expired messages drop or dead-letter.
Dead lettering available Global and per-queue policy are configurable. Replay tooling is still early.
Backpressure available Pull-based delivery and bounded prefetch.
Sparse queues available Lazy loading and idle eviction are wired. Observability is still growing.
Message inspection available Browse active queue messages from admin tooling, with optional payload previews.
Partitioned queues available Multiple partitions per queue, with client-side key routing and transparent fan-in.
Plexus streams available Fan-out channel: every subscriber receives every record, with durable named cursors and durability tiers you opt into.
Wildcard subscribe available Subscribe to every queue or stream matching a wildcard, and auto-attach new ones as they appear. Client-side.
Partition ownership experimental Cluster nodes split a queue's active traffic by owning different partitions. Experimental.
Replication experimental Followers keep partition copies for failover and recovery. Experimental.
Transactions out of scope Not planned. Transactional workflows are intentionally excluded.

Durable queues

available

Append-only log, snapshot, and replay.

Publish and subscribe

available

Custom TCP protocol with Rust, TypeScript, Python, Go, and C# clients.

Explicit settlement

available

ACK, fail, immediate retry, and delayed retry paths.

Delayed publish

available

Broker path and Rust, TypeScript, Python, Go, and C# client methods are wired.

Message TTL

available

Per-message or per-queue default. Expired messages drop or dead-letter.

Dead lettering

available

Global and per-queue policy are configurable. Replay tooling is still early.

Backpressure

available

Pull-based delivery and bounded prefetch.

Sparse queues

available

Lazy loading and idle eviction are wired. Observability is still growing.

Message inspection

available

Browse active queue messages from admin tooling, with optional payload previews.

Partitioned queues

available

Multiple partitions per queue, with client-side key routing and transparent fan-in.

Plexus streams

available

Fan-out channel: every subscriber receives every record, with durable named cursors and durability tiers you opt into.

Wildcard subscribe

available

Subscribe to every queue or stream matching a wildcard, and auto-attach new ones as they appear. Client-side.

Partition ownership

experimental

Cluster nodes split a queue's active traffic by owning different partitions. Experimental.

Replication

experimental

Followers keep partition copies for failover and recovery. Experimental.

Transactions

out of scope

Not planned. Transactional workflows are intentionally excluded.

early observation

A durable path with room to sharpen.

250k+messages/sec ingress
250k+messages/sec egress

Informal internal measurements with 1KB payloads on a Ryzen 5950X. These are architectural sanity checks, not a polished benchmark suite.