dbt Charts Open Source Release: Declarative YAML Dashboards for AI‑Powered Analytics
TL;DR
dbt Charts 0.x introduces a declarative YAML language for full‑stack dashboards, enabling AI agents to create, validate, and version‑control charts as code while retaining the governance and auditability of traditional BI tools.
Why a New Dashboard Language?
Answer: Existing AI‑generated dashboards scatter output across HTML, CSS, JavaScript, and framework files, making audits slow and token‑heavy; BI tools keep AI on a narrow UI surface. dbt Charts moves the chart definition into a single, auditable YAML file that agents can read, write, and validate.
- Agents excel at SQL, Git, and YAML, but struggle with UI‑centric tools.
- A single YAML board captures variables, queries, chart specs, and layout in a self‑contained artifact.
- Validation runs locally (
dct validate) and flags visual problems before any UI is rendered.
Core Design: Unbundling the BI Stack
Answer: The modern data stack has already split ingestion, transformation, and compute from the BI layer; dbt Charts completes the unbundling by extracting the visualization layer into code.
- Historical context – Traditional BI tools (MicroStrategy, Cognos) bundled ingestion → transformation → visualization. Since ~2015 the stack has been split, leaving BI tools with only visualization, UI, semantics, and hosting.
- Shift to chat – As conversational agents become the primary front‑end, the UI‑first approach becomes a bottleneck. Moving charts to code aligns with agents’ strengths.
The YAML Specification
Answer: A dbt Charts board is a single YAML file that declares variables, SQL queries, chart types, and layout rows.
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:
- growth
- SQL for data – The
queriesblock holds raw SQL, preserving dbt’s expressive power. - Markdown & Jinja – Prose can be added via Markdown; Jinja enables macros and variable interpolation, mirroring dbt’s templating.
- Extensibility – Over 1,100 configuration options across 16 chart types and composable charts are available, yet most defaults are inherited via themes and board extensions.
Rendering & CI Integration
Answer: The dct CLI renders any board to SVG, HTML, PNG, PDF, or even terminal output, and can serve a static site for sharing.
# Render to SVG (or html, png, pdf, terminal)
dct render charts/documents.yml --format svg
# Serve a folder of rendered charts
dct serve
- Boards live alongside dbt models (
charts/next tomodels/) so a single PR can modify both transformation and visualization. dbt parse && dct validate charts/catches brokenref()calls or visual warnings before deployment.- Future support for the dbt Semantic Layer will allow charts to reference metrics instead of raw SQL.
Governance, Auditing, and AI Feedback Loops
Answer: dbt Charts provides strict validation of both YAML syntax and SQL semantics, plus visual warnings that surface before a chart is published.
$ 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.
- The deterministic output (same YAML → same chart) enables reproducible CI pipelines.
- Because the spec is version‑controlled, any change is traceable to a commit, satisfying audit requirements.
Community and Competitive Landscape
Answer: The project has sparked discussion about alternatives and positioning.
- Malloy – An alternative DSL (Malloyyo/Publisher) also targets AI‑generated charts, but remains a separate ecosystem. Commenter @mrtimo notes Malloy’s free‑to‑use hosting versus dbt Charts’ optional SaaS layer.
- Observable Framework – @bbkane asks how dbt Charts differs; the key distinction is a YAML‑first, dbt‑integrated spec versus Observable’s Markdown+JS approach.
- Vega‑Lite – @engrav3er40 wonders about overlap; Vega‑Lite is a visual grammar, while dbt Charts couples that grammar with data‑model governance and CI integration.
- Evidence, Superset, and other headless BI – Several commenters (e.g., @theodorewiles, @hackandthink) point out similar YAML‑based dashboard definitions, but dbt Charts uniquely nests within the dbt transformation layer and offers first‑class chat integration.
- Design focus – The project enlisted data‑graphic designer RJ Andrews to create a cohesive visual language, addressing criticism that many code‑driven dashboards suffer from “visual noise”.
Hosted Platform (dbtCharts.com)
Answer: While the language is open source, dbtCharts.com provides a public‑beta SaaS layer for hosting, access control, and conversational analytics.
- Connects to a warehouse, adds a chat interface (Claude/ChatGPT‑style) with read‑only permissions, and offers a visual editor for fine‑tuning.
- All edits—whether from chat, UI, or code—commit back to the same YAML file in Git, preserving the single source of truth.
- The platform handles the only remaining BI responsibilities that are hard to unbundle: hosting, authentication, and collaborative sharing.
Reception and Open Questions
Answer: Early community feedback highlights both enthusiasm and skepticism.
- Positive reception – Users appreciate the deterministic, auditable artifacts (@mollifier14, @marcy_74) and see practical use cases for daily KPI updates in Slack/Teams.
- Critiques – Some argue the innovation is incremental (@dgudkov) and question the choice of YAML as a “language” (@carterschonwald, @pgt). Others note that visual interactivity and semantic layers remain open problems (@RobGoretsky, @chupchap).
- Future work – Planned support for the dbt Semantic Layer, richer interaction primitives, and broader UI integrations aim to address these concerns.
Getting Started
Answer: To try dbt Charts locally, install the CLI and render a sample board.
# Install via uv (or pip)
uv tool install dbt-charts
# Render a board to SVG
dct render charts/documents.yml --format svg
- Repository: https://github.com/dbt-labs/dbt-charts (Apache 2.0)
- Documentation: https://docs.dbtcharts.com/
- Community Slack: #dbt-charts on the dbt Community Slack
Bottom Line
Answer: dbt Charts fills a gap between free‑form code generation and locked‑down BI UIs by providing a version‑controlled, YAML‑based dashboard language that integrates tightly with dbt, supports AI‑driven authoring, and enforces governance through CI‑ready validation.
Sources
Related
- Dispatch
- Dispatch
- Dispatch
- Project
- Project