Single binary event stream store. Append frames, replay history, react in real time. Stateful actors build materialized views as events flow. Compose everything through Nushell pipelines.
xs serve ./storeWritten in Rust. Nushell-native.
An event streaming store for personal, local-first use. Think of an event like a frame in a movie — a small package on a timeline. xs records these frames in strict order, append-only, so they can be replayed or reacted to later.
Single binary. File-based store. UNIX socket API. No cloud.
"hello" | .append greeting
.cat -f | each { print ($in | table -e) }
Event Store. Append-only stream with structured metadata on each frame. Content-addressable storage (CAS) for binary and large blobs, automatic deduplication.
Actors. Stateful processors that react to incoming frames — transform, trigger, fan-out. Use Nushell's generate contract to carry state and emit materialized views:
r#'{
run: {|frame, sum = 0|
if $frame.topic != "sale" { return {next: $sum} }
let sum = $sum + ($frame.meta.amount | into float)
{out: {total: $sum}, next: $sum}
}
return_options: { suffix: ".total", ttl: "last:1" }
}'# | .append revenue.register
Services. Long-running processes that continuously pull data from files, APIs, websockets, serial devices, or sensors into the stream.
Actions. On-demand, stateless operations. Request/response semantics for RPC-style calls or streaming data back to the caller.
brew install cablehead/tap/cross-stream and go..cat, .append, .last, .get commands. Write actors and services in Nushell with structured pipelines. Also works with any POSIX shell via the xs CLI.Developers who want event sourcing without Kafka. Local automation, reactive pipelines, LLM orchestration (gpt2099.nu), or as the embedded store behind http-nu.
No comments yet.
Sign in to be the first to comment.