ServicesAboutNotesContact Get in touch →
EN FR
Note

dbt Core vs Cloud Decision Framework

A structured comparison of dbt Core and dbt Cloud across deployment, interface, features, pricing, and team profile -- with decision heuristics for choosing between them.

Planted
dbtdata engineeringcost optimization

Choosing between dbt Core and dbt Cloud is not a technical purity test. It is a practical decision that depends on your team’s skills, budget, infrastructure appetite, and how much of the “everything around dbt” you want to manage yourself.

Both versions use the same SQL, the same Jinja, the same ref() and source() functions, the same testing framework, the same project structure. The transformation logic is identical. The differences are in everything that surrounds it: how you develop, how you deploy, how you schedule, how you collaborate, and what you pay.

The Comparison Matrix

Dimensiondbt Coredbt Cloud
DeploymentLocal machine or self-hosted containerCloud-hosted managed service
InterfaceCommand-line (CLI)Web IDE + optional CLI
SchedulingExternal tool required (cron, Airflow, Dagster, Cloud Scheduler)Built-in job scheduler with cron, API, and CI triggers
CollaborationGit workflows (PRs, code review)Git + RBAC, environment isolation, integrated commenting
DocumentationSelf-hosted static site (dbt docs generate && dbt docs serve)Hosted documentation accessible via URL
PriceFree (open-source)Free tier (1 seat), ~$100/user/month (Team), negotiated (Enterprise)
InfrastructureYou manage Python, containers, orchestration, monitoringdbt Labs manages compute, artifacts, uptime
Exclusive featuresFull package ecosystem, unlimited customizationFusion engine, semantic layer, Mesh, Slim CI

Deployment: Self-Hosted vs Managed

dbt Core runs wherever you put it. Your laptop for development. A Cloud Run Job for production. A Docker container on Kubernetes. An Airflow worker. The deployment flexibility is total, but so is the responsibility.

Terminal window
# dbt Core deployment: you handle everything
docker build -t my-dbt .
docker push gcr.io/my-project/my-dbt
gcloud run jobs create dbt-daily --image gcr.io/my-project/my-dbt
gcloud scheduler jobs create http dbt-trigger --schedule "0 6 * * *" ...

dbt Cloud deployment: create a project, connect your Git repo, configure an environment, schedule a job. Five clicks and a cron expression. No containers, no registries, no schedulers to configure.

The gap is not whether both approaches work — they do. The gap is the operational surface area you accept. Self-hosted Core means you own container builds, version upgrades, credential management, monitoring, and incident response for the dbt runtime. dbt Cloud means dbt Labs owns all of that, and you own only the SQL.

Interface: CLI vs Web IDE

The CLI vs IDE choice correlates strongly with team composition.

CLI-native teams (software engineers, platform engineers, experienced analytics engineers) prefer dbt Core’s command-line interface because it integrates with their existing toolchain. VS Code with the dbt Power User extension, terminal-based Git, custom shell scripts for common operations. The CLI is faster for power users who think in terms of dbt run --select tag:finance+ --exclude config.materialized:ephemeral.

SQL-focused teams (analysts transitioning to analytics engineering, business-side data professionals) prefer dbt Cloud’s web IDE because it eliminates every barrier between “I want to write SQL” and “I am writing SQL.” No Python. No terminal. No virtual environments. Open the browser and go.

Neither preference is wrong. The best interface is the one your team actually uses productively. A team that struggles with Python setup wastes hours on infrastructure that dbt Cloud eliminates. A team of engineers who live in VS Code finds the web IDE slower and more constrained than their existing setup.

Scheduling and Orchestration

This is where the practical difference is sharpest.

dbt Core has no scheduler. It runs when you invoke it. For production deployments, you need an external tool:

External schedulerCostComplexityBest for
Cloud Scheduler + Cloud Run< $5/monthLowSingle dbt project on GCP
Dagster$10-100/month (Dagster+)MediumCross-system orchestration
Airflow / Composer$300-400+/monthHighEnterprise multi-system pipelines
cron on a VM~$10/monthLowThe simplest possible setup

dbt Cloud includes scheduling, CI triggers, and API invocation. For teams whose orchestration needs are “run dbt on a schedule and run tests on PRs,” Cloud eliminates the need to evaluate, configure, and maintain a separate tool.

The boundary is clear: if your orchestration requirements extend beyond dbt (trigger dbt after an ingestion sync, run Python after dbt, coordinate multiple pipelines), dbt Cloud’s scheduler is insufficient regardless. You need an orchestrator. The Dagster comparison and the GCP orchestration framework detail this boundary.

The Pricing Equation

The cost comparison depends heavily on team size:

Team sizedbt Core + Cloud Rundbt Cloud Team
1 person~$5/monthFree (Developer tier)
3 people~$5/month~$300/month
5 people~$5/month~$500/month
10 people~$5/month~$1,000/month
20 people~$5/monthNegotiated Enterprise

The infrastructure cost for self-hosted Core is nearly flat regardless of team size. dbt Cloud scales linearly per user. At three users, the annual difference is ~$3,500. At ten users, it is ~$12,000. At twenty, significantly more.

But raw infrastructure cost is not total cost of ownership. Self-hosted Core requires engineering time for:

  • Initial setup: containerization, CI/CD, scheduling (~1-2 weeks)
  • Ongoing maintenance: version upgrades, debugging, monitoring (~2-4 hours/month)
  • Incident response: when the scheduler fails, the container crashes, or credentials expire

If your team has an engineer who handles this comfortably, the total cost stays low. If you would need to hire or contract that capability, the cost advantage narrows or disappears.

The Decision Heuristic

Choose dbt Core when:

  • Your team includes at least one engineer comfortable with Python, Docker, and CLI tooling
  • You value maximum flexibility and control over your deployment
  • Cost matters and your team has more than two people
  • You already have an orchestrator (Airflow, Dagster, Prefect) for non-dbt workloads
  • You want to avoid vendor lock-in, especially post Fivetran merger
  • Having a solid project structure from the start is something your team can establish independently

Choose dbt Cloud when:

  • Your team is primarily SQL-focused with limited infrastructure experience
  • The web IDE and collaboration features accelerate your team’s workflow
  • You need CI/CD on pull requests without building it yourself
  • You need the semantic layer, Mesh, or Fusion engine (Cloud-only features)
  • Per-user cost is acceptable for your team size
  • You want to minimize time spent on anything that is not SQL

The hybrid path: Some teams use dbt Cloud for development (IDE, CI) and deploy production runs via Core on their own infrastructure. Others start with Cloud’s free Developer tier and migrate to self-hosted Core as the team grows. The modeling skills transfer completely. Your .sql files, your schema.yml tests, your macros — all of it works in both environments without modification.

Feature divergence trend

The gap between Core and Cloud is widening. Cloud-exclusive features (Fusion, semantic layer, Mesh, advanced CI) accumulate with each release. Core remains a complete transformation tool for SQL compilation, testing, and documentation, but features such as the semantic layer, Mesh governance, and the Fusion engine require Cloud.

The build-vs-buy calculus applies: the right answer depends on team capabilities, requirements, and whether the vendor’s roadmap aligns with the team’s trajectory.