CI that keeps up

How does Dagger compare to Blacksmith?

Blacksmith makes your GitHub Actions workflows faster and cheaper with no change to the workflows. You change one line per job, and the job runs on Blacksmith’s hardware. Dagger changes what runs: it replaces workflow jobs with checks, which run the same on your machine, on your servers, and in Dagger Cloud. Choose Blacksmith to keep your workflows. Choose Dagger to run the same checks everywhere and see each test.

Blacksmith Dagger
What changes The runner of each job The jobs become Dagger checks
How to start Change the runs-on label Install official modules, turn on Cloud Checks
Where work runs Blacksmith’s machines Your machine, your servers, or Dagger Cloud
Cache Co-located cache for cache actions, Docker layer cache The engine caches each operation
Tests The commands in your workflow Each test is a check that you can run alone
Billing Per runner minute Used CPU, memory, and data, with repeat work 5× cheaper

Adoption

Blacksmith needs one change per job. Install its GitHub app for your organization, then change the runs-on label of each job, for example from ubuntu-latest to blacksmith-2vcpu-ubuntu-2404 (Blacksmith quickstart). It works for GitHub organizations, not for personal repositories.

Dagger needs more steps. Install the CLI, then run dagger init and dagger module recommend in your repository. Official modules find your tools and add their checks, such as Go tests or ESLint (Quickstart). Then dagger cloud checks on runs the checks after each push and pull request, with no workflow file (Cloud Checks). A tool with no official module needs a module that you write.

Speed and hardware

Blacksmith runs jobs on bare-metal machines with gaming CPUs, in Firecracker microVMs. It says these are about twice as fast as GitHub’s runners for most jobs, and that runners start in under three seconds (Blacksmith runners). Your job does the same work, on faster hardware.

Dagger runs your checks on Cloud Engines, the engines that Dagger Cloud runs for you, with scale-out and a distributed cache (Cloud Engines). It also does not repeat work it already did. The engine caches the result of each operation. When the inputs of an operation do not change, it uses the cached result (Introduction).

Cache

Blacksmith keeps a cache next to its runners. The usual cache actions, such as actions/cache, use it with no change (Blacksmith runners). For Docker builds, its own build actions keep a Docker layer cache, which is a paid add-on (Blacksmith pricing). You still choose what to cache and with which key.

Dagger caches each operation of a check without cache keys. A cached result is used again when the operation’s inputs are the same.

Tests

On Blacksmith, your tests run the way your workflow runs them. A test failure is a failed step in a job log.

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 see which test, and you run only that test again:

dagger check --go-test=TestGet

Dagger also splits large test suites across engines (test splitting).

Local runs and agents

Blacksmith runs CI jobs. To reproduce a job on your machine, you run its commands yourself.

Dagger runs the same checks on your machine with dagger check, and in Dagger Cloud after a 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 the same containers.

Pricing

Blacksmith bills per runner minute, at a rate for each OS and architecture (Blacksmith pricing). It says its per-minute prices are half of GitHub’s. Each organization gets 3,000 free minutes each month.

Dagger Cloud bills the CPU time, memory, and data that your pipeline uses, and idle capacity is free (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 Dagger engine is open source, and runs on your own machines at no cost.

When to choose Blacksmith

  • You want to keep your GitHub Actions workflows as they are.
  • You want a faster CI with a one-line change per job.
  • You need jobs that run on Windows or macOS machines. Blacksmith offers both runner types.

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.
  • You want to pay for the CPU and memory that you use, not for runner minutes.
  • You want to run on your own servers, on Kubernetes, or in Dagger Cloud with one setup (remote execution).

You can also use both. A workflow on a Blacksmith runner can run dagger check as one of its steps (Checking your code in CI).

Bottom line: Blacksmith runs your GitHub Actions jobs on faster, cheaper runners, with a one-line change per job. Dagger replaces those jobs with checks that run the same everywhere, sees each test, and bills used resources. Choose Blacksmith to keep your workflows, and Dagger to make them portable.