Ursula: thread-per-core, multi-Raft Rust runtime for HTTP event streams

https://lobste.rs/rss Hits: 3
Summary

Docs: ursula.tonbo.io Ursula is a self-hosted, distributed server for the replayable, append-only event timelines behind document edits, agent runs, workflows, and chat. It speaks the Durable Streams Protocol over plain HTTP and SSE. Event streams live outside the broker network. Document editors, agents, and durable workflows need timelines that browsers, mobile apps, and serverless functions can read, write, and tail over the public internet. That asks for HTTP-native, distributed, S3-backed infrastructure, not the SDK-locked, single-network shape Kafka-style brokers were built for. The Durable Streams Protocol nails that wire format, but its reference server is a single process: a node loss is data loss. The other servers we evaluated each force you to give up one of four things this primitive deserves to keep: Open-source self-hosting. Low write latency (sub-50 ms P99 appends, no batching window required). Plain S3 economics (cold tier on standard S3, no S3 Express tier, no per-GB SaaS markup). Quorum-replicated durability (acknowledged writes survive a single-node failure). Ursula keeps all four. Full design intent: Why Ursula · How Ursula compares. For now, Ursula builds from Rust source. Pre-built release binaries are on the way. Run a single in-memory node (no persistence, good for kicking the tires): It binds 127.0.0.1:4437, picks a core count from your CPU, and uses an in-memory engine. Override with --listen, --core-count, --raft-group-count, or pick a persistent backend with --wal-dir / --raft-log-dir. Create a bucket and stream, append bytes, read them back: curl -X PUT http://127.0.0.1:4437/demo curl -X PUT http://127.0.0.1:4437/demo/hello curl -X POST http://127.0.0.1:4437/demo/hello \ -H 'Content-Type: application/octet-stream' \ --data-binary 'hello world' curl 'http://127.0.0.1:4437/demo/hello?offset=-1' Tail the stream live over SSE, new appends arrive as event: data lines immediately: curl -N 'http://127.0.0.1:4437/demo/hello?offset=-1&live=sse' ...

First seen: 2026-05-21 16:02

Last seen: 2026-05-21 18:05