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 queries block 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 to models/) so a single PR can modify both transformation and visualization.
  • dbt parse && dct validate charts/ catches broken ref() 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

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