Brussels / 31 January & 1 February 2026

schedule

SQLRooms: Local-First Analytics with DuckDB, Collaborative Canvas, and Loro CRDT Sync


SQLRooms (GitHub) is an open-source React framework for building local-first data analytics applications powered by DuckDB. SQLRooms can run entirely in the browser using DuckDB-WASM, or connect to a shared session-backend running native DuckDB for larger datasets—in both cases, enabling privacy-preserving analytics where data stays under user control.

In this talk, I'll present SQLRooms' local-first architecture and our ongoing work on real-time collaboration using Loro CRDT. We're building a Canvas module with SQL query cells and Vega-Lite visualization cells, a Notebooks module, and an underlying DAG (directed acyclic graph) engine that tracks dependencies between cells—automatically re-executing downstream cells when data changes. These modules will support collaborative editing via @sqlrooms/crdt, with sync enabled through WebSockets using sqlrooms-duckdb-server.

A key insight for analytics apps: DuckDB serves as a read-only query engine—the underlying data doesn't need to be synced. Only the UI state requires CRDT synchronization: queries, notebooks, canvas layouts, annotations, and comments. This CRDT state can be persisted both in a shared session-backend DuckDB and on local machines for offline access.

For session-backend deployments, sqlrooms-duckdb-server provides a shared DuckDB instance where all connected clients query the same data—useful for large datasets or when consistent results matter. This can be deployed with e.g. Cloudflare Containers for on-demand, per-session instances.

I'll discuss our choice of Loro over Yjs and how separating data (read-only DuckDB) from collaborative state (CRDT) simplifies the sync architecture while enabling privacy-preserving collaborative analytics.

Speakers

Photo of Ilya Boyandin Ilya Boyandin

Links