Skip to content
Latchkey LogoLatchkey home

Latchkey vs Buildkite for CI on GitHub

These two are not the same kind of product. Buildkite is a full CI platform with its own pipeline format and a hybrid model that runs agents inside your infrastructure; Latchkey replaces the machines your existing GitHub Actions jobs run on and leaves the workflow files alone. Choosing Buildkite means rewriting pipelines into .buildkite/pipeline.yml and paying $30 per active user a month; choosing Latchkey means editing one runs-on line.

Stacked bars: Buildkite $64 compute plus $300 seats, against Latchkey $25 compute
One month of 10,000 minutes on a 2 vCPU machine for a team of ten, at published rates. Buildkite meters per vCPU-minute, so the compute bar is 20,000 vCPU minutes less the 4,000 Pro includes, and the seat bar is $30 per active user. Rates read 20 September 2026.

Buildkite runs your pipelines on agents you host yourself or on its hosted compute, billed at $0.004 per vCPU-minute, so a 2 vCPU agent is $0.008 a minute and a 4 vCPU agent is $0.016. On top of the compute it charges $30 per active user a month on Pro plus $3.50 per agent beyond the ten included, and its free plan covers five users and up to 2,000 Linux vCPU minutes a month. The pipelines are its own format, not GitHub Actions workflows.

Latchkey does not replace GitHub Actions. It gives the jobs you already have a different machine to run on, at $0.0025 a minute for 2 vCPU and 8 GB, with no seat fee and a self-healing agent that repairs transient failures inside the run. Everything about how your pipeline is defined, triggered and reported stays with GitHub.

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.

Buildkite and Latchkey, read 20 September 2026

BuildkiteLatchkey
Price per minute, 2 vCPU Linux x64$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.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 fees$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 tierFree 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 granularityPer vCPU-minute, metered to the second, with no minimums and no roundingPer minute
Runner sizes and OSLinux 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, persistenceCache 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 accelerationdocker, 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 limitsSet 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 runBuildkite 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 retriesretry: automatic per step, which you configure and which retries without diagnosingBuilt in: transient failures are diagnosed and retried inside the run
Setup change requiredA platform migration: pipelines move to .buildkite/pipeline.yml, and your Actions workflows do not carry overA runs-on label change. GitHub organization accounts only

The comparison that actually matters is the migration

Every row in the table above is secondary to one fact: adopting Buildkite means rewriting your pipelines. Your .github/workflows files do not carry over, the uses: actions you depend on have no equivalent, and the triggers, environments, required checks and branch protections wired to those workflows all move with them. That is a project, not a configuration change.

Adopting Latchkey means editing a runs-on value on the jobs you choose. Everything else about your CI, including the parts you have not thought about in a year, stays exactly where it is. Whichever of these you prefer, price the migration before you price the minutes.

The seat fee is usually the biggest number

Buildkite charges $30 per active user a month on Pro before a single job runs, plus $3.50 a month per agent past the ten included. On a team of twenty that is $600 a month in seats, which is larger than most teams' entire compute bill on any of the runner vendors in this cluster. Latchkey has no seat fee of that shape: Developer is a single seat and Launch and Scale add seats at $5 a month.

Per-vCPU-minute billing also reads cheaper than it is. At $0.004 per vCPU-minute a 2 vCPU agent is $0.008 a minute and a 4 vCPU agent is $0.016, so Buildkite hosted compute is roughly three times the Latchkey rate at both sizes. It is metered to the second with no minimums and no rounding, which is genuinely better granularity than per-minute billing, but not by enough to close that gap.

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.

The cheap way to get a real answer is to point one slow job at each candidate for a week, because runner selection is per job and the Actions run log gives you the timings for free.

Cost: one worked month

Ten thousand minutes a month on a 2 vCPU machine is 20,000 vCPU-minutes on Buildkite's meter, so $80 of hosted compute, less the 4,000 vCPU minutes Pro includes, so $64. Add $30 per active user: a team of ten is $300, making $364. The same month on Latchkey is $25 of compute.

Latchkey's own plan is $5 to $49 a month on top of that compute, and its 2,000 to 6,000 included minutes are not netted off, so the figure is gross on both counts.

That comparison is unfair in one direction and worth stating plainly: you are not buying the same thing. Buildkite's price includes an orchestrator, a UI, its own pipeline engine and the ability to run agents on your own hardware. Latchkey's price buys machines for an orchestrator you already have and do not pay extra for.

Reliability

Buildkite offers retry: automatic per step, which you configure yourself and which retries a failing step without diagnosing why it failed. That covers flaky tests reasonably well and covers an OOM kill or an exhausted disk not at all, because retrying the same step on the same shape of machine reproduces the same failure.

Latchkey diagnoses the failing step on the runner and applies a fix before retrying, which is the difference between a retry policy and a repair. Buildkite's hybrid model is the stronger answer on a different axis: agents on your own infrastructure means your CI capacity is yours, with no shared-pool queue between you and a deploy.

When to choose Buildkite

Choose Buildkite if you want to leave GitHub Actions as an orchestrator, which is a legitimate thing to want at scale, and you have the appetite for the pipeline rewrite that entails. Choose it if you need agents running inside your own infrastructure with your own hardware, GPUs or network access. Choose it if your pipelines have outgrown what Actions expresses well and the orchestrator itself is the thing you are replacing.

When to choose Latchkey

Choose Latchkey if GitHub Actions is working for you as an orchestrator and what you want is faster, cheaper machines and fewer red builds. The whole product is a label change: no pipeline rewrite, no seat fee, no second CI UI for your team to learn, and transient failures repaired in-run instead of retried blindly.

Switching

There is no YAML diff that turns a Buildkite pipeline into a Latchkey one, because Latchkey does not replace the pipeline. If you are on GitHub Actions today and evaluating both, the Latchkey change is one line and the Buildkite change is a project.

Adopting Latchkey from GitHub Actions: the entire diff
jobs:
  build:
-   runs-on: ubuntu-latest
+   runs-on: latchkey-medium
    steps:
      - uses: actions/checkout@v4

The verdict

These products answer different questions. If the thing you want to replace is the orchestrator, Latchkey is not a candidate at all and the rate comparison is beside the point. If the thing you want to replace is the machine, Buildkite makes you rewrite your pipelines to get there and then charges $30 per active user a month for the privilege, which is hard to justify when a runs-on change gets you cheaper compute and keeps every workflow file you already have.

Frequently asked questions

Is Buildkite a replacement for GitHub Actions or for runners?
For GitHub Actions itself. Buildkite has its own pipeline format in .buildkite/pipeline.yml, its own agents and its own UI, and your Actions workflows do not carry over. Latchkey replaces only the machine the job runs on and leaves the workflow file, triggers and checks with GitHub.
How much does Buildkite cost compared to Latchkey?
Buildkite hosted compute is $0.004 per vCPU-minute, so $0.008 a minute on a 2 vCPU agent against Latchkey at $0.0025, plus $30 per active user a month on Pro and $3.50 per agent past ten. Latchkey charges no seat fee of that shape and its plan is $5 to $49 a month.
Does Buildkite retry failed jobs automatically?
It offers retry: automatic per step, which you configure and which retries without diagnosing the cause. That helps with flaky tests and does nothing for an OOM kill or a full disk, because the retry hits the same failure. Latchkey diagnoses the step and applies a fix before retrying.
Can I run Buildkite agents on my own hardware?
Yes, and that hybrid model is what Buildkite is built for: agents run in your infrastructure while Buildkite orchestrates. Latchkey does not offer this. Every Latchkey job runs in Latchkey's own AWS estate on a single-use machine.

Related guides

References

Keeping GitHub Actions? Latchkey is a runs-on change at $0.0025/min, not a pipeline migration. Start free → 30-day trial · No credit card