Atlas
Comparisons

Atlas vs Vanna

Comparing Atlas and Vanna for text-to-SQL -- Python vs TypeScript, training vs semantic layer, embedding approaches.

Vanna is a Python package for text-to-SQL that uses RAG (retrieval-augmented generation) to improve accuracy. Atlas and Vanna solve the same core problem but for different audiences and deployment models.

Quick Comparison

AtlasVanna
LicenseAGPL-3.0 core, MIT client libsMIT
LanguageTypeScriptPython
ApproachSemantic layer (YAML)RAG training (DDL + docs + SQL pairs)
EmbeddableScript tag, React component, SDK with streamingWeb component (<vanna-chat>), Flask UI, Streamlit
DeploymentSelf-hosted (Docker, Railway, Vercel) or Atlas Cloud (3 regions)Python script, notebook, or app.vanna.ai
Plugin systemPlugin SDK + 21+ plugins + marketplaceSwappable LLM/vector store backends
DatabasesPostgres, MySQL + plugins for BigQuery, ClickHouse, DuckDB, Salesforce, SnowflakePostgres, MySQL, BigQuery, Snowflake, DuckDB, SQLite, Oracle, SQL Server, ClickHouse, Redshift
Auth modelManaged (Better Auth), BYOT, API key, SSO/SCIMBYOT (UserResolver class)
Admin consoleBuilt-in (connections, users, plugins, semantic editor, analytics, billing)No
MCP serverYes (stdio + SSE)No
Chat integrationsSlack, Teams, Discord, Telegram, Google Chat, GitHub, Linear, WhatsApp (via Chat SDK)No
NotebookBuilt-in (cells, fork/branch, export to Markdown/HTML)No (Jupyter integration)
SQL validation7-layer pipeline (empty check, regex guard, AST parse, table whitelist, RLS, auto-LIMIT, timeout)Basic (parameterized queries, RLS in v2.0)
Learning approachatlas learn CLI (auditable YAML proposals) + dynamic learned_patterns DB with admin reviewRAG training (DDL + docs + SQL pairs in vector DB)
Enterprise featuresSSO, SCIM, custom roles, IP allowlists, approval workflows, PII masking, audit retention, data residencyNone
Data residency3-region deployment (US, EU, APAC) with misrouting detectionNo
Backend architectureEffect.ts (structured concurrency, typed errors, composable Layers, @effect/ai agent loop)Standard Python

Context Approach

Atlas uses a declarative semantic layer: YAML files that describe tables, columns, business terms, metrics, and query patterns. The agent reads these before generating SQL. Changes are explicit -- you edit YAML, review in a PR, and deploy.

Vanna uses RAG training: you feed it DDL statements, documentation strings, and example SQL question/query pairs. Vanna stores these in a vector database and retrieves relevant context at query time. This is more flexible (you can train on anything) but less predictable (retrieval quality varies).

Atlas also learns from usage, but through a different mechanism: atlas learn reviews your audit log and proposes YAML amendments (new query patterns, join discoveries, glossary refinements) that you review and commit. The dynamic learning layer captures patterns at runtime and presents them for admin review before they're injected into the agent's context.

Trade-off: A semantic layer gives you deterministic context -- you know exactly what the agent sees. Atlas's learning approach produces auditable YAML diffs you can review in a PR. RAG training is easier to bootstrap (just dump your DDL and a few example queries) but harder to audit and maintain as your schema evolves -- you can't git diff a vector database.

Deployment Model

Atlas deploys as a standalone API server with a built-in frontend, or as a hosted SaaS at app.useatlas.dev. It's designed for production: managed auth (SSO/SCIM), rate limiting, audit logging, admin console with semantic editor, plugin marketplace, notebook interface, embeddable widget, and 8 chat platform integrations. Deploy on Docker, Railway, or Vercel, or skip infrastructure entirely with Atlas Cloud (3 regions: US, EU, APAC).

Vanna is a Python package you import and call. The simplest deployment is a Jupyter notebook or Python script. Vanna also provides a <vanna-chat> web component for embedding, a Flask-based UI, and Streamlit integration. The cloud-hosted version (app.vanna.ai) adds observability, access control, and audit logs.

Trade-off: Vanna gives you more flexibility if you're already running Python services and want to integrate text-to-SQL into an existing Python API. Atlas gives you a complete production stack out of the box — including enterprise features, multi-region deployment, and a managed SaaS option.

SQL Safety

Atlas enforces read-only access through a 7-layer SQL validation pipeline: empty check, regex mutation guard, AST parsing (single SELECT only), table whitelist (only semantic layer entities), RLS injection, auto LIMIT, and statement timeout.

Vanna v2.0 added parameterized queries and row-level security, but does not include multi-layer SQL validation. The generated SQL is passed to your database connection with basic guardrails. You're responsible for adding additional protections -- read-only database users, mutation guards, and timeout enforcement.

If you use Vanna in production, ensure your database connection uses a read-only user and implement your own query validation layer.

Ecosystem

Atlas has a typed Plugin SDK with 21+ official plugins covering datasource adapters, sandbox backends, interaction channels (Slack, Teams, Discord, Telegram, Google Chat, GitHub, Linear, WhatsApp via Chat SDK, and MCP), and action triggers (email, JIRA, webhooks). Plugins are discoverable through a built-in marketplace (browse, install, configure per workspace). You can build custom plugins with bun create @useatlas/plugin.

Vanna has a modular architecture where you can swap the LLM backend (OpenAI, Mistral, Ollama, etc.) and vector store (ChromaDB, Pinecone, etc.). This is closer to a library with pluggable backends than a plugin ecosystem.

Enterprise Readiness

Atlas ships with enterprise features out of the box: SSO (SAML/OIDC) and SCIM provisioning, custom role definitions, IP allowlists, approval workflows for sensitive operations, configurable audit log retention with CSV export, PII detection and column masking, compliance reporting, data residency controls with 3-region deployment, custom domains, and SLA monitoring. The backend uses Effect.ts for structured concurrency, typed errors, graceful shutdown, and circuit breaking — with @effect/ai powering the agent loop and @effect/sql for native database clients.

Vanna v2.0 added RLS, audit logs, and rate limiting, but enterprise identity management (SSO, SCIM), approval workflows, and structured error handling are not part of the library.

When to Choose Vanna

  • You work primarily in Python and want to integrate text-to-SQL into existing Python services
  • You want a library, not a product -- minimal opinions about deployment, auth, or UI
  • You prefer RAG-style training over a declarative semantic layer
  • You're prototyping or building a one-off analysis tool, not a production embedded feature
  • Fully MIT license matters (Atlas server is AGPL-3.0, though client libs are MIT)

On this page