tracks04 / 04❯ embedded — in your process
The core of Rindle is a std-only Rust crate — no server, no runtime, and it ships as ~200 kB gzipped of wasm. Embed it next to your data, feed it writes, and either take materialized views or fold the raw delta stream yourself. Everything you embed and ship is open source (Apache-2.0) — and when readers multiply, the same queries scale onto a read fleet.
01 · three ways in
The same query API and the same correctness contract — view-after-write == fresh-query — behind every door. Pick by where your data lives.
The open IVM core: std-only, C-toolchain-free, single-threaded by design. Add views over the in-memory tree or SQLite, or attach a change sink and take the raw stream.
docs →node@rindle/replicain your serverNative SQLite in-process — durable writes with BEGIN CONCURRENT CDC, live derived reads, the same fluent query API as the browser.
docs →browser@rindle/wasmin a tabThe same engine compiled to wasm — ~200 kB gzipped: local-first reactive reads over a local database, no server in the loop.
docs →02 · the raw delta stream
Skip the built-in views entirely: attach a change sink and the engine hands you the incremental CaughtChange stream — Add / Remove / Edit / Child. Maintain your own structure, forward it over a wire, persist it. A view folded from the diffs alone equals a fresh query, and the engine is tested that way: differentially, against a SQLite oracle, by a coverage-driven fuzzer.
The runnable version ships with the crate: cargo run -p rindle-sqlite --example fold_deltas — it maintains a view from the stream and proves it equals a fresh SELECT.
03 · measured, not promised
04 · when readers multiply
The embedded core is single-threaded on purpose. When one process stops being enough, nothing about your queries changes — the rindled daemon runs the multi-threaded Cluster engine (queries sharded across IVM workers under snapshot isolation), and a replicated read fleet fans further out through follower affinity. The client engine stays free wherever you embed it; production is one flat license sized by your team — scaling the fleet costs nothing extra.
05 · ship it
The crates are the docs' engine path: the core and the fluent builder, the change model, the SQLite backend — then the daemon and the read fleet when you outgrow one process. Start where your data is.