There is no warehouse, and you do not want one yet
The join across Postgres, MySQL and SQLite happens in a staging database created for that one execution and destroyed with it. Nothing is loaded anywhere first, so there is nothing to keep in sync.
No warehouse required · sources read in place · agent as author
Honest comparison
The short version: if your data is already in a warehouse and the job is to model it, use dbt. Its whole design of models as SELECT statements, lineage from references, and tests and generated docs assumes one warehouse that everything has already been loaded into. We assume the opposite: the data is still in the operational databases it was written to, and the question crosses them. So this is an alternative to dbt only for that case, not a replacement for it where a warehouse already exists.
Read this first
The other case
The join across Postgres, MySQL and SQLite happens in a staging database created for that one execution and destroyed with it. Nothing is loaded anywhere first, so there is nothing to keep in sync.
Eight dialects, each with its own adapter and type mapping: the databases your applications actually write to, not a warehouse they were exported into.
Introspect, create a template, create a pipeline, execute, read rows: the whole loop over MCP tools. dbt's authoring surface is a repository and a CLI, which is a different shape of collaboration.
Read-only datasources enforced at save and at execution, one revocable key per agent holding the role chosen at its creation, never more than its creator's own, and an audit log entry for every tool call.
ref(), no automatic lineage graph across models, no generated documentation site.The Airflow comparison → · Dagster vs Airflow, and where Prefect sits → · The cross-database join → · Supported dialects →
Asked before
No, and that is the fork with dbt. The join across Postgres, MySQL and SQLite happens in a staging database created for that one execution and destroyed with it; nothing is loaded anywhere first. Staging is docs/staging.md §1.
The operational databases applications write to. The dialect catalog covers eight dialects, the seven remote JDBC engines plus the lake's Parquet and Iceberg, each with its own adapter and type mapping, read where they live. The catalog is docs/datasources.md §4.1.
That is the intended shape: introspect, create a template, create a pipeline, execute, read rows so the whole loop runs over MCP tools, with a person releasing what the agent drafts. dbt's authoring surface is a repository and a CLI, a different shape of collaboration. The tools are docs/mcp-server.md §6.2.
Read-only datasources whose write-shaped uses are refused at save time and again at execution, revocable agent keys that are identities of their own, each holding the role its creator chose and never more than the creator's own (docs/auth.md §7.5), and an audit log entry for every tool call. Those are the checks an agent-facing warehouse pipeline needs. The read-only flag is docs/datasources.md §5.7.
The demo joins Postgres, MySQL, SQLite and Parquet on S3 in one pipeline, the workload dbt would need a warehouse in front of, run without one.