Charts built for Chat · dbt Charts BetaLanguagePlatformPricingBlogDocsLanguagePlatformPricingBlogDocsGitHubSign in Sign in Get startedBlog · September 14, 2026 · Dave FowlerCharts built for ChatWe’re open sourcing dbt Charts, a declarative language for dashboards, so that even the dashboards you build by chatting with an agent can be governed.AI for data is here, and the long-promised self-serve analytics is finally happening. Anyone with a data connection can chat a report into existence in an afternoon, and the first results are impressive.The frictions show up fast, though. By default an agent turns one simple report into a pile of files: HTML, CSS, and JavaScript, a couple of chart libraries, and a React or Streamlit app once it has to be live. Tracing a result back to its source means following it through several languages and files, which is slow for people to audit and costs the agent time and tokens on every change.BI tools went the other way and bolted copilots onto their UI-first apps. That keeps the AI on governed rails, but narrow ones: the agent can do only what the UI exposes.So today you choose between the messy freedom of code and the narrow control of a BI tool. We built a third option: skip ahead, or read on for how BI got here.Unbundling BIAs dbt Labs founder Tristan Handy wrote recently in BI’s Second Unbundling:When I started in data, BI tools were full-stack. Everything happened inside one product: data ingestion, transformation, compute, caching, semantics, visualization, identity. The BI tool was the data stack. MicroStrategy, Cognos, etc: they’re not just visualization tools, they’re integrated data platforms.Then the modern data stack happened. From ~2015 to 2022, the infrastructure layers of that BI bundle got pulled out and turned into purpose-built infrastructure. Compute went to the Big 5. Ingestion went to Fivetran. Transformation went to dbt. The BI tool was left with: visualization, interactive analytical interfaces, semantic definitions (sometimes!), identity and access management, and web hosting.<201201234567890123456
Warehousing Big 5E L T Extract Load Transform
BI everything elseWhat that unbundling left behind is the BI tool we know today, and charts are its biggest piece. They stayed in the UI for good reason: for most people, clicking is quicker than writing YAML. But more and more charts won’t be made by people. As the front end and user of everything becomes increasingly a chat agent, this preference flips. Agents are fluent in code, SQL, and Git, and clumsy in someone else’s UI. So charts need to move to where agents work: into code.Charts leave the BI toolToday we’re taking the next step in unbundling BI: we’re open sourcing dbt Charts, which takes charts out of the BI tool and puts them in code, specifically a new structured YAML language that can declare a full interactive dashboard in one auditable YAML file. Chat freely with an agent, and what it makes has the freedom of code while staying easy to read.2026.8 Warehousing Big 5E L T Extract Load Transform
New C Chart BI a few bitsIn dbt Charts, SQL remains the language for declaring WHAT data you want to see, and we wrap that in YAML to declare HOW you want to see it.We’ve spent a long time distilling the language to a few core, extensible elements: deep in what they can express, easy to organize and read. The YAML wraps more than SQL. Markdown carries the prose, and Jinja, as in dbt, carries variables and macros.Here’s a small example: one variable (a UI filter), one query and one chart.variables: status: column: main.documents.status
queries: doc_growth: | SELECT DATE_TRUNC('month', created_at) AS month, SUM(COUNT(*)) OVER (ORDER BY month) AS num_docs FROM main.documents WHERE {{ filter('status', status) }} GROUP BY 1
charts: growth: title: Documents created, all time type: area query: doc_growth x: month y: num_docs
rows: - growthThat file is the whole board. The CLI renders any board file to static SVG, or to HTML, PNG, PDF, and even the terminal, on your laptop or in CI, and serves a folder of them as a site:dct render charts/documents.yml --format svg # or html, png, pdf, terminal dct serveThose few elements go deep: over 1,100 config options today, across sixteen chart types and the composed charts built from them. And like any good language, it can express complex layouts and visuals.You rarely set those options by hand. Styles cascade: a chart inherits from its board, the board from its theme, and a theme is one line to switch. A board can also extends: another board, so a house style or a standard report is written once and inherited everywhere. Boards stay short, and theming stays cheap.A complete dbt Charts board, rendered from one easy-to-read YAML file.Deep integration with dbtYou don’t have to use dbt Charts with a dbt project, but when you do, a lot unlocks. The chart layer sits directly on the transform layer, and the deeper the integration, the easier it is to change both.With dbt Charts, your charts/ directory lives next to your models/ in the same Git repo, so a change to a model and its charts ships on one branch, through one CI run, and breaks before it reaches production.your_dbt_project/ .git/ dbt_project.yml models/ charts/ # new folder in a dbt repo for your dashboards revenue.ymlQueries reach models through ref(), resolved from your manifest, so a renamed model or a missing column fails the pull request that broke it, before dbt run rebuilds the warehouse:dbt parse && dct validate charts/Support for the dbt Semantic Layer is planned, so a board can use a metric as the project defines it instead of restating its SQL. Follow dbt-labs/dbt-charts#1.Built for chatAgents can be quite blind, and they do best with a tight feedback loop. dbt Charts gives them one: strict validation of both the YAML and the SQL, and an extensive set of visualization checks that flag problems before anyone sees the board:$ dct render charts/revenue.yml WARN-BAR-BAND-WIDTH-TOO-NARROW 182 bands x 2 series across 640px Fix: roll up to a coarser grain.
WARN-TABLE-COLUMNS-OVERFLOW Table needs 980px but only 640px is available. Fix: drop columns or widen the slot.A beautiful, cohesive reporting systemWe hope dbt Charts, like dbt before it, becomes the open standard language for its layer of the data stack. We designed it for a future where humans and AI build together, and we wanted it to look like that future, not like another dashboard grid. We recruited RJ Andrews, a data graphic designer, author, and historian, to design the charts. His grasp of the craft’s history is what makes the result feel new: it reaches past the dashboard era to what charts looked like when people drew them with care.Many tools cheat with cards and boxes that fake alignment at the cost of visual noise and lost space. We worked out the spacing, sizing, and layout of every chart, on its own and next to its neighbors.The result is a cohesive system of charts that feels a level above current BI.dbtCharts.com: a BI platform built on dbt ChartsAlongside the open-source language, today we’re launching dbtCharts.com in public beta: a hosted platform for the rest of BI. With charts pulled out, what remains is chiefly hosting, access control, and a UI. By their nature these perhaps can’t be unbundled, or at least shouldn’t be, so the platform handles them on top of the open-source language.variables:queries:charts:rows:ChatUIHosting & AccessdbtCharts.comBI platformdbt ChartsOpen chart language: YAML and SQL Semantic layerOptional dbt modelsTransformation Your warehouseData same dbtGit repoThe platform connects to your warehouse and adds conversational analytics, a visual editor for the finishing touches, version history, and sharing with permissions for users and groups, so the people reading a board don’t need a warehouse login.And of course, these charts were built for chat. The platform has first-class conversational analytics: like Claude or ChatGPT, but with permissioned read-only access to your warehouse and an expert analyst’s skills and tools built in. Explore by chatting with charts, and at any point click in to fine-tune and save the board.
One board. Every way to work. Design YAML History Sharing
Pause
PlayBecause it’s built on the open language, every change, from chat, the visual editor, or code, lands in the same YAML in your Git repo. Nothing is locked in: the same board runs on your laptop, in CI, and on the platform, and teams can self-serve, agent in hand, without creating a second, hidden data stack.Try the betaThe dbt Charts language is open source under the Apache 2.0 license, and you can author, render, and serve boards locally without creating an account. Install it yourself, or hand your coding agent one line:Terminal uv tool install dbt-charts
Claude / AI Make charts of this with dbt Charts. Start with: uv tool install dbt-charts && dct skills intro
Code: github.com/dbt-labs/dbt-chartsDocs: docs.dbtCharts.comHosted BI: dbtCharts.comCommunity: #dbt-charts on the dbt Community Slackdbt Charts is pre-1.0 and still changing. When the grammar changes, boards migrate as they parse, so the boards you write today keep rendering. Try it, tell us what is missing[1][2], join the discussion in #dbt-charts on Slack, and help us build the chart layer that open data infrastructure has been waiting for.The language-first BI layer.ProductThe languagedbtCharts.comPricingDocsQuickstartChart referenceGitHubCompanyBlogCommunityContact© 2026 dbt Charts · dbtCharts.comPrivacy Policy Terms of Service AI Terms |
The development of dbt Charts addresses the friction points arising from using AI agents to generate data visualizations, which typically result in fragmented outputs involving HTML, CSS, JavaScript, and various chart libraries. Tracing these results back to their origin is slow for auditing and consumes unnecessary agent resources. This situation highlights a choice for data visualization: either the experimental freedom of code or the narrow control offered by existing Business Intelligence tools. dbt Charts proposes a third option by moving charts out of the proprietary BI tool and into a structured code format, enabling agents to work within the freedom of code while maintaining readability.
This concept stems from the broader movement of unbundling Business Intelligence platforms. Historically, BI tools were full-stack, bundling data ingestion, transformation, compute, caching, semantics, visualization, and identity management into a single product. In the modern data stack, these infrastructure layers were separated, with specialized tools handling distinct functions, such as compute managed by the Big 5, ingestion by tools like Fivetran, and transformation by dbt. The BI tool was left with visualization, semantic definitions, and access control. dbt Charts further unbundles this by taking charts—a key component of the UI—and placing them into code.
The core of dbt Charts is a new structured YAML language designed to declare a complete, interactive dashboard within a single, auditable file. This allows users to use SQL to declare the data required and YAML to define the visualization structure. The system leverages existing language features, incorporating SQL for specifying the data to be analyzed, YAML for defining the how-to-visualize structure, Markdown for descriptive prose, and Jinja for dynamic variables and macros. A sample structure involves defining variables for filters, SQL queries for data retrieval, and chart definitions specifying the type and source of the visualization. This file serves as the comprehensive definition for the entire report.
The system is designed to support complex visual arrangements through a cascading style mechanism where charts inherit properties from the board, which in turn inherits from a theme, allowing for coherent, low-maintenance design. This approach ensures that styling and layout are defined once, promoting visual cohesion across multiple visualizations. The system also includes deep integration with the dbt ecosystem; charts reside in the same Git repository as data models, enabling unified version control and CI/CD pipelines. Changes to a data model and its associated charts are processed together, ensuring that a change in the underlying data automatically triggers checks and failures before the changes reach production. Furthermore, the system incorporates strict validation of both the YAML and SQL components, alongside visualization checks that flag potential rendering issues, such as inadequate space for chart elements, thereby providing a tight feedback loop for agents.
The design philosophy behind dbt Charts emphasizes creating a cohesive reporting system, aiming to surpass current BI solutions by focusing on the intentional layout, spacing, and visual integrity of charts, drawing inspiration from design history to achieve a refined aesthetic. The platform is intended to be the open standard language for the data stack visualization layer, facilitating collaboration between humans and artificial intelligence. To support this, the project is evolving, with plans to integrate the dbt Semantic Layer so that boards can reference metrics defined within the project rather than restating SQL.
In addition to the open-source language, the project is launching dbtCharts.com as a hosted platform. This platform handles the layer that remains after unbundling the charts, specifically managing hosting, access control, and a user interface. This architecture allows the open-source YAML and SQL language to remain decoupled and flexible. The hosted platform provides conversational analytics capabilities, offering permissioned, read-only access to warehouse data and integrating expert analytical tools, essentially providing a conversational analytics layer built on top of the charts. This allows users to explore data by chatting with charts and refine results through a visual editor. The open-source nature of the language permits users to self-host and render boards locally, underscoring a principle where every change—whether made via chat, an editor, or code—lands in the same manifest file within the Git repository, ensuring consistency across all deployment environments. |