# How dbt works, and why orchestrators shouldn't split it into tasks

DevFeed: [How dbt works, and why orchestrators shouldn't split it into tasks](<https://devfeed.tech/articles/how-dbt-works-and-why-orchestrators-shouldn-t-split-it-into-tasks-30714.md>)

Original publisher: [Read original article](<https://www.windmill.dev/blog/how-dbt-works-and-its-orchestrators>)

Author: Ruben Fiszel

Published: 2026-08-20T00:00:00Z

Content type: article

Language: en

Sources: [Windmill Blog](<https://devfeed.tech/sources/windmill-blog.md>)

Topics: [Compiler](<https://devfeed.tech/topics/compiler.md>), [Job](<https://devfeed.tech/topics/job.md>), [airflow](<https://devfeed.tech/topics/airflow.md>), [data](<https://devfeed.tech/topics/data.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [airflow](<https://devfeed.tech/tags/airflow.md>), [bigquery](<https://devfeed.tech/tags/bigquery.md>), [cli](<https://devfeed.tech/tags/cli.md>), [dagster](<https://devfeed.tech/tags/dagster.md>), [data](<https://devfeed.tech/tags/data.md>), [data-pipelines](<https://devfeed.tech/tags/data-pipelines.md>), [dbt](<https://devfeed.tech/tags/dbt.md>), [dbt-data-pipelines-airflow-dagster-orchestration](<https://devfeed.tech/tags/dbt-data-pipelines-airflow-dagster-orchestration.md>), [job](<https://devfeed.tech/tags/job.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [scheduler](<https://devfeed.tech/tags/scheduler.md>), [series](<https://devfeed.tech/tags/series.md>)

## AI overview

This primer explains dbt's architecture and examines five ways teams orchestrate it in production. It argues that running a project as one dbt command, while reading dbt's per-model execution state, is generally more efficient and less fragile than creating one orchestrator task per model. It discusses Dagster and astronomer-cosmos's convergence on this approach, including a reported cost comparison.

## Source excerpt

How is dbt actually orchestrated, and why does running it as one job beat one task per model? A primer on dbt as a compiler with a scheduler attached, the five ways teams wrap it, and why both Dagster and astronomer-cosmos converged on a single dbt invocation with per-model state projected out of it.