docs/current_docs/adopting/scaling/index.mdx
Dagger is local-first: every workflow runs the same whether invoked from a laptop, a CI runner, or a scaled-out cluster. Scaling is a deployment choice, not a rewrite.
This page covers scaled-out execution — running Dagger on infrastructure that's provisioned, scheduled, and shared across a team or organization. It's the territory of platform teams.
Local execution (laptop or CI runner) is enough for individual developers and small teams. You hit its limits when:
Cloud Engines (tech preview) is managed scaled-out execution. Dagger runs your workflows on an elastic engine pool with shared cache across your organization — nothing to configure:
dagger check --cloud
The same dagger check command; the difference is where the engine runs. No infrastructure to provision, scale, or operate.
:::note Cloud Engines is in tech preview. Contact the Dagger team to get access. :::
If you operate your own infrastructure, you can run the Dagger engine on Kubernetes or a custom runner and point clients at it:
export _EXPERIMENTAL_DAGGER_RUNNER_HOST=kube-pod://dagger-engine?namespace=dagger
dagger check
Self-hosted engines give you full control over provisioning, scheduling, and cache placement — with the operational cost that implies. See Custom runners for the connection interface.
Platform-specific deployment guides:
| Cloud Engines | Self-hosted | |
|---|---|---|
| Provisioning | Managed | Your team |
| Scaling | Automatic | Your team |
| Cache | Shared, managed | Shared, your storage |
| Cost model | Subscription | Your infrastructure |
| Best for | Most teams | Regulated / custom infra |
Both support the same workflows. You can switch without changing a line of module code.