Blacksmith vs GitHub Actions hosted runners
Blacksmith vs GitHub Actions hosted runners comes down to one question most comparisons skip: whether your repository is private. On private repositories Blacksmith is a third cheaper per Linux minute and roughly twice the machine at the same size, and on public repositories GitHub-hosted runners are free and unlimited, which nothing paid can beat.

GitHub-hosted runners are the default: no app to install, no label to change, 2,000 to 50,000 included minutes a month depending on your plan, and a standard Linux runner that is 2 vCPU with 8 GB of RAM and 14 GB of disk on a private repository. They are the right answer for low volume and for any public repository, where they cost nothing at all.
Blacksmith sells managed runners on its own bare-metal hosts that you adopt by installing a GitHub App and changing a label. It is the right answer when your private-repo Linux bill has grown past the point where a 33% rate cut is real money, or when the standard runner's 8 GB and 14 GB are the ceiling your jobs keep hitting.
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.
GitHub-hosted, Blacksmith and Latchkey side by side (read 20 September 2026)
| GitHub-hosted | Blacksmith | Latchkey | |
|---|---|---|---|
| Price per minute, 2 vCPU Linux x64 | $0.006 (2 vCPU, 8 GB RAM, 14 GB SSD on a private repo; free on public repos) | $0.004 (2 vCPU, 8 GB RAM, 80 GB disk) | $0.0025 (2 vCPU, 8 GB RAM, 100 GB disk) |
| Price per minute, 4 vCPU Linux x64 | $0.012 as a larger runner; the free public-repo standard runner is already 4 vCPU and 16 GB | $0.008 (4 vCPU, 16 GB RAM, 80 GB disk) | $0.005 (4 vCPU, 16 GB RAM, 100 GB disk) |
| Free tier | 2,000 minutes a month on Free, 3,000 on Team, 50,000 on Enterprise Cloud, private repos only; larger runners are always billed | 3,000 free minutes a month, printed on every runner card | 30-day trial, then 2,000 included minutes a month on Developer, 4,000 on Launch, 6,000 on Scale |
| Billing granularity | Every job is rounded up to the nearest whole minute | Not published | Per minute |
| Runner sizes and OS | Linux x64 and arm64, Windows x64 and arm64, macOS on M-series and Intel; larger runners to 96 vCPU x64 and 64 vCPU arm64 | 2 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 vCPU | 2, 4, 8 and 16 vCPU, Ubuntu 24.04 on x86_64 only. arm64, Windows and macOS are not offered |
| Cache: type, limit, persistence | actions/cache, 10 GB per repository, entries removed after 7 days without access, restorable only from the same or the default branch | Colocated cache intercepts actions/cache, 25 GB free per repo per week; sticky disks are ext4 volumes, 5 per job, evicted after 7 days idle, $0.50/GB/month | Size 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 acceleration | None built in. cache-to: type=gha writes into the same 10 GB store | useblacksmith/setup-docker-builder@v2 and useblacksmith/build-push-action@v2, with layers on a persistent sticky disk | latchkey-dev/docker-cache-action@v1, layers held in a Latchkey-managed private registry per organization |
| Concurrency limits | 20 concurrent jobs on Free, 40 on Pro, 60 on Team, 500 on Enterprise Cloud. macOS is capped separately at 5, or 50 on Enterprise | None imposed, per the runner docs | Not published; warm-pool capacity varies by plan |
| Where jobs run | GitHub's own hosted fleet | Blacksmith's own regions: Ashburn, Phoenix, Amsterdam and Frankfurt | Latchkey's own AWS estate on m6a-class hosts, one job per runner, private network, destroyed after the job |
| Self-healing or retries | None. A failed job waits for a person, or for retry logic you wrote yourself | Not offered | Built in: transient failures are diagnosed and retried inside the run |
| Setup change required | None; this is the default | Install the GitHub App, then change the runs-on label | A runs-on label change. GitHub organization accounts only |
If your repository is public, stop here
Standard GitHub-hosted runners are free and unlimited on public repositories, and the free public-repo Linux runner is 4 vCPU with 16 GB of RAM, not the 2 vCPU and 8 GB a private repository gets. That is a better machine than the 2 vCPU tier any vendor on this page sells, at a price no vendor can match.
This asymmetry is also why the same workflow feels slower the week a repository is made private, with no change to the YAML at all. If that is what brought you here, the honest fix is a larger runner or a smaller job, not a new vendor.
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: the same month, priced three ways
Take a month with 10,000 Linux minutes at 2 vCPU and 2,000 macOS minutes on a private repository, and price it at the rates in the table above.
| 10,000 Linux minutes at 2 vCPU | 2,000 macOS minutes | Monthly total | |
|---|---|---|---|
| GitHub-hosted | $60 at $0.006/min | $124 at $0.062/min | $184 |
| Blacksmith | $28 after 3,000 free minutes | $160 at $0.08/min | $188 |
| Latchkey | $25 at $0.0025/min | Not offered: $124 on GitHub-hosted | $149 plus $5 to $49 a month for the plan |
Read that total again, because it is the opposite of what the marketing implies. On this mix Blacksmith costs slightly more than staying put, and the reason is macOS: Blacksmith lists macOS M4 at $0.08/min against GitHub's $0.062/min for a 3-core or 4-core machine. Blacksmith is selling newer Apple silicon for the premium, which may well be worth it on a long Xcode build, but it is a speed purchase, not a saving.
Swap the mix and the answer flips. A month of 30,000 Linux minutes and no macOS is $180 on GitHub-hosted and $108 on Blacksmith, a 40% cut. The rule of thumb that falls out of the rate cards is simple: Blacksmith wins on Linux, loses on macOS, and is 20% cheaper on Windows, $0.008/min against GitHub's $0.010.
One more line that catches teams out: GitHub's included minutes are consumed at the multiplier, and macOS is 10x. A Team plan's 3,000 included minutes are gone after 300 macOS minutes, which is why so many bills are mostly macOS. 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.
Reliability
GitHub publishes status history rather than an SLA for Actions on the pages read here, and Blacksmith lists a 99.9% SLA as an Enterprise plan feature. Neither publishes a figure you can put in a business case, so treat this axis as unmeasured.
What both share is the behavior on a bad job. When a step dies because a registry timed out, a shared library was missing, or the kernel killed the process, both platforms record a failure, bill the minutes, and stop. The re-run bills again. If you want the size of that line item, count the re-runs in your Actions history that passed on the second attempt with no code change between them.
Those failures have their own pages here, with the reproduction and the fix: exit code 137 and error while loading shared libraries are the two that most often look like a runner problem.
When to choose GitHub-hosted
- Your repositories are public. Free and unlimited, on a 4 vCPU and 16 GB machine, ends the discussion.
- Your monthly Linux minutes fit inside the included allowance: 2,000 on Free, 3,000 on Team, 50,000 on Enterprise Cloud.
- Your bill is mostly macOS. GitHub is the cheapest macOS in this comparison at $0.062/min.
- You need Windows on arm64, or macOS on Intel, or a 96 vCPU Linux runner. GitHub sells sizes and platforms the vendors do not.
- You have a compliance answer that depends on where jobs run, and adding a vendor means redoing it.
When to choose Blacksmith
- Your private-repo Linux bill is the line item, and a third off the rate at every size is real money at your volume.
- Your jobs keep hitting the standard runner ceiling. Blacksmith's 2 vCPU tier gives 80 GB of disk against GitHub's 14 GB, which removes a whole class of disk-full failures on its own.
- You want arm64 at $0.0025/min, which is exactly half GitHub's arm64 rate of $0.005 and below GitHub's x64 rate too.
- Your cache is the bottleneck. 25 GB per repo per week against GitHub's 10 GB, plus sticky disks for the things
actions/cacheis bad at, is a bigger practical difference than the per-minute rate.
Switching: the exact diff
Install the Blacksmith GitHub App on every repository that will use the labels, then change runs-on. Nothing else in the workflow moves. Leave macOS and Windows jobs where they are until you have priced them separately, because runner selection is per job and a mixed workflow file is perfectly normal.
jobs:
build:
- runs-on: ubuntu-latest
+ runs-on: blacksmith-4vcpu-ubuntu-2404
ios:
# left on GitHub-hosted: $0.062/min against $0.08
runs-on: macos-latestThe verdict
For a private repository whose CI is mostly Linux, Blacksmith is the better buy and the switch is one label plus an app install, so the trial is cheap enough that there is no reason to argue about it in the abstract. For a public repository it is not close, because GitHub-hosted runners are free and give you a bigger machine than the tier you would be paying for. In between sits the team whose bill is mostly macOS minutes, and that team should read the rate cards again before moving anything: Blacksmith is more expensive per macOS minute than GitHub, and no amount of Linux saving offsets a macOS-heavy month. What neither vendor changes is the re-run. On both, a job that failed for a mechanical reason is billed, failed, and yours to notice.
Frequently asked questions
Is Blacksmith cheaper than GitHub Actions?
What hardware do GitHub-hosted runners actually give you?
How many free minutes do I get?
Do I have to rewrite my workflows to use Blacksmith?
runs-on label. Steps, actions, secrets, matrix strategy and artifacts are untouched, and reverting is the same one-line change. Because runner selection is per job, you can move one job, compare a week of real runs, and decide with numbers instead of a vendor benchmark.