Docs / Compare

SayQL vs Vanna

Updated

Vanna is an open-source Python framework for adding a text-to-SQL chat to an app you build. Its repository was archived on 29 March 2026, so it gets no more updates. SayQL is a desktop SQL client that lets you and your AI agents query your databases while keeping rows and chosen columns away from the AI.

Choose Vanna, or a maintained fork, to embed text-to-SQL in a product for your own users. Choose SayQL to give people and AI agents governed access to your own databases.

Checked on 3 November 2026 against each product's own docs, code and pricing; every cell links to its source. Spotted something out of date? Email hello@azenvoc.com and we'll fix it.

Side by side

SayQLVanna
What it isDesktop SQL client (macOS, Windows, Linux) with AI, plus an optional self-hosted team server sourceOpen-source Python framework for building a text-to-SQL agent into your own web app, with a chat web component; also a hosted Vanna Cloud source
StatusMaintained; 0.6.0 released 2026-11-03 sourceArchived (read-only) since 29 March 2026; last release 2.0.2 on 2 February 2026 source
LicenceApp: open source, Apache 2.0. Team server: paid licence sourceOpen source, MIT source
PriceApp free. Team server $149 a month for up to 10 people, 30-day trial sourceLibrary free. Hosted plans from $50 a month (20 questions a day) to $500 a month; Enterprise custom source
DatabasesPostgreSQL, MySQL, MariaDB, SQLite, SQL Server, Azure SQL sourcePostgreSQL, MySQL, Snowflake, BigQuery, Redshift, SQLite, Oracle, SQL Server, DuckDB, ClickHouse and others source
AI modelsClaude, OpenAI, Gemini, OpenRouter, Mistral, Groq, DeepSeek, any OpenAI-compatible API; local models with Ollama or LM Studio sourceOpenAI, Anthropic, Gemini, Azure, AWS Bedrock, Mistral; local models through Ollama source
Plain English to SQLYes: SQL appears in the editor as you type, from your schema and approved notes sourceYes: 0.x retrieves trained DDL, docs and question–SQL pairs; 2.0 is an agent that writes and runs SQL, reusing past successful queries source
Multi-step questionsYes (beta): plans, runs read-only steps, checks its work, cites each query sourceYes: 2.0 is a tool-calling agent (up to 10 steps by default) that runs SQL, draws charts and summarises source
MCP server for AI agentsYes: a local MCP server for Claude Code, Cursor and others, and an HTTP gateway on the team server sourceNo official MCP server (third-party wrappers exist) source
What the AI sees of your dataSchema by default. Per connection you choose what AI sees of results: nothing, counts and summaries (default), masked rows, or all rows sourceQuery results: in 2.0 the run_sql tool sends up to 1,000 characters of the result to the model, which summarises the data source
Keep chosen columns from the AIYes: columns marked never send are refused in any form and withheld from results sourceNo built-in setting; a hook you can implement to redact arguments does nothing by default source
Read-only for AIRead-only by default: statements are checked before they run and run in a read-only transaction; AI apps can't change data sourceNot enforced: the runner executes any statement and commits; relies on the database login's permissions source
Record of AI queriesYes: a local log of what each AI app ran; on the team server, one log of every query from people and agents, whose rows can't be edited sourceOpt-in in 2.0: pass an audit logger (off by default) source
Per-agent or per-user rulesBlock or allow each AI app. Team server: each agent its own key, databases, tables and rows source2.0: users with groups from your own auth; tools gated by group. Row-level rules are a hook you write source
Where it runs, where data goesRuns on your computer; the team server runs on your servers and your data never reaches us sourceRuns in your app and infrastructure; data goes to the AI you configure. Optional cloud memory sends to Vanna's API source
InterfaceDesktop app sourceWeb chat component and built-in web page; notebooks. No desktop app source
Learns about your databaseShared notes about the database that people approve and SayQL keeps true as the schema changes; no training on question–SQL pairs sourceYes: trains on DDL, docs and question–SQL pairs (0.x); saves successful queries as memory (2.0) source

What Vanna does better

  • Embeds in your own web app or SaaS for your end users, with a drop-in chat component that uses your existing sign-in. source
  • Connects to more warehouses, including Snowflake, BigQuery, Redshift, Oracle, DuckDB and ClickHouse. source
  • Can get more accurate from trained question–SQL pairs, documentation and saved successful queries. source
  • Streams charts and written summaries along with tables. source
  • A Python framework you can extend with your own tools and hooks, under the MIT licence. source

How SayQL handles AI access

  • Counts, not rows, by default. For each connection you choose what AI apps see of results: nothing, counts and summaries, masked rows or all rows. See what AI apps may see.
  • Columns that never reach the AI. Mark a column never send and any query that could read it is refused, and it's withheld from results. See never-send columns.
  • Read-only, enforced. Every statement is checked before it runs and runs in a read-only transaction; AI apps can't change data. See how queries run safely.
  • A record of what AI ran. See every query each AI app ran, and block an app in one click. On the team server, one log covers every person and agent. See agent activity.
  • Per-agent keys on your own server. The self-hosted team server gives each agent its own key, databases, tables and rows. See SayQL for teams.

Questions

Does Vanna send query results to the AI?

Query results: in 2.0 the run_sql tool sends up to 1,000 characters of the result to the model, which summarises the data. source In SayQL: schema by default. Per connection you choose what AI sees of results: nothing, counts and summaries (default), masked rows, or all rows. source

Can Vanna keep a column away from the AI?

No built-in setting; a hook you can implement to redact arguments does nothing by default. source In SayQL, yes: columns marked never send are refused in any form and withheld from results. source

Is Vanna read-only for AI?

Not enforced: the runner executes any statement and commits; relies on the database login's permissions. source In SayQL: read-only by default: statements are checked before they run and run in a read-only transaction; AI apps can't change data. source

Does Vanna have an MCP server for AI agents?

No official MCP server (third-party wrappers exist) source In SayQL, yes: a local MCP server for Claude Code, Cursor and others, and an HTTP gateway on the team server. source

Other comparisons

Download SayQL: the app is free and open source.

Something missing or unclear? Ask in Discussions.