Introduction
Dagger is third-generation CI, after Jenkins and GitHub Actions. It is built to match the speed and scale of coding agents and give them the guardrails and context they need.
Dagger runs every code change — whether machine-generated or handwritten — through the same build and test pipelines, before or after push.
How it works
Dagger detects your toolchains and recommends official modules for them. You can also write your own.
Modules read your native configuration, eliminating proprietary YAML and config drift. They discover your project as typed artifacts: source code, containers, binaries, generated files, and even tests.
You select artifacts with typed filters, and use them to automate your feedback loop. For example, use test results as a pre-merge or post-merge gate, run a preview environment, or inspect intermediate results in an interactive shell.
Dagger computes artifacts lazily, as an incremental DAG of sandboxed functions, on your machine or on a shared remote engine.
Dagger is vertically integrated: sandbox, scheduler, container runtime, build cache and tracing share one execution and data model. This enables it to keep up with coding agents by achieving levels of compute and token efficiency that are out of reach for second-generation CI, where each component is a silo.