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
| SayQL | Vanna | |
|---|---|---|
| What it is | Desktop SQL client (macOS, Windows, Linux) with AI, plus an optional self-hosted team server source | Open-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 |
| Status | Maintained; 0.6.0 released 2026-11-03 source | Archived (read-only) since 29 March 2026; last release 2.0.2 on 2 February 2026 source |
| Licence | App: open source, Apache 2.0. Team server: paid licence source | Open source, MIT source |
| Price | App free. Team server $149 a month for up to 10 people, 30-day trial source | Library free. Hosted plans from $50 a month (20 questions a day) to $500 a month; Enterprise custom source |
| Databases | PostgreSQL, MySQL, MariaDB, SQLite, SQL Server, Azure SQL source | PostgreSQL, MySQL, Snowflake, BigQuery, Redshift, SQLite, Oracle, SQL Server, DuckDB, ClickHouse and others source |
| AI models | Claude, OpenAI, Gemini, OpenRouter, Mistral, Groq, DeepSeek, any OpenAI-compatible API; local models with Ollama or LM Studio source | OpenAI, Anthropic, Gemini, Azure, AWS Bedrock, Mistral; local models through Ollama source |
| Plain English to SQL | Yes: SQL appears in the editor as you type, from your schema and approved notes source | Yes: 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 questions | Yes (beta): plans, runs read-only steps, checks its work, cites each query source | Yes: 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 agents | Yes: a local MCP server for Claude Code, Cursor and others, and an HTTP gateway on the team server source | No official MCP server (third-party wrappers exist) source |
| What the AI sees of your data | Schema by default. Per connection you choose what AI sees of results: nothing, counts and summaries (default), masked rows, or all rows source | 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 |
| Keep chosen columns from the AI | Yes: columns marked never send are refused in any form and withheld from results source | No built-in setting; a hook you can implement to redact arguments does nothing by default source |
| Read-only for AI | Read-only by default: statements are checked before they run and run in a read-only transaction; AI apps can't change data source | Not enforced: the runner executes any statement and commits; relies on the database login's permissions source |
| Record of AI queries | Yes: 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 source | Opt-in in 2.0: pass an audit logger (off by default) source |
| Per-agent or per-user rules | Block or allow each AI app. Team server: each agent its own key, databases, tables and rows source | 2.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 goes | Runs on your computer; the team server runs on your servers and your data never reaches us source | Runs in your app and infrastructure; data goes to the AI you configure. Optional cloud memory sends to Vanna's API source |
| Interface | Desktop app source | Web chat component and built-in web page; notebooks. No desktop app source |
| Learns about your database | Shared notes about the database that people approve and SayQL keeps true as the schema changes; no training on question–SQL pairs source | Yes: 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
- SayQL vs Chat2DB
- SayQL vs DBeaver
- SayQL vs DataGrip
- SayQL vs MCP Toolbox for Databases
- Vanna alternatives, by what you used it for
- All tools side by side
Download SayQL: the app is free and open source.
Something missing or unclear? Ask in Discussions.