Aureka: A Self-Hosted Chat BI Tool That Turns Natural Language Into SQL and Charts
Self-hosted Chat BI sidesteps the data-privacy and cost concerns that keep small teams from adopting cloud analytics. A local DuckDB engine means million-row queries run in seconds without a server, and the pluggable LLM layer lets operators swap models as pricing and performance shift.
Aureka combines a chat interface with a local DuckDB-powered analytics engine to let non-technical teams query data as easily as sending a message. Users upload CSV or Excel files, ask questions like "which channel declined the most last quarter," and watch an AI agent generate SQL, run the query, and produce ECharts visualizations in a streaming, typewriter-style output. All data stays on the user's machine via SQLite and DuckDB, with no cloud uploads.
The agent pipeline routes natural language through intent classification, SQL generation with automatic error correction, and a chart advisor that picks the right visualization based on the data shape. A dual-database design separates metadata (SQLite) from analytical data (DuckDB), keeping queries fast on millions of rows while user accounts and session history remain isolated.
Built with Vue 3, NestJS, LangGraph, and a pluggable LLM provider layer that supports OpenAI, DeepSeek, Qwen, and Kimi, the project ships as a monorepo ready for local deployment. Historical conversations can be pinned into dashboards, turning one-off questions into persistent reports.
Pairing DuckDB with SQLite is a pragmatic pattern for local-first analytics tools: DuckDB crunches the numbers, SQLite handles everything else, and neither requires a separate service process.
Automatic SQL retry with error feedback turns LLM weaknesses into a self-correcting loop, which matters more for non-technical users who can't debug a failed query.
Pinning analysis results into dashboards closes the gap between ad-hoc Q&A and ongoing reporting, a workflow traditional BI tools handle poorly without heavy configuration.