dbt turns warehouse SQL into a maintained dependency graph
dbt Core is for the part of a data pipeline that begins after data reaches a warehouse. You write select statements as models, declare how those models refer to one another, and let dbt create tables or views in dependency order. Tests and generated documentation sit beside the SQL. That gives an analytics team code review, repeatable builds, lineage, and named checks without asking every analyst to become an application developer.
The boundary is important. dbt does not fetch records from an operational database or move them into Snowflake, BigQuery, or another destination. Its own architecture diagram places extraction and loading before dbt starts. A team still needs an ingestion path, warehouse permissions, an adapter, and some way to schedule commands. If those pieces already exist, dbt gives the transformation layer a common language. If they do not, installing 33 packages solves only a small part of the job.
Python v1 and Rust v2 are now separate choices
The URL supplied for this review now redirects from dbt-labs/dbt-core to dbt-labs/dbt. Its default branch contains v2, a ground-up Rust rewrite that the README labels beta. Python v1 development moved to the 1.latest branch. This is more than a rename: contributors, package maintainers, and teams reading source need to know which engine they are evaluating before copying an install command or filing a compatibility report.
Our lab snapshot, commit 43aa6e8 from August 22, 2026, was classified by the harness as a Python project. The current repository describes v2 as a self-contained binary and warns that behavior, APIs, and disk formats may change before a stable release. Existing dbt users should treat migration as a compatibility project. Run the same models, macros, hooks, adapter operations, and artifact consumers through both paths, then compare the resulting warehouse objects rather than relying on the shared dbt name.
What happened when we ran it
Our sandbox installed commit 43aa6e8 in 23 seconds. It added 33 packages and occupied 36 MB on disk, then completed the build in 9 seconds. The checkout itself contained 3,508 files, roughly 599,500 lines of source, and 33.4 MB of material. Those figures describe the measured commit in a fresh Debian container with 3 CPUs and 8 GB of RAM, not the current Rust binary or a warehouse workload.
The harness found no test script or target, so it skipped tests. That is a gap in what this run proves, not a failed upstream test suite. The repository scan found 25 CI workflow files but no top-level tests directory and no Dockerfile. Pip-audit reported 0 known vulnerabilities among the installed Python packages. We confirmed that installation and compilation worked; we did not establish adapter behavior, SQL correctness, or runtime performance against a live warehouse.
The warehouse adapter decides whether setup is really easy
A local install is the short part. A real project needs a profile that points at a warehouse, credentials with suitable permissions, and the adapter matching that database. From there, models can build on one another and data tests can check declared expectations. Teams also have to choose where secrets live, how jobs are scheduled, which environments map to which schemas, and how failed runs are surfaced. dbt supplies the transformation framework rather than a complete managed data platform.
The v2 support table covers Linux and macOS on x86-64 and ARM. Windows is supported on x86-64, while Windows on ARM is marked unavailable. The open-source repository uses Apache 2.0, but the current README separately describes a dbt distribution with dbt-specific customizations under a product license. Procurement and platform teams should distinguish the source they can inspect from the distribution and hosted features they may choose to run.
The beta warning has practical consequences for existing projects
Issue 16310 gives the migration risk a concrete shape. Its reporter found that on-run-start and on-run-end hooks did not execute with the experimental v2 parser, even though the command reported success. The report includes a small reproduction and says the behavior affected both project and package hooks. One issue does not define the whole engine, but silent hook omission is exactly the sort of difference a production comparison must catch.
Current activity is high. GitHub showed a push on September 16, 2026, release v2.0.3 on the same UTC date, 13,833 stars, and 1,546 open issues and pull requests combined. That queue is not a count of defects, and the recent push matters more than the raw total when judging maintenance. It also shows why a buyer should inspect the adapter and feature area they use instead of treating repository popularity as compatibility evidence.
dbt is strongest when SQL ownership is the actual problem
Choose dbt Core when analysts already work in SQL, source data already reaches a warehouse, and the missing piece is a shared way to build dependable derived tables. The 23-second lab install makes a trial cheap. The model graph, data tests, and documentation address a real coordination problem once several people depend on the same transformations.
Choose SQLMesh when deployment plans and isolated data environments drive the decision. Choose Mage when one workspace must also handle Python and ingestion, or Apache Hop when a visual ETL canvas suits the operators better. For dbt itself, pick the v1 or v2 track on purpose. A familiar command name does not make a beta rewrite interchangeable with the Python engine already carrying your production models.

