#event-sourcing #event-stream #event-store #queue #content-addressable-storage

bin+lib cross-stream

An event stream store for personal, local-first use, specializing in event sourcing

6 releases (3 breaking)

0.4.2 May 24, 2025
0.4.0 May 22, 2025
0.2.0 Jan 4, 2025
0.1.0 Dec 6, 2024
0.0.8 Oct 7, 2024

#277 in Embedded development

Download history 9/week @ 2025-04-16 1/week @ 2025-05-07 9/week @ 2025-05-14 277/week @ 2025-05-21 24/week @ 2025-05-28

311 downloads per month

MIT and maybe CC-PDDC

5.5MB
8K SLoC

xs (cross-stream) CI Discord

Pixel art heroes cross proton streams, saving gritty, shadowy Toronto street beneath glowing CN Tower backdrop.

xs is a local-first event stream store for personal projects. Think of it like sqlite but specializing in the event sourcing use case.

See the documentation for detailed installation instructions, tutorials and examples.

Quick start

# install
cargo install cross-stream --locked
# or:
brew install cablehead/tap/cross-stream
brew services start cablehead/tap/cross-stream  # starts a store in ~/.local/share/cross.stream/store

# optional Nushell helpers
xs nu --install
# then in Nushell
use xs.nu *

# start a server
xs serve ./store

# in another window
echo "hello" | xs append ./store notes
xs cat ./store

# the xs.nu helpers fall back to ~/.local/share/cross.stream/store
# to use a different location temporarily:
with-env {XS_ADDR: "./store"} { .cat }

Features

  • Local-first append-only store
  • Content-addressable storage for large payloads
  • Real-time subscriptions to new events
  • Generators and handlers for background processing

Connect

Join our Discord to ask questions or share ideas.

Built with 🙏💚

  • fjall: for indexing and metadata
  • cacache: for content (CAS)
  • hyper: provides an HTTP/1.1 API over a local Unix domain socket for subscriptions, etc.
  • Nushell: for scripting and interop

Dependencies

~88–120MB
~2.5M SLoC