Overview
dbt Charts is an open-source language from dbt Labs that describes a full interactive dashboard in a single YAML file. SQL still says what data you want; the YAML layer says how you want to see it. The engine compiles that definition into an interactive board, and the bundled dct command-line tool can also render it to HTML, PDF, PNG, SVG or JSON.
The design goal is reviewability. Because a board is one text file, it is version-controlled, diffable, and can be read in a pull request, which means a change to a dbt model and a change to the chart that reads it can travel on the same branch through the same CI run. dbt itself is optional — dbt Charts works with plain SQL — but boards can call ref() and source() when you do run dbt.
As a data-app builder, dbt Charts sits between a warehouse and a published board. Sixteen chart types ship built in, along with five themes, interactive filters and variables. dbt Labs also runs a hosted service at dbtCharts.com, in public beta, that adds hosting, access control, a visual editor, version history, conversational analytics and permissioned sharing on top of the same open language.
What it does
- A declarative YAML syntax that defines queries, charts and layout in one file
- Sixteen built-in chart types, plus composed charts built from them, and five themes
- The dct CLI validates a board without warehouse access and serves a live preview with working filters
- Renders boards to HTML, PDF, PNG, SVG or JSON for sharing and scheduled reports
- Optional dbt integration: boards can reference existing models through ref() and source()
- Warehouse support for DuckDB, SQLite, Postgres, Snowflake, BigQuery, Redshift, Databricks, Spark and Trino
- dct impact lists the boards a column change would affect before you make it
Getting started
dbt Charts needs Python 3.10 or newer. Install the dct CLI, point it at a board, and preview it locally.
Install the CLI
Install dbt Charts as a tool. DuckDB and SQLite work out of the box; add a warehouse extra if you need one.
uv tool install dbt-charts
# or with pip
pip install dbt-charts
# with a warehouse adapter
uv tool install "dbt-charts[snowflake]"Check the install
Confirm the dct command is on your path.
dct --versionValidate a board
Validation checks your YAML for errors and reports error codes, file references and suggested fixes. It does not need warehouse access, so it is cheap to run in CI.
dct validatePreview and export
Serve the board locally with working filters, then render it to a file when you want to share it.
dct serve
dct render my_board --format html
dct render my_board --format pdfPoint an agent at it
dbt Charts ships agent skills that teach a coding agent the YAML language, which is the workflow the launch post was written around.
dct skills introCommands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Keep dashboards in the same repo as your dbt models so a model change and its charts ship on one branch
- Review a dashboard change as a readable diff in a pull request instead of an audit log of UI clicks
- Ask a coding agent for a dashboard and get one auditable YAML file back rather than a pile of HTML, CSS and JavaScript
- Render scheduled PDF or PNG reports from the same board definition that serves the interactive version
- Run dct impact before changing a column to see which boards would break
How dbt Charts compares
dbt Charts alongside other open-source data app builders tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| Streamlit | ★ 45.8k | A Python framework that turns scripts into interactive data and ML web apps with simple widget calls and no frontend code. |
| Gradio | ★ 43.5k | A Python library for quickly building shareable web demos and UIs for machine learning models, APIs, and arbitrary functions. |
| Reflex | ★ 28.9k | A framework for building full-stack web apps entirely in Python, compiling component code to a React frontend and Python backend. |
| Dash | ★ 24.4k | A Python framework from Plotly for building analytical web dashboards and data apps with interactive charts and no JavaScript required. |
| marimo | ★ 22.8k | A reactive Python notebook stored as plain Python that can be run as a script or deployed as an interactive data app. |
| Data Formulator | ★ 17.2k | A Microsoft Research tool that combines a UI with AI to help users create rich data visualizations through natural language and direct manipulation. |
| NiceGUI | ★ 16.2k | A backend-first Python UI framework built on FastAPI and Vue for creating web interfaces, dashboards, and internal tools. |
| dbt Charts | — | A declarative YAML syntax around SQL for making dashboards |