Skip to content
Latchkey LogoLatchkey home

Latchkey vs BuildJet after the BuildJet shutdown

Latchkey vs BuildJet is no longer a comparison you can act on: BuildJet announced the shutdown of BuildJet for GitHub Actions on 6 February 2026 and stopped running jobs on 31 March 2026. What is left is a migration, so this page is about the buildjet-* labels still sitting in workflow files and what the surviving options cost against the rate you used to pay.

Monthly bars: BuildJet $164 as priced, GitHub-hosted $184, Latchkey $149 plus a $5 to $49 plan
The same month at each rate: 10,000 Linux minutes at 2 vCPU plus 2,000 macOS minutes, which BuildJet never sold either. Rates read 20 September 2026; the BuildJet bar is the rate its frozen page still shows.

BuildJet sold managed runners on its own bare metal, adopted with a one-line runs-on change, at $0.004 a minute for 2 vCPU and 8 GB rising to $0.048 for 32 vCPU. It published arm64 variants of every size and a drop-in cache action with 20 GB per repository per week, which was double the GitHub-hosted allowance. Its site is still up and still shows that rate card, under a banner reading "BuildJet for GitHub Actions has been shut down", so do not price your migration from it.

Latchkey sells managed runners the same way, at $0.0025 a minute for 2 vCPU and 8 GB, with a dependency cache that swaps in for buildjet/cache in one line and transient failures repaired on the runner. It is the closest thing on price to what BuildJet was, and it is missing the thing a good share of BuildJet users were there for: there is no arm64, Windows or macOS runner, so an arm64 job has to land somewhere else.

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.

BuildJet as it was, GitHub-hosted and Latchkey (read 20 September 2026)

BuildJet (ended 31 March 2026)GitHub-hostedLatchkey
Price per minute, 2 vCPU Linux x64$0.004 (2 vCPU, 8 GB RAM), on a frozen page$0.006 (2 vCPU, 8 GB RAM, 14 GB SSD on a private repo; free on public repos)$0.0025 (2 vCPU, 8 GB RAM, 100 GB disk)
Price per minute, 4 vCPU Linux x64$0.008 (4 vCPU, 16 GB RAM)$0.012 as a larger runner$0.005 (4 vCPU, 16 GB RAM, 100 GB disk)
Free tierNone published; concurrency subscriptions were made free on 6 February 2026 as the service wound down2,000 minutes a month on Free, 3,000 on Team, 50,000 on Enterprise Cloud, private repos only30-day trial, then 2,000 included minutes a month on Developer, 4,000 on Launch, 6,000 on Scale
Billing granularityPer minuteEvery job is rounded up to the nearest whole minutePer minute
Runner sizes and OS2 to 32 vCPU on Ubuntu 22.04, x64 and arm64Linux x64 and arm64, Windows x64 and arm64, macOS; larger runners to 96 vCPU2, 4, 8 and 16 vCPU, Ubuntu 24.04 on x86_64 only. arm64, Windows and macOS are not offered
Cache: type, limit, persistenceBuildJet Cache, 20 GB per repo per week free, interoperable with actions/cacheactions/cache, 10 GB per repository, entries removed after 7 days without accessSize 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 accelerationBuildJet Cache in front of buildx; no managed layer-cache service after shutdownNone built in. cache-to: type=gha writes into the same 10 GB storelatchkey-dev/docker-cache-action@v1, layers held in a Latchkey-managed private registry per organization
Concurrency limitsSold as a concurrency subscription, then made free during the wind-down20 concurrent jobs on Free, 40 on Pro, 60 on Team, 500 on Enterprise Cloud. macOS is capped separately at 5, or 50 on EnterpriseNot published; warm-pool capacity varies by plan
Where jobs runBuildJet's own bare metal, until 31 March 2026GitHub's own hosted fleetLatchkey's own AWS estate on m6a-class hosts, one job per runner, private network, destroyed after the job
Self-healing or retriesNot offeredNone. A failed job waits for a person, or for retry logic you wrote yourselfBuilt in: transient failures are diagnosed and retried inside the run
Setup change requiredA runs-on label change, now a label that resolves to nothingNone; this is the defaultA runs-on label change. GitHub organization accounts only

What happened, and what it means for your workflow files

BuildJet posted the notice on 6 February 2026: new signups closed that day, all concurrency subscriptions became free, pay-as-you-go billing continued as normal, and on 31 March 2026 the runners stopped taking jobs. The company's own migration advice was to move to GitHub-hosted runners, use GitHub's native arm64 runners for arm workflows, and swap the BuildJet cache action back to actions/cache, which it describes as interoperable.

If a buildjet-* label is still in a workflow file today, the job does not fail loudly with a helpful message. It queues, waiting for a runner with that label to appear, until it hits the job timeout or somebody cancels it. That is worth grepping for across every repository and every branch that still builds, including the ones nobody has touched since March.

The label map

Every BuildJet size maps to something, but not to one thing: GitHub sells its 4 vCPU and larger sizes as larger runners with labels you define yourself in organization settings, so there is no drop-in string to paste. Prices are per minute, read 20 September 2026.

BuildJet labelWasGitHub-hostedLatchkey
buildjet-2vcpu-ubuntu-22042 vCPU, 8 GB, $0.004ubuntu-latest, 2 vCPU, 8 GB, 14 GB disk, $0.006latchkey-small, 2 vCPU, 8 GB, 100 GB disk, $0.0025
buildjet-4vcpu-ubuntu-22044 vCPU, 16 GB, $0.008A 4-core larger runner you name yourself, $0.012latchkey-medium, 4 vCPU, 16 GB, $0.005
buildjet-8vcpu-ubuntu-22048 vCPU, 32 GB, $0.016An 8-core larger runner, $0.022latchkey-large, 8 vCPU, 32 GB, $0.01
buildjet-16vcpu-ubuntu-220416 vCPU, 64 GB, $0.032A 16-core larger runner, $0.042latchkey-xlarge, 16 vCPU, 64 GB, $0.02
buildjet-32vcpu-ubuntu-220432 vCPU, 64 GB, $0.048A 32-core larger runner, $0.082No standard 32 vCPU size; custom runners bill at the xlarge rate
buildjet-*-ubuntu-2204-armarm64 at every sizeubuntu-24.04-arm, $0.005 at 2 coresNot offered: arm64 has to go to GitHub, Blacksmith at $0.0025 or WarpBuild at $0.003

The migration, in the order that avoids surprises

The label is the easy part. What catches people is everything that was tuned around BuildJet: cache keys sized for a 20 GB weekly allowance, matrices sized for a concurrency subscription, and arm64 jobs that quietly have nowhere to go.

  • Grep every repository for buildjet- and list the branches, not just the default one. Scheduled workflows on stale branches are the ones that queue forever.
  • Move the x64 jobs first, one label at a time, and check the run times rather than assuming parity: BuildJet was bare metal, and a cloud runner at the same core count is not always the same wall-clock.
  • Swap buildjet/cache@v4 back to actions/cache@v6 and re-check what you were caching. GitHub allows 10 GB per repository against BuildJet's 20 GB, so a cache tuned to the old ceiling will start evicting.
  • Re-home arm64 jobs explicitly. ubuntu-24.04-arm at $0.005 is the no-new-vendor answer; Blacksmith at $0.0025 and WarpBuild at $0.003 are cheaper if you are adding a vendor anyway.
  • Re-check concurrency. GitHub allows 20 to 500 concurrent jobs by plan, which is a different ceiling from a bought concurrency subscription, and a wide matrix is where you notice.
  • Price the result before you settle. The rate you were paying was $0.004, and the default you were told to move to is $0.006, which is a 50% rise on every Linux minute.
.github/workflows/ci.yml
 jobs:
   test:
-    runs-on: buildjet-4vcpu-ubuntu-2204
+    runs-on: latchkey-medium
     steps:
       - uses: actions/checkout@v7
-      - uses: buildjet/cache@v4
+      - uses: actions/cache@v6
         with:
           path: ~/.npm
           key: npm-${{ hashFiles('package-lock.json') }}

   test-arm:
-    runs-on: buildjet-4vcpu-ubuntu-2204-arm
+    runs-on: ubuntu-24.04-arm

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: the month you used to pay for, priced where you can actually run it now

The same workload as every comparison here, 10,000 Linux minutes at 2 vCPU plus 2,000 macOS minutes a month on a private repository. BuildJet never sold macOS, so that column always landed on GitHub-hosted, which is exactly where it lands for Latchkey too.

10,000 Linux minutes at 2 vCPU2,000 macOS minutesMonthly total
BuildJet, as priced$40 at $0.004/minNot offered: $124 on GitHub-hosted$164, until 31 March 2026
GitHub-hosted$60 at $0.006/min$124 at $0.062/min$184
Latchkey$25 at $0.0025/minNot offered: $124 on GitHub-hosted$149 plus $5 to $49 a month for the plan

Doing nothing but taking BuildJet's advice costs $20 a month more on this mix, because $0.004 became $0.006. Latchkey is $149 plus a $5 to $49 plan, so at the Launch tier it lands within a few dollars of the BuildJet bill, and at Scale it is above it. 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 is the honest shape of this migration: nobody is getting a windfall out of a vendor closing. The options that beat BuildJet's old rate on Linux are Namespace at $0.002 a minute prepaid for a 2 vCPU shape with 4 GB, half the memory BuildJet gave you, and WarpBuild BYOC at $0.002 plus your own cloud bill. The options that match it are Blacksmith and WarpBuild at $0.004. Latchkey undercuts all of the managed ones at $0.0025 and is the only one that also repairs a failed job, at the cost of a plan fee and no arm64.

Where BuildJet users can actually land

Every option below is a runs-on label change from where you are now, which is the one thing that has not changed since BuildJet. Rates are the published 2 vCPU Linux rate, read 20 September 2026.

Option2 vCPU Linuxarm64Best for
GitHub-hosted$0.006$0.005No new vendor, and the only free option on public repositories
Blacksmith$0.004$0.0025Matching the old rate, with 3,000 free minutes a month
WarpBuild$0.004$0.003Matching the old rate, or $0.002 in your own cloud under BYOC
Namespace$0.002 prepaidPublished by shapeThe lowest published rate, at 4 GB per 2 vCPU rather than 8
Depot$0.006$0.006Per-second metering and 100 GB of disk, at GitHub list price
Latchkey$0.0025Not offeredThe lowest managed x64 rate, plus failures repaired on the runner

The verdict

There is no version of this that makes BuildJet's closure good news, and the default path its own post recommends, moving everything to ubuntu-latest, raises your Linux rate by half. If you are editing every workflow file anyway, that is the cheapest moment you will ever have to price the alternatives, because the edit is identical whichever label you paste. Latchkey is the lowest published managed x64 rate of the group and the only one that repairs a transient failure instead of billing you twice for it, and it is the wrong answer if your matrix has arm64, Windows or macOS in it, because it has none of those. Blacksmith and WarpBuild both match BuildJet's old $0.004 with arm64 included, and GitHub-hosted is the answer that adds no vendor at all. Pick on the shape of your matrix, not on the closure.

Frequently asked questions

Is BuildJet shutting down?
It has already shut down. BuildJet announced on 6 February 2026 that BuildJet for GitHub Actions was closing, stopped new signups that day, made concurrency subscriptions free, and ended job execution on 31 March 2026. The marketing site and documentation are still online, which is why the rate card still looks live; the runners behind those labels are not.
What is the best BuildJet alternative?
It depends on which part of BuildJet you were buying. For the $0.004 Linux rate, Blacksmith and WarpBuild both match it and both publish arm64 as well. For the lowest published rate, Namespace is $0.002 a minute prepaid, with 4 GB of RAM per 2 vCPU rather than 8. For the lowest managed x64 rate with failures repaired on the runner, Latchkey is $0.0025. For adding no vendor at all, GitHub-hosted is $0.006.
Does BuildJet Cache still work?
No, and BuildJet said so in its shutdown post: the guidance is to swap the cache action back to actions/cache, which it describes as interoperable with its own. Do check what you were storing. BuildJet published 20 GB per repository per week free, and GitHub allows 10 GB per repository, so a cache sized for the old allowance will start evicting entries and your hit rate will drop before anyone notices.
What replaces BuildJet arm64 runners?
GitHub now sells native arm64 runners at $0.005 a minute for 2 cores, which is the no-new-vendor answer and the one BuildJet itself pointed at. If you are adding a vendor anyway, Blacksmith lists Ubuntu arm64 at $0.0025 and WarpBuild at $0.003, both below the x64 rate on the same platform. Latchkey has no arm64 runner, so those jobs cannot follow the rest of your pipeline there.

Related guides

References

Every buildjet- label needs a new value anyway. Latchkey is $0.0025/min at 2 vCPU, against $0.006 on ubuntu-latest. Start free → 30-day trial · No credit card