Skip to content
Latchkey LogoLatchkey home

Buildkite vs Blacksmith for CI on GitHub

Buildkite vs Blacksmith is not two runner vendors, it is a runner vendor against a CI platform: Blacksmith keeps your GitHub Actions workflows and changes one label, while Buildkite replaces them with its own pipeline definitions and charges $30 per active user a month before a job runs. Choose Blacksmith if you are staying on Actions and want it cheaper, and Buildkite if you want an orchestrator that can run agents inside your own infrastructure.

Bars for 20 engineers: Buildkite $904 with $600 seats, Latchkey $273, Blacksmith $188
The same month for a 20-person team, at rates read 20 September 2026. Seats and plans are $600 of Buildkite's $904 and $124 of Latchkey's $273; Blacksmith charges neither.

Blacksmith is a drop-in for GitHub-hosted runners. Your workflow files, actions, secrets and matrix stay exactly as they are; you install a GitHub App and change runs-on. The product is compute, and the price is a single published rate per platform.

Buildkite is a CI platform. You define pipelines in .buildkite/pipeline.yml, and jobs run either on Buildkite-hosted agents or on agents you run yourself, which is the model it is genuinely known for. The compute is billed per vCPU-minute, but the platform is billed per active user, and on a team of any size the seat line is the bigger number.

Every cell below was read from the vendor's own public pricing or documentation page on 20 September 2026. Where a vendor does not publish a number, the cell says "not published" instead of carrying a guess.

Blacksmith, Buildkite and Latchkey side by side (read 20 September 2026)

BlacksmithBuildkiteLatchkey
Price per minute, 2 vCPU Linux x64$0.004 (2 vCPU, 8 GB RAM, 80 GB disk)$0.008 on a hosted Small agent (2 vCPU, 4 GB RAM, 47 GB disk), billed at $0.004 per vCPU-minute$0.0025 (2 vCPU, 8 GB RAM, 100 GB disk)
Price per minute, 4 vCPU Linux x64$0.008 (4 vCPU, 16 GB RAM, 80 GB disk)$0.016 on a hosted Medium agent (4 vCPU, 16 GB RAM, 95 GB disk)$0.005 (4 vCPU, 16 GB RAM, 100 GB disk)
Seat and platform feesNone$30 per active user a month on Pro, plus $3.50 per agent a month past the 10 included; Free covers 5 usersDeveloper is single seat; Launch and Scale add seats at $5 a month each
Free tier3,000 free minutes a month, printed on every runner cardFree plan: 5 users and up to 2,000 Linux vCPU minutes a month. Pro includes 4,000 vCPU minutes30-day trial, then 2,000 included minutes a month on Developer, 4,000 on Launch, 6,000 on Scale
Billing granularityNot publishedPer vCPU-minute, metered to the second, with no minimums and no roundingPer minute
Runner sizes and OS2 to 32 vCPU on Linux x64 and arm64; Windows Server 2025 at 2 to 32 vCPU in public beta; macOS M4 at 6 and 12 vCPULinux amd64 and arm64 from 2 to 64 vCPU, arm64 on Enterprise only; macOS M4 at 6 and 12 vCPU; no hosted Windows agent2, 4, 8 and 16 vCPU, Ubuntu 24.04 on x86_64 only. arm64, Windows and macOS are not offered
Cache: type, limit, persistenceColocated cache intercepts actions/cache, 25 GB free per repo per week; sticky disks are ext4 volumes, 5 per job, evicted after 7 days idleCache volumes declared in pipeline.yml and mounted at /cache/bkcache; 20 GB default and minimum, retained up to 14 days from last use and not guaranteedSize not published. latchkey-dev/cache-action@v1 swaps one line for actions/cache, keeping path, key and restore-keys; entries are isolated per organization, versioned by OS, kept 14 days; a failed restore warns rather than failing the job
Docker build accelerationuseblacksmith/setup-docker-builder@v2 and useblacksmith/build-push-action@v2, with layers on a persistent sticky diskdocker, docker compose and buildx are preinstalled on the Linux agent image; no managed layer cache servicelatchkey-dev/docker-cache-action@v1, layers held in a Latchkey-managed private registry per organization
Concurrency limitsNone imposed, per the runner docsSet by how many agents you pay for: 10 included on Pro, then $3.50 each a monthNot published; warm-pool capacity varies by plan
Where jobs runBlacksmith's own regions: Ashburn, Phoenix, Amsterdam and FrankfurtBuildkite hosted agents in Tier 3+ data centres, or on your own infrastructure, which is the hybrid model Buildkite is built forLatchkey's own AWS estate on m6a-class hosts, one job per runner, private network, destroyed after the job
Self-healing or retriesNot offeredretry: automatic per step, which you configure and which retries without diagnosingBuilt in: transient failures are diagnosed and retried inside the run
Setup change requiredInstall the GitHub App, then change the runs-on labelA platform migration: pipelines move to .buildkite/pipeline.yml, and your Actions workflows do not carry overA runs-on label change. GitHub organization accounts only

These are not the same purchase

Every other comparison in this section is between two products that do the same job at different prices. This one is not, and pretending otherwise is how teams end up six weeks into a migration they did not need.

Blacksmith changes where your jobs execute. Buildkite changes what defines them. If you move to Buildkite, your uses: steps, your composite actions, your reusable workflows, your GITHUB_TOKEN permissions model and your matrix syntax all need rewriting, and the marketplace actions you depend on have no equivalent. That can be entirely worth it if you want an orchestrator with dynamic pipeline generation and agents inside your own VPC, and it is a very expensive way to get a lower per-minute rate.

Speed

Not benchmarked yet; the runner benchmark report will replace this section. We have not run the same workload on these runners ourselves, and until we have, there is no number here worth quoting.

What you will find elsewhere is each vendor's own figure, measured on a workload the vendor chose. Those numbers are not wrong, but they are not comparable to each other, and none of them is your repository. The cheap way to get a real answer is to point one slow job at each candidate for a week: runner selection is per job, so three jobs in the same workflow file can run on three providers, and the Actions run log gives you the timings for free.

Cost: 20 engineers, the same month

Per-vCPU-minute pricing makes Buildkite look cheap until you multiply. A 2 vCPU agent at $0.004 per vCPU-minute is $0.008 a minute, which is twice Blacksmith's 2 vCPU rate; and then the seats arrive. Here is the usual month, 10,000 Linux minutes at 2 vCPU plus 2,000 macOS minutes, for a team of 20.

Linux computemacOS computeSeats and platformMonthly total
Blacksmith$28 after 3,000 free minutes$160 at $0.08/minNone$188
Buildkite Pro$64 after 4,000 included vCPU minutes$240 at $0.12/min on an M4 Medium$600 for 20 users at $30$904
Latchkey$25 at $0.0025/minNot offered: $124 on GitHub-hosted$124: the $49 Scale plan with 5 seats, plus 15 more at $5$273

Two notes on the arithmetic, because per-vCPU-minute pricing is easy to misread. Buildkite's included allowance is 4,000 vCPU minutes on Pro, and 10,000 minutes on a 2 vCPU agent is 20,000 vCPU minutes, so 16,000 of them are billable at $0.004. Its macOS M4 Medium is 6 vCPU at $0.02 per vCPU-minute, which is $0.12 a minute, roughly double GitHub-hosted and half as much again as Blacksmith.

The seat line is the point. At 20 engineers it is two thirds of the Buildkite bill and it does not fall when your CI gets faster, which inverts the usual optimisation: on Buildkite, making builds cheaper barely moves the invoice. That is a reasonable model for a platform you use as your orchestrator, and a poor one if you wanted cheaper GitHub Actions runners. Latchkey is not free of this either: the $273 above carries a $49 Scale plan and fifteen extra seats, and its 6,000 included minutes are not netted off the compute line.

Reliability

Buildkite is the only product on this page with retries in the box: retry: automatic on a step, configured by you, optionally scoped to an exit status. That is genuinely more than Blacksmith offers, and it is worth understanding what it is not. A blind retry re-runs a command without knowing why it failed, so it also retries the failures that will never pass, and it will happily burn three attempts on a job that is out of disk.

Blacksmith publishes a 99.9% SLA as an Enterprise plan feature and no figure otherwise. Its capacity model is per repository with the GitHub App installed, which means a repository using the labels without the app can under-provision the pool for everyone.

The diagnostic middle ground is the reason the failure pages here exist: a retry helps when the cause was a coincidence, and nothing but a fix helps when the cause was no space left on device or a missing shared library.

When to choose Blacksmith

  • You are staying on GitHub Actions and want the same workflows to cost less. This is the whole case and it is a strong one.
  • You do not want a per-seat line on your CI invoice, because your headcount grows faster than your build minutes.
  • You need Windows runners from the same vendor: Buildkite has no hosted Windows agent.
  • You want actions/cache to get faster with no edits to any workflow file.

When to choose Buildkite

  • You want agents inside your own infrastructure with the orchestration managed for you. This hybrid model is what Buildkite is for and no managed runner vendor offers it.
  • You have outgrown what Actions YAML can express and want pipelines generated dynamically at run time.
  • Your builds are long and few, so per-vCPU-minute metering to the second with no rounding beats a per-minute rate.
  • Your team is small enough that seats are not the dominant line: the Free plan covers 5 users and 2,000 Linux vCPU minutes a month.

Switching: the exact diff

This is the part most comparisons gloss over. Moving to Blacksmith is a one-line change to an existing file. Moving to Buildkite means a new file in a different language, plus agent configuration, plus reimplementing whatever the marketplace actions were doing for you.

What each migration actually touches
# Blacksmith: edit the file you already have
 jobs:
   build:
-    runs-on: ubuntu-latest
+    runs-on: blacksmith-4vcpu-ubuntu-2404
     steps:
       - uses: actions/checkout@v7
       - run: npm ci && npm test

# Buildkite: a new file, and actions/checkout has no equivalent
# .buildkite/pipeline.yml
+steps:
+  - label: "test"
+    command: "npm ci && npm test"
+    agents:
+      queue: "default"
+    cache:
+      paths: ["node_modules"]
+      size: "20g"

The verdict

If you are on GitHub Actions and the question is cost, this is not a close call: Blacksmith halves the per-minute rate of a comparable Buildkite hosted agent, adds no seat fee, and the migration is one line you can revert in a minute. Buildkite is a good product being asked the wrong question here. Its case is architectural, not financial: a real orchestrator, dynamic pipelines, retries in the box, and agents running inside infrastructure you control, none of which a managed runner vendor can offer. If that is what you want, the $30 per active user is the price of the platform and the compute rate is a rounding error; if it is not, you are paying a platform fee to solve a compute problem. Neither product detects why a job failed and repairs it, so on both you keep paying for the re-runs.

Frequently asked questions

How does Buildkite compare to Blacksmith for CI runners?
They compete for the same budget and not the same job. Blacksmith replaces the machine underneath your existing GitHub Actions workflows at $0.004 a Linux minute with no seat fee. Buildkite replaces the workflows themselves, runs them on hosted agents at $0.004 per vCPU-minute (so $0.008 for 2 vCPU) or on your own infrastructure, and charges $30 per active user a month on Pro. On a 20-person team the seat fee alone is larger than a typical monthly runner bill.
What is the best alternative to GitHub Actions?
If the complaint is cost or speed, the answer is usually not an alternative to Actions at all but a different runner underneath it, because that keeps every action, secret and matrix you already have. If the complaint is that Actions YAML cannot express your pipeline, then Buildkite, and to a lesser degree GitLab CI and Jenkins, are real alternatives with real migration costs. Decide which complaint you have before you shop.
Does Buildkite retry failed jobs automatically?
Yes, if you configure it: a step can carry retry: automatic, optionally limited to particular exit statuses and attempt counts. It is a blind retry, not a diagnosis, so it absorbs coincidences well and does nothing for a job that is out of memory or out of disk. Blacksmith offers no retry mechanism of its own; GitHub Actions has none built in either.
Does Buildkite have Windows runners?
Not as hosted agents. Buildkite's hosted fleet publishes Linux amd64 and arm64 instance shapes and macOS on M4, and Windows is something you would run on your own agents. Blacksmith publishes Windows Server 2025 runners at 2 to 32 vCPU in public beta, with the documented limitation that Docker Linux containers are not supported on them.

Related guides

References

Buildkite bills $30 per active user before a job runs. Latchkey has no seat fee and charges $0.0025/min at 2 vCPU. Start free → 30-day trial · No credit card