demos

see it run, live.

Six apps on one engine. Three are ours: one runs entirely in your own tab with no server behind it, one keeps a query correct under a firehose of reads, one syncs optimistic writes across everyone in the room. Three are shipped on Rindle by the people who use it — a slides editor, an LLM canvas, and a site someone publishes on. All run the real engine. Pick one.

the engine · in your tab

Every pixel is a query

A drawing canvas with no server in it at all. Your pointer writes rows; every panel — the canvas itself included — is a live query, folded before the frame paints. Nothing is fetched: the whole engine is the wasm module the page loads.

  • Six live queries on one board — joins, aggregates, ordered windows — and the canvas itself is one more per visible cell.
  • Hide a layer: one row-write, and every gated view sheds its rows in the same commit. source ↗
  • Fork any panel and edit its query — the text runs as the real builder. source ↗
  • The engine's contract, checkable in the page: view-after-write == fresh-query.
Open the canvas →

reads · at scale

Live Wikipedia edits

The real Wikimedia firehose streams into one query that stays correct edit-by-edit — no refetch, no diffing. Two recency boards mirror the same stream, grouped by page and by editor.

  • A query kept prepared, maintained incrementally.
  • Thousands of edits a minute — one materialization shared by every viewer.
  • The whole board runs on one small machine.
Open the live board →

writes · collaboration

Collaborative issue tracker

The other half of the engine: optimistic mutations that apply instantly and rebase on confirmation, multi-user sync, and a rejection path you can watch snap back. Open it in two windows and edit.

  • Optimistic writes through the client queue.
  • Serverless API tier (a Cloudflare Worker) + an always-up daemon.
  • A 5,000-issue table, browsed as live paginated windows.
Open the issue tracker →

writes · a real app

Strut, a slides editor

A full presentation editor built on Rindle — a Keynote-style canvas you drag, resize, and rotate objects on, plus an AI chat that streams into the deck. Not a demo: a shipped app that leans on the parts of the engine the other two never touch.

  • Drag events fold to the last value — instant on-canvas feedback, one debounced write per object, no throttling code. source ↗
  • The streaming AI reply lands in a local-only table — memory-only and per-device, so it never touches the sync path. source ↗
  • Fragments give fine-grained reactivity — the whole deck is one query, yet a leaf edit re-renders only its object. source ↗
Open strut.io →

streams · a real app

Oxbow, an atlas of conversations

A chat that branches across a canvas instead of scrolling away — and under it, the hard part of any LLM app: reconciling a live token stream with its durable record. Here the two are one query, so the text on screen never swaps out from under you.

  • Tokens stream live while checkpoints land in the app's own tables — one view, not two.
  • Reload mid-answer, or arrive late: what you get is exactly what the model produced.
  • Every branch keeps its place as its own live query — and a shared canvas stays live for whoever opens it.
Open oxbow.chat →

a site · built on rindle

tantaman.com

A working essay site — explore, search, thoughts, a paste box — with “powered by rindle” in the footer. It exists to be read, not to demonstrate anything, which is the most useful thing about it. The whole app is public.

  • The entire Rindle layer, readable end to end: SQL migrations, generated schema, isomorphic mutators, topology. source ↗
  • Three tiers on one box: the wasm engine in the browser, an API authority, a colocated master + follower.
  • SQL stays the source of truth — the client's schema is generated from the migrations, so it can't drift.
Open tantaman.com →