Skip to content

cablehead/xs

Repository files navigation

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