Driven by your coding agent · CLI + MCP

Your agent has the brains.
tabledi gives it a table it can trust.

Your coding agent connects your sheets, shapes them, and ships a live dashboard — self-hostable, and built for millions of rows.

No AI bundled · bring your coding agent — Claude Code, Codex, Cursor or any other · your model key

  tabledi skill · Claude Code
connect my Google Sheets — the "ops" workbook
imported · ops · 3 sheets · 18,204 rows
merge the 3 sheets & roll up daily cost vs revenue
merged 3 → 1 · daily_pnl
rolled up · cost vs revenue by day · gen #204
make it a dashboard I can share
published · live · re-renders on every write
app.tabledi.com/d/ops-pnl · live dashboard · updating
Connects the data you already have
PostgresMySQLMongoDB Google SheetsCSV / JSONLApache Arrow
What your agent gets done

Say it in plain English. Your agent makes it real.

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.

Connect anything

Postgres, MySQL, Mongo, Google Sheets, CSV — imported and kept in sync.

You say"connect my Google Sheets"
tabledi import ops.csv --new ops

Merge & shape

Joins, rollups, formulas, dedupe — derived tables that recompute incrementally.

You say"merge these into a daily P&L"
tabledi query --json '{group: day}'

Live dashboards

A shareable URL that re-renders on every write — no exports, no stale screenshots.

You say"make it a dashboard I can share"
published · live report

Ask in plain language

Your agent turns questions into queries — same answer every time, generation-stamped.

You say"top 10 regions by margin"
tabledi query --json '{topN: 10}'

Same answer, every time

Ask the same thing 100 times, get the same number 100 times — each answer tagged with its exact data version, so you can replay it later.

You geta versioned, replayable answer
gen #204 · verifiable

Run it yourself

One Rust server binary on your own infrastructure — your data never leaves your network.

You say"keep our data in-house"
tabledi-server · your infra
Real example

Point it at anything — even last night's eval logs.

No schema, no ETL. Your agent reads the scattered run logs, understands them, and ships a typed, queryable leaderboard — then you can pivot, chart, or share it.

  tabledi skill · Claude Code
roll up last night's eval — every prompt variant, pass rate + cost
read 480 run logs (jsonl) across 6 variants
created sheet · variant × pass% × cost · in tabledi
query: best variant per dollar · gen #1
eval_leaderboard · gen #1
variantpass$/runverdict
baseline86.5%$0.012shipped
few-shot91.2%$0.018candidate
chain-of-thought93.8%$0.024candidate
+ tools95.1%$0.031✓ winner
+ self-check96.4%$0.042too slow
+ rerank94.0%$0.029candidate

480 scattered jsonl logs in. One typed, queryable, versioned leaderboard out — the same engine that ships your daily P&L.

Connect

Your agent. Your model key. tabledi's data.

The coding agent you already run drives tabledi three ways — from the command line, through MCP, or as a built-in skill. Same tools underneath, so they never drift.

⌘ CLI
$ tabledi login$ tabledi import data.csv$ tabledi query --json '…' A REST command surface — audited, optimistic-locked, same answer every run.
⚡ MCP
tabledi-mcp-serverTools, resources and auth your agent calls directly — scoped per workspace. Guarded writes per tenant — rate limits, blast-radius caps, full audit trail.
📦 Skill
skills/tablediOne SKILL.md teaches the agent when & how to reach for the CLI or MCP. Same file works in Claude Code and Codex — write once, both read it.
The engine

Built for scale you can verify.

A columnar engine in Rust — handles millions of rows fast, with a versioned answer on every query so you can replay and verify it. The numbers below are from its own benchmarks.

0.44ms

1M-row rollup

Columnar pushdown — 215× over row-based. COUNTIF lands 411×.

100/100

Same answer

Same query, same result, every run — versioned for replay.

~0.5s

Bulk ingest

75,000-row import — columnar-native, no row↔column thrash.

1 binary

Self-hostable

One Rust server on your infra, with your storage backend.

// representative numbers from the engine's own benchmarks — columnar predicate pushdown vs row-based fallback

Install

From zero to a live dashboard in 60 seconds.

Install the command surface, log in, then hand it to your agent.

~/your-project
# 1 · install the command surface
$ ./scripts/install.sh # or: cargo install --path binaries/tabledi-cli
$ tabledi login
# 2 · hand it to your agent (Claude Code)
$ claude mcp add tabledi -- tabledi-mcp-server
# codex: add [mcp_servers.tabledi] to ~/.codex/config.toml
# 3 · then just talk to it
connect my Sheets and build a live cost-vs-revenue dashboard
Pricing — one base, tier = rung

Start free. Self-host when it matters.

Same engine on every tier. You only move up a rung when your workload does.

Free
$0
The shared pool
  • multi-tenant shared base
  • full CLI + MCP + skill
  • evicted on logout
Try it
Most popular
Pro
Usage-based
Pay only for what runs
  • dedicated, suspend-on-idle
  • persistent workspaces
  • priority refresh + channels
Start Pro
Enterprise
Self-host
Always-on · private
  • true private deployment
  • on your own infrastructure
  • your infra, your data
Talk to us

Give your agent a table it can trust.

Same answer every time, self-hostable, built for millions of rows — driven by the coding agent you already use.