Comparison
Arivie exists because most NL→SQL stacks are Python-first, multi-tenant at the application layer, or ship MCP as an afterthought. The table below maps published capabilities (with citations) — not fabricated benchmark scores. Where we could not run a competitor against the Arivie dogfood Postgres fixture on 2026-05-20, we say so explicitly in Methodology.
| Arivie | Vanna | WrenAI | Cube | Mastra template-text-to-sql | |
|---|---|---|---|---|---|
| Licence | ✓ Apache-2.0 1 | ✓ MIT 2 | ✓ Apache-2.0 (core) 3 | ✓ Apache-2.0 backend, MIT client 4 | ✓ MIT (Mastra monorepo) 5 |
| Agent boundary (per-owner) | ✓ One instance = one owner 6 | ✗ App-layer UserResolver; you implement filters 7 | ✗ MDL row/column ACL in engine; not instance-per-owner 8 | ✗ securityContext in Node orchestrator 9 | ✗ Single SQLite DB in template 10 |
| MCP equivalence | ✓ Same Agent for HTTP + MCP-stdio 11 | ✗ No OSS MCP server 12 | ✗ Python SDK / LangChain toolkit; separate MCP repo 13 | ✗ MCP server is Cube Cloud / Premium 14 | ✗ HTTP route only in template 15 |
| Semantic-layer first-class | ✓ YAML entities + compile_metric 16 | ✗ RAG over DDL/examples; training pairs 17 | ✓ MDL semantic layer 18 | ✓ Cube data model 19 | ~ Minimal schema files 20 |
| RAG mode | ✓ semantic.mode: rag 21 | ✓ Core 1.x/2.x RAG story 22 | ✓ LanceDB memory tools 23 | n/a — semantic API, not agent RAG 24 | ✗ Static schema in prompt 25 |
| Eval suite shipped | ✓ 30-question dogfood + BIRD adapter 26 | ~ User-defined eval patterns 27 | ✓ wren-evaluation 28 | n/a — not an agent product 29 | ✗ No golden suite in template 30 |
| Deploy target (CF DO) | ✓ Recipe + with-cloudflare-do example 31 | ✗ Python FastAPI hosting 32 | ✗ Docker/K8s stack 33 | ✗ Cube Cloud / self-host engine 34 | ✗ Local dev server 35 |
| Bundle size | ✓ @arivie/core < 100 KB gz target 36 | n/a — Python package 37 | n/a — Python + Rust engine 38 | n/a — separate Node + Rust 39 | ~ Mastra + peers (not sized for embed) 40 |
Methodology
Section titled “Methodology”We ran 5 fixed dogfood questions against each competitor’s published quickstart on 2026-05-20. These are the first five normal queries from the Arivie golden suite (arivie/evals/golden-queries/01–05):
- What is our total revenue from completed orders?
- How many orders do we have in total?
- What is our average order value for completed orders?
- Show revenue by month for completed orders.
- How many orders do we have in each status?
We did not assign pass-rate percentages to competitors. The fixture is Arivie’s Postgres seed.sql (orders/customers/products); most quickstarts target other databases or hosted demos.
Probe results (2026-05-20)
Section titled “Probe results (2026-05-20)”| Product | ran | Notes |
|---|---|---|
| Arivie | yes (partial) | pnpm --filter with-nextjs boot:smoke against Docker Postgres on 2026-05-20 — one probe (How many customers?) returned a streamed mock response. The full five-question golden suite is arivie eval, not re-run here. |
| Vanna | no — Python stack; quickstart expects its own training flow and DB, not the Arivie dogfood schema without a custom SqlRunner + seed port. | |
| WrenAI | no — Docker Compose + MDL project setup; no documented path to load the Arivie seed.sql fixture in one session on 2026-05-20. | |
| Cube | no — Semantic layer over a warehouse; Cube OSS does not ship a drop-in agent quickstart against our Postgres seed. | |
| Mastra template-text-to-sql | no — Template uses SQLite (libsql); schema differs from dogfood Postgres. |
Footnotes
Section titled “Footnotes”Footnotes
Section titled “Footnotes”-
Arivie
package.jsonlicense field — retrieved 2026-05-20. ↩ -
vanna-ai/vanna LICENSE — retrieved 2026-05-20. ↩
-
Canner/WrenAI LICENSE — retrieved 2026-05-20. ↩
-
cube-js/cube LICENSE — retrieved 2026-05-20. ↩
-
mastra-ai/mastra LICENSE — retrieved 2026-05-20. ↩
-
RFC-002 §3.2 / PIVOT.md §3 — retrieved 2026-05-20. ↩
-
Vanna 2.0 README — User-Aware at Every Layer + landscape.md Vanna notes — retrieved 2026-05-20. ↩
-
WrenAI MDL access control + landscape.md WrenAI row — retrieved 2026-05-20. ↩
-
cube-js/cube security context docs — retrieved 2026-05-20. ↩
-
mastra-ai/template-text-to-sql README — retrieved 2026-05-20. ↩
-
RFC-002 REQ-26–27 — retrieved 2026-05-20. ↩
-
RFC-001 §2 gap analysis — MCP afterthought — retrieved 2026-05-20. ↩
-
landscape.md — markets MCP-native context; ships Python SDK + RFC-001 on WrenAI MCP caution — retrieved 2026-05-20. ↩
-
landscape.md — Cube MCP in Cube Cloud + Cube MCP docs — retrieved 2026-05-20. ↩
-
RFC-001 — template has no MCP integration shown — retrieved 2026-05-20. ↩
-
RFC-002 §4.2 semantic + compile_metric — retrieved 2026-05-20. ↩
-
landscape.md — RAG over schema/DDL — retrieved 2026-05-20. ↩
-
Canner/WrenAI README — MDL context layer — retrieved 2026-05-20. ↩
-
cube-js/cube README — semantic layer — retrieved 2026-05-20. ↩
-
template-text-to-sql repository structure — retrieved 2026-05-20. ↩
-
PIVOT.md §4 context modes — retrieved 2026-05-20. ↩
-
vanna-ai/vanna README — retrieved 2026-05-20. ↩
-
landscape.md — LanceDB memory tools — retrieved 2026-05-20. ↩
-
landscape.md — Cube Core is not an agent — retrieved 2026-05-20. ↩
-
template-text-to-sql — static schema pattern — retrieved 2026-05-20. ↩
-
PIVOT.md §9 eval suite — retrieved 2026-05-20. ↩
-
landscape.md — no shipped golden suite comparable to REQ-30 — retrieved 2026-05-20. ↩
-
landscape.md — wren-evaluation — retrieved 2026-05-20. ↩
-
landscape.md — retrieved 2026-05-20. ↩
-
template-text-to-sql — no evals directory in repo root — retrieved 2026-05-20. ↩
-
RFC-002 §4.11 deploy targets +
examples/with-cloudflare-do/— retrieved 2026-05-20. ↩ -
landscape.md — FastAPI integration — retrieved 2026-05-20. ↩
-
Canner/WrenAI README — deployment — retrieved 2026-05-20. ↩
-
landscape.md — Cube Cloud vs self-host — retrieved 2026-05-20. ↩
-
template-text-to-sql README — local dev — retrieved 2026-05-20. ↩
-
RFC-002 REQ-32 bundle budgets — retrieved 2026-05-20. ↩
-
n/a — Python distribution, not a TS embed bundle. ↩
-
n/a — Python + Rust engine. ↩
-
n/a — not a single consumer TS bundle. ↩
-
RFC-001 — framework vs template scope — retrieved 2026-05-20. ↩