How does Dagger compare to Buildkite?
Buildkite is a CI/CD platform for teams that want control of their build machines. Its control plane schedules pipeline steps on agents, which you host on your own infrastructure or let Buildkite host. Dagger is an engine that runs checks, such as tests and linters, the same way on your machine, on your servers, and in Dagger Cloud. Choose Buildkite for large CI fleets on your own infrastructure. Choose Dagger to run the same checks locally, for agents, and in CI.
| Buildkite | Dagger | |
|---|---|---|
| How you define work | Pipeline steps in YAML, plus plugins | Official modules that find your tools, plus your own modules |
| Where work runs | Agents on your infrastructure, or hosted agents | Your machine, your servers, or Dagger Cloud |
| Tests | Test Engine: analytics, flaky test tools, test splitting | Each test is a check, with test splitting |
| Cache | Cache plugin, cache volumes, Docker layer cache | The engine caches each operation |
| Local runs | bk preflight runs your local changes as a CI build |
dagger check runs the checks on your machine |
| Billing | Per active user, plus hosted agent minutes | Used CPU, memory, and data, with repeat work 5× cheaper |
Architecture
Buildkite splits CI in two parts. Its SaaS control plane coordinates the work and shows the results. Agents run the builds, on your on-premises or cloud machines, so your code and secrets stay in your environment (Buildkite architecture). Buildkite hosted agents give you the control plane and the machines together.
Dagger runs each check in containers on a Dagger engine. The engine is open source, and runs on your machine or your own server (dagger.io). Dagger can also send a pipeline to a remote engine over SSH, on Kubernetes, or on Dagger Cloud (remote execution).
Adoption
In Buildkite, you define a pipeline as steps in YAML, in a pipeline.yml file in your repository or in the web editor (steps). Plugins add common tasks to a step (plugins).
In Dagger, you install official modules, which find your tools and add their checks (Quickstart). A module is a package of checks and functions for a tool, such as Go, pytest, or ESLint (modules). Then dagger cloud checks on runs the checks after each push and pull request (Cloud Checks). Cloud Checks need a GitHub repository. Dagger itself works with any Git host, because any CI system that can run the Dagger CLI can run dagger check (Checking your code in CI). A tool with no official module needs a module that you write.
Tests
Buildkite Test Engine collects test results from your pipeline jobs, for any test framework (Test Engine). It tracks slow and unreliable tests, and it can quarantine flaky tests so they do not block builds. Its test splitter, bktec, divides tests evenly across parallel agents. Test Engine also accepts results from other CI systems.
Dagger sees each test, not only the job that runs it (test-native CI). Official modules report each test separately, with no change to your tests. When a test fails, you run only that test again:
dagger check --go-test=TestGet
Dagger splits large test suites across engines. It balances the parts with the measured resource use, input cost, and cache state of each test (test splitting).
Cache
Buildkite gives you several caches (Buildkite caching). The Cache plugin saves directories to object storage, such as Amazon S3, by a key. Hosted agents can attach cache volumes, which Buildkite describes as best-effort. Plugins cache Docker layers, and Buildkite Cache, in public preview, saves and restores by a key that you define.
Dagger caches each operation of a check without cache keys. When the inputs of an operation do not change, the engine uses the cached result (Introduction). Steps pass files and containers to each other in the engine.
Local runs and agents
Buildkite Preflight is an experimental CLI command, bk preflight. It pushes your uncommitted changes to a temporary branch, starts a build, and reports failures in your terminal (preflight). The build runs on your Buildkite agents.
Dagger runs the checks on your machine with dagger check, with no push. dagger check -i opens a shell in the container where a command failed (dev shells). AI agents that write code use the same checks and containers as your CI.
Infrastructure control
Buildkite is built for control of agent fleets. You run agents on your own machines, put them in clusters and queues, and scale them as you need (clusters).
Dagger gives you control of where the engine runs, with the same checks everywhere. Cloud Checks run on Cloud Engines, which Dagger Cloud runs for you (Cloud Engines). Cloud Checks on your own machines are not released yet (bring your own compute).
Pricing
Buildkite bills per active user each month, and hosted agents per vCPU minute (Buildkite pricing). Self-hosted agents above an included number cost a monthly fee per agent. Test Engine bills per test execution above an included number.
Dagger Cloud bills the CPU time, memory, and data that your pipeline uses (Dagger pricing). Repeat work costs 5× less: an operation with the same inputs as one in the last 30 days. Each plan has a monthly minimum. The open-source engine on your own machines costs nothing.
When to choose Buildkite
- You run CI for many teams on your own infrastructure, and you want to manage the agent fleet.
- Your code and secrets must stay on your machines, with a hosted control plane.
- You want to quarantine flaky tests so they stop blocking builds.
When to choose Dagger
- You want the same checks on your machine, for your agents, and in CI.
- You want to see each test, and run only the test that failed, with no change to your tests.
- You want a cache for each operation, with no cache keys to maintain.
- You want to pay for the CPU and memory that you use.
Bottom line: Buildkite is a CI/CD platform that runs your pipeline steps on agents that you control, with strong test analytics. Dagger runs the same checks on your machine, on your servers, and in Dagger Cloud, and sees each test. Choose Buildkite to manage a large agent fleet, and Dagger to run one set of checks everywhere.
Related guides
- How does Dagger compare to Blacksmith?: faster GitHub Actions runners compared with Dagger.
- What are the alternatives to GitHub Actions, from faster runners to portable pipelines?: runner vendors, other CI platforms, and Dagger.
- Which development tools can Dagger replace or consolidate?: which CI tools Dagger replaces, and which to keep.