{"slug": "dbt-charts-on-motherduck-declarative-dashboards", "title": "dbt Charts on MotherDuck: Declarative Dashboards", "summary": "Dbt Labs launched dbt Charts at dbt Summit and, one week later, MotherDuck added support for publishing those Charts as MotherDuck Dives, which refresh live. The integration requires just 2 config changes and uses a dbt package with three components — SQL in an on-run-end hook, Python in MotherDuck's serverless Flights runtime, and TypeScript powering the Dive visualization — to convert YAML chart configs into Vega Lite configs and publish one Dive per dashboard. MotherDuck said it built the package quickly using Claude, and that Dives are full React apps hosted in a sandbox with direct access to MotherDuck data.", "body_md": "Last week at dbt Summit, dbt Labs launched Charts. One week later and now you can publish those Charts to MotherDuck! Your dashboard definitions can live in git right next to your dbt pipelines. On MotherDuck, the dashboard experience is even better: your Charts become Dives that refresh live! Setting it up is incredibly simple and takes just 2 config changes.\n\nSo why dbt Charts? Charts provide a declarative syntax for dashboards. Sure those are fun words (SQL is declarative too after all!), but why does that help? It makes it easy for agents to write and humans to interpret at a glance. You can manage your dashboards in git just like your SQL, so you can update your visuals in the same PR that your data changes to keep things nicely in sync. Plus even though they are declarative, they still provide powerful interactivity.\n\nHow did we build this so quickly? In a word: Claude. In a few more words: the MotherDuck platform is so flexible, you can build just about anything. MotherDuck Dives are full React apps. We automatically host them for you in a sandbox with direct access to your MotherDuck data. That means they support a superset of what dbt Charts can provide and give you a blank canvas to build on. Customers create full apps in Dives, but they still work great for dashboards too.\n\nAs an example of a dbt board running on MotherDuck, have a look at this Dive:\n\nI apologize for the pie chart - avert your eyes! This was one of their examples…\n\nThe next time you build your project, your Charts will be published as MotherDuck Dives.\n\nHow does the dbt package work?\n\nAll of the complexity is nicely abstracted away thanks to dbt’s extensible package approach, but here is a bit of detail about what is going on under the hood.\n\nThree core components across SQL, Python, and TypeScript\n\nThere are 3 main pieces to the puzzle: SQL to kick things off in an on-run-end hook, Python that runs in MotherDuck’s serverless Flights runtime, and the TypeScript that powers the Dive visualization. There are a few other files in the package, but all are helpers for these 3 core tasks. For example, the Vega Lite plotting library needs to be bundled up before it is loaded into the TypeScript powering the Dive. All of that is nicely abstracted away by the dbt package.\n\nThis architecture mirrors MotherDuck’s architecture as well and is part of why this was straightforward to implement. Core data processing in MotherDuck tends to happen in SQL on our compute ducklings. Orchestration and integrating data from a variety of sources (including running dbt!) happens in Python with Flights. Visualization is TypeScript territory, and Dives use React to make that incredibly simple yet flexible. In an AI era where converting between languages is easier than ever, you can pick the right tool for the job all within the MotherDuck platform.\n\nLet’s dig (Dive?) a little deeper into the flow of what happens when you kick off a dbt build.\n\nWhat happens at runtime?\n\nFirst, your dbt DAG runs to update your data. When that run is about to complete, dbt kicks off an on-run-end hook to start the rest of this process.\n\nThat hook runs a SQL statement that ships in the dbt package. It loads your chart configurations into a MotherDuck table, along with the logic that is needed to transform those charts into Dives. That allows all of the logic to be encapsulated within the dbt package to make it easy to set up. Once the configurations are in MotherDuck, the on-run-end hook uses several other SQL statements to create and run a MotherDuck Flight. A Flight is a Python script that is run in a serverless fashion.\n\nThat Flight uses the Python logic within dbt-charts itself to convert your YAML configs into Vega Lite configs. The Flight then creates one Dive for each dashboard and publishes them to MotherDuck using our Dive management SQL functions.\n\nOnce the Flight is finished, the dbt job detects its completion and ends.\n\nThen, any authorized user can visit each Dive in their browser and see your dashboards, freshly populated with the latest data.\n\nThe beauty of this approach is that it reuses the good work done by the fine folks behind dbt Charts - especially the compilation from YAML to a full dashboard.\n\ndbt Charts 🤝 MotherDuck Dives\n\nSo if you want a dbt-governed approach to charts, we’ve got you covered! Your dashboard configuration can be as simple as a YAML file and can be version controlled in git alongside your dbt models. The same dbt build command that runs your pipeline will update your MotherDuck Dive visualizations as well. You can run those dbt models anywhere, including right on MotherDuck with a Python Flight. Thanks to Dives, you get the added benefit of live data refreshes.\n\nThe September 2026 DuckDB Ecosystem Newsletter: DuckLabs joins AWS and MotherDuck acquires Tower, DuckDB v2.0-alpha lands, table functions in pure Java, bulk loads into SQL Server, Zarr stores as SQL tables, an infinite canvas for your data, plus a community spotlight on Vladimir Gribanov.\n\nClassify text in SQL with prompt_jev(), powered by TypeSafe's Jev. 100,000 rows labeled in 40 seconds for $0.50 at frontier-LLM accuracy. Live on paid plans.", "url": "https://wpnews.pro/news/dbt-charts-on-motherduck-declarative-dashboards", "canonical_source": "https://motherduck.com/blog/dbt-Charts-on-MotherDuck-Declarative-Dashboards", "published_at": "2026-09-21 00:00:00+00:00", "updated_at": "2026-09-22 17:26:19.663818+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "ai-agents"], "entities": ["dbt Labs", "dbt Charts", "MotherDuck", "MotherDuck Dives", "Claude", "Flights", "Vega Lite", "dbt Summit"], "alternates": {"html": "https://wpnews.pro/news/dbt-charts-on-motherduck-declarative-dashboards", "markdown": "https://wpnews.pro/news/dbt-charts-on-motherduck-declarative-dashboards.md", "text": "https://wpnews.pro/news/dbt-charts-on-motherduck-declarative-dashboards.txt", "jsonld": "https://wpnews.pro/news/dbt-charts-on-motherduck-declarative-dashboards.jsonld"}}