https://github.com/cablehead/xs
crossing the streams
https://github.com/cablehead/xs
cli content-addressed-storage cross-stream embedded-database event-sourcing interop kv-store localstorage materialized-view nushell rust scripting shell stream-driven-development xs zero-data
Last synced: 3 months ago
JSON representation
crossing the streams
- Host: GitHub
- URL: https://github.com/cablehead/xs
- Owner: cablehead
- License: mit
- Created: 2024-04-20T02:33:25.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-22T16:39:28.000Z (3 months ago)
- Last Synced: 2025-07-22T18:17:15.326Z (3 months ago)
- Topics: cli, content-addressed-storage, cross-stream, embedded-database, event-sourcing, interop, kv-store, localstorage, materialized-view, nushell, rust, scripting, shell, stream-driven-development, xs, zero-data
- Language: Rust
- Homepage: https://cablehead.github.io/xs/
- Size: 17.1 MB
- Stars: 58
- Watchers: 3
- Forks: 3
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: changes/0.0.9.md
- License: LICENSE
Awesome Lists containing this project
README
# xs (cross.stream) [](https://github.com/cablehead/xs/actions/workflows/ci.yml) [](https://discord.com/invite/YNbScHBHrh)
[
](https://cablehead.github.io/xs/)
---
> `xs` is a local-first event stream store for personal projects.
Think of it like [`sqlite`](https://sqlite.org/cli.html) but specializing in the
[event sourcing](https://martinfowler.com/eaaDev/EventSourcing.html) use case.See the [documentation](https://cablehead.github.io/xs/) for detailed
installation instructions, tutorials and examples.## Quick start
```sh
# 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](https://discord.com/invite/YNbScHBHrh) to ask questions or share ideas.
## Built with 🙏💚
- [fjall](https://github.com/fjall-rs/fjall): for indexing and metadata
- [cacache](https://github.com/zkat/cacache-rs): for content (CAS)
- [hyper](https://hyper.rs/guides/1/server/echo/): provides an HTTP/1.1 API over
a local Unix domain socket for subscriptions, etc.
- [Nushell](https://www.nushell.sh): for scripting and
[interop](https://utopia.rosano.ca/interoperable-visions/)