[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-2318":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":24,"defaultBranch":25,"hasWiki":23,"hasPages":24,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},2318,"vanna","vanna-ai\u002Fvanna","vanna-ai","🤖 Chat with your SQL database 📊. Accurate Text-to-SQL Generation via LLMs using Agentic Retrieval 🔄.","https:\u002F\u002Fvanna.ai\u002Fdocs\u002F",null,"Python",23597,2421,151,226,0,9,37,172,38,45,"MIT License",true,false,"main",[27,28,29,30,31,32,33,34],"agent","ai","data-visualization","database","llm","rag","sql","text-to-sql","2026-06-12 02:00:40","# Vanna 2.0: Turn Questions into Data Insights\n\n**Natural language → SQL → Answers.** Now with enterprise security and user-aware permissions.\n\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.8+-blue.svg)](https:\u002F\u002Fpython.org)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-green.svg)](LICENSE)\n[![Code style: black](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg)](https:\u002F\u002Fgithub.com\u002Fpsf\u002Fblack)\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F476cd421-d0b0-46af-8b29-0f40c73d6d83\n\n\n![Vanna2 Demo](img\u002Farchitecture.png)\n\n---\n\n## What's New in 2.0\n\n🔐 **User-Aware at Every Layer** — Queries automatically filtered per user permissions\n\n🎨 **Modern Web Interface** — Beautiful pre-built `\u003Cvanna-chat>` component\n\n⚡ **Streaming Responses** — Real-time tables, charts, and progress updates\n\n🔒 **Enterprise Security** — Row-level security, audit logs, rate limiting\n\n🔄 **Production-Ready** — FastAPI integration, observability, lifecycle hooks\n\n> **Upgrading from 0.x?** See the [Migration Guide](MIGRATION_GUIDE.md) | [What changed?](#migration-notes)\n\n---\n\n## Get Started\n\n### Try it with Sample Data\n\n[Quickstart](https:\u002F\u002Fvanna.ai\u002Fdocs\u002Fquick-start)\n\n### Configure\n\n[Configure](https:\u002F\u002Fvanna.ai\u002Fdocs\u002Fconfigure)\n\n### Web Component\n\n```html\n\u003C!-- Drop into any existing webpage -->\n\u003Cscript src=\"https:\u002F\u002Fimg.vanna.ai\u002Fvanna-components.js\">\u003C\u002Fscript>\n\u003Cvanna-chat\n  sse-endpoint=\"https:\u002F\u002Fyour-api.com\u002Fchat\"\n  theme=\"dark\">\n\u003C\u002Fvanna-chat>\n```\n\nUses your existing cookies\u002FJWTs. Works with React, Vue, or plain HTML.\n\n---\n\n## What You Get\n\nAsk a question in natural language and get back:\n\n**1. Streaming Progress Updates**\n\n**2. SQL Code Block (By default only shown to \"admin\" users)**\n\n**3. Interactive Data Table**\n\n**4. Charts** (Plotly visualizations)\n\n**5. Natural Language Summary**\n\nAll streamed in real-time to your web component.\n\n---\n\n## Why Vanna 2.0?\n\n### ✅ Get Started Instantly\n* Production chat interface\n* Custom agent with your database\n* Embed in any webpage\n\n### ✅ Enterprise-Ready Security\n**User-aware at every layer** — Identity flows through system prompts, tool execution, and SQL filtering\n**Row-level security** — Queries automatically filtered per user permissions\n**Audit logs** — Every query tracked per user for compliance\n**Rate limiting** — Per-user quotas via lifecycle hooks\n\n### ✅ Beautiful Web UI Included\n**Pre-built `\u003Cvanna-chat>` component** — No need to build your own chat interface\n**Streaming tables & charts** — Rich components, not just text\n**Responsive & customizable** — Works on mobile, desktop, light\u002Fdark themes\n**Framework-agnostic** — React, Vue, plain HTML\n\n### ✅ Works With Your Stack\n**Any LLM:** OpenAI, Anthropic, Ollama, Azure, Google Gemini, AWS Bedrock, Mistral, Others\n**Any Database:** PostgreSQL, MySQL, Snowflake, BigQuery, Redshift, SQLite, Oracle, SQL Server, DuckDB, ClickHouse, Others\n**Your Auth System:** Bring your own — cookies, JWTs, OAuth tokens\n**Your Framework:** FastAPI, Flask\n\n### ✅ Extensible But Opinionated\n**Custom tools** — Extend the `Tool` base class\n**Lifecycle hooks** — Quota checking, logging, content filtering\n**LLM middlewares** — Caching, prompt engineering\n**Observability** — Built-in tracing and metrics\n\n---\n\n## Architecture\n\n![Vanna2 Diagram](img\u002Fvanna2.svg)\n\n---\n\n## How It Works\n\n```mermaid\nsequenceDiagram\n    participant U as 👤 User\n    participant W as 🌐 \u003Cvanna-chat>\n    participant S as 🐍 Your Server\n    participant A as 🤖 Agent\n    participant T as 🧰 Tools\n\n    U->>W: \"Show Q4 sales\"\n    W->>S: POST \u002Fapi\u002Fvanna\u002Fv2\u002Fchat_sse (with auth)\n    S->>A: User(id=alice, groups=[read_sales])\n    A->>T: Execute SQL tool (user-aware)\n    T->>T: Apply row-level security\n    T->>A: Filtered results\n    A->>W: Stream: Table → Chart → Summary\n    W->>U: Display beautiful UI\n```\n\n**Key Concepts:**\n\n1. **User Resolver** — You define how to extract user identity from requests (cookies, JWTs, etc.)\n2. **User-Aware Tools** — Tools automatically check permissions based on user's group memberships\n3. **Streaming Components** — Backend streams structured UI components (tables, charts) to frontend\n4. **Built-in Web UI** — Pre-built `\u003Cvanna-chat>` component renders everything beautifully\n\n---\n\n## Production Setup with Your Auth\n\nHere's a complete example integrating Vanna with your existing FastAPI app and authentication:\n\n```python\nfrom fastapi import FastAPI\nfrom vanna import Agent\nfrom vanna.servers.fastapi.routes import register_chat_routes\nfrom vanna.servers.base import ChatHandler\nfrom vanna.core.user import UserResolver, User, RequestContext\nfrom vanna.integrations.anthropic import AnthropicLlmService\nfrom vanna.tools import RunSqlTool\nfrom vanna.integrations.sqlite import SqliteRunner\nfrom vanna.core.registry import ToolRegistry\n\n# Your existing FastAPI app\napp = FastAPI()\n\n# 1. Define your user resolver (using YOUR auth system)\nclass MyUserResolver(UserResolver):\n    async def resolve_user(self, request_context: RequestContext) -> User:\n        # Extract from cookies, JWTs, or session\n        token = request_context.get_header('Authorization')\n        user_data = self.decode_jwt(token)  # Your existing logic\n\n        return User(\n            id=user_data['id'],\n            email=user_data['email'],\n            group_memberships=user_data['groups']  # Used for permissions\n        )\n\n# 2. Set up agent with tools\nllm = AnthropicLlmService(model=\"claude-sonnet-4-5\")\ntools = ToolRegistry()\ntools.register(RunSqlTool(sql_runner=SqliteRunner(\".\u002Fdata.db\")))\n\nagent = Agent(\n    llm_service=llm,\n    tool_registry=tools,\n    user_resolver=MyUserResolver()\n)\n\n# 3. Add Vanna routes to your app\nchat_handler = ChatHandler(agent)\nregister_chat_routes(app, chat_handler)\n\n# Now you have:\n# - POST \u002Fapi\u002Fvanna\u002Fv2\u002Fchat_sse (streaming endpoint)\n# - GET \u002F (optional web UI)\n```\n\n**Then in your frontend:**\n```html\n\u003Cvanna-chat sse-endpoint=\"\u002Fapi\u002Fvanna\u002Fv2\u002Fchat_sse\">\u003C\u002Fvanna-chat>\n```\n\nSee [Full Documentation](https:\u002F\u002Fvanna.ai\u002Fdocs) for custom tools, lifecycle hooks, and advanced configuration\n\n---\n\n## Custom Tools\n\nExtend Vanna with custom tools for your specific use case:\n\n```python\nfrom vanna.core.tool import Tool, ToolContext, ToolResult\nfrom pydantic import BaseModel, Field\nfrom typing import Type\n\nclass EmailArgs(BaseModel):\n    recipient: str = Field(description=\"Email recipient\")\n    subject: str = Field(description=\"Email subject\")\n\nclass EmailTool(Tool[EmailArgs]):\n    @property\n    def name(self) -> str:\n        return \"send_email\"\n\n    @property\n    def access_groups(self) -> list[str]:\n        return [\"send_email\"]  # Permission check\n\n    def get_args_schema(self) -> Type[EmailArgs]:\n        return EmailArgs\n\n    async def execute(self, context: ToolContext, args: EmailArgs) -> ToolResult:\n        user = context.user  # Automatically injected\n\n        # Your business logic\n        await self.email_service.send(\n            from_email=user.email,\n            to=args.recipient,\n            subject=args.subject\n        )\n\n        return ToolResult(success=True, result_for_llm=f\"Email sent to {args.recipient}\")\n\n# Register your tool\ntools.register(EmailTool())\n```\n\n---\n\n## Advanced Features\n\nVanna 2.0 includes powerful enterprise features for production use:\n\n**Lifecycle Hooks** — Add quota checking, custom logging, content filtering at key points in the request lifecycle\n\n**LLM Middlewares** — Implement caching, prompt engineering, or cost tracking around LLM calls\n\n**Conversation Storage** — Persist and retrieve conversation history per user\n\n**Observability** — Built-in tracing and metrics integration\n\n**Context Enrichers** — Add RAG, memory, or documentation to enhance agent responses\n\n**Agent Configuration** — Control streaming, temperature, max iterations, and more\n\n---\n\n## Use Cases\n\n**Vanna is ideal for:**\n- 📊 Data analytics applications with natural language interfaces\n- 🔐 Multi-tenant SaaS needing user-aware permissions\n- 🎨 Teams wanting a pre-built web component + backend\n- 🏢 Enterprise environments with security\u002Faudit requirements\n- 📈 Applications needing rich streaming responses (tables, charts, SQL)\n- 🔄 Integrating with existing authentication systems\n\n---\n\n## Community & Support\n\n- 📖 **[Full Documentation](https:\u002F\u002Fvanna.ai\u002Fdocs)** — Complete guides and API reference\n- 💡 **[GitHub Discussions](https:\u002F\u002Fgithub.com\u002Fvanna-ai\u002Fvanna\u002Fdiscussions)** — Feature requests and Q&A\n- 🐛 **[GitHub Issues](https:\u002F\u002Fgithub.com\u002Fvanna-ai\u002Fvanna\u002Fissues)** — Bug reports\n- 📧 **Enterprise Support** — support@vanna.ai\n\n---\n\n## Migration Notes\n\n**Upgrading from Vanna 0.x?**\n\nVanna 2.0 is a complete rewrite focused on user-aware agents and production deployments. Key changes:\n\n- **New API**: Agent-based instead of `VannaBase` class methods\n- **User-aware**: Every component now knows the user identity\n- **Streaming**: Rich UI components instead of text\u002Fdataframes\n- **Web-first**: Built-in `\u003Cvanna-chat>` component and server\n\n**Migration path:**\n\n1. **Quick wrap** — Use `LegacyVannaAdapter` to wrap your existing Vanna 0.x instance and get the new web UI immediately\n2. **Gradual migration** — Incrementally move to the new Agent API and tools\n\nSee the complete [Migration Guide](MIGRATION_GUIDE.md) for step-by-step instructions.\n\n---\n\n## License\n\nMIT License — See [LICENSE](LICENSE) for details.\n\n---\n\n**Built with ❤️ by the Vanna team** | [Website](https:\u002F\u002Fvanna.ai) | [Docs](https:\u002F\u002Fvanna.ai\u002Fdocs) | [Discussions](https:\u002F\u002Fgithub.com\u002Fvanna-ai\u002Fvanna\u002Fdiscussions)\n","Vanna 是一个将自然语言转换为 SQL 查询的工具，通过大语言模型和代理检索技术实现精准的文本到SQL生成。其核心功能包括支持多种数据库和大语言模型、用户权限感知的安全性设计、实时数据流响应以及美观且可嵌入的Web界面组件。适用于需要快速从数据库获取洞察的企业级应用开发场景，特别是在对安全性有高要求的情况下。它能够帮助企业用户在不编写代码的情况下，通过简单的自然语言提问即可获得复杂的数据分析结果，极大地提高了数据分析效率。",2,"2026-06-11 02:49:28","top_language"]