Your coding agent connects your sheets, shapes them, and ships a live dashboard — deterministic, self-hostable, built for millions of rows.
No AI bundled · bring Claude Code, Codex or Cursor · your model key
tabledi ships no AI of its own — your coding agent drives it. One tool surface underneath, so every step is the same whether it comes from chat, CLI, or MCP.
Postgres, MySQL, Mongo, Google Sheets, CSV — linked live and auto-syncing.
Joins, rollups, formulas, dedupe — derived tables that recompute incrementally.
A shareable URL that refreshes itself on every write — no exports, no stale screenshots.
Your agent turns questions into queries — deterministic, generation-stamped answers.
Ask the same thing 100 times, get the same number 100 times — with lineage you can replay.
A single Rust binary on your infra, or embedded in-process over a C ABI. No data leaves.
No schema, no ETL. Your agent reads the scattered sources, understands them, and ships a typed, queryable table — then you can pivot, chart, or share it.
A dozen scattered files in. One typed, queryable, generation-stamped table out — the same engine that ships your daily P&L.
The coding agent you already run drives tabledi three ways — write once, both Claude Code and Codex eat it.
A columnar slot+pool engine in Rust — predicate pushdown, generation-stamped lineage, Arrow snapshots. The numbers are from its own benchmarks.
Columnar pushdown — 215× over row-based. COUNTIF lands 411×.
Same query, same answer, every run — generation-stamped.
75,000-row import — columnar-native, no row↔column thrash.
Your infra, or in-process over a C ABI. WASM next.
Install the command surface, log in, then hand it to your agent.
Deterministic, self-hostable, built for millions of rows — driven by the coding agent you already use.