Skip to content
Latchkey

Blacksmith vs GitHub-Hosted Runners: Real Cost and Speed

Blacksmith runs GitHub Actions on bare-metal gaming CPUs at $0.004/min against GitHub-hosted list of $0.006/min. Whether that is worth switching depends on one thing most comparisons skip: whether your repository is public.

Blacksmith is a drop-in replacement for GitHub-hosted runners: you install a GitHub App, change the runs-on label, and your jobs execute on Blacksmith hardware instead of GitHub infrastructure. The pitch is that CI is mostly single-threaded, so raw clock speed beats core count, and Blacksmith buys clock speed by running bare-metal consumer gaming CPUs rather than the shared server parts most clouds rent.

Before the comparison, the caveat that decides this for a large share of readers: standard GitHub-hosted runners are free and unlimited on public repositories, and on a public repo they give you 4 vCPU and 16 GB of RAM. No paid runner can beat free. If your repository is public and standard runners are fast enough, this comparison is academic and you should stay where you are.

For private repositories the arithmetic changes completely. There you get 2 vCPU and 8 GB, you are billed $0.006 per minute after your plan allowance, and a faster or cheaper runner is worth real money. Everything below assumes a private repository. Prices were verified against vendor pages on 2026-08-20.

Published figures, private repository, Linux

GitHub-hostedBlacksmith
Linux x64 rate$0.006/min (2-core)$0.004/min
Linux arm64 rate$0.005/min (2-core)$0.0025/min
Standard spec, private repo2 vCPU / 8 GB / 14 GB SSDBare-metal gaming CPU
Windows x64$0.010/min (2-core)$0.008/min
macOS$0.062/min (3-4 core)$0.08/min (M4)
Free minutes/month2,000 Free, 3,000 Pro and Team, 50,000 GHEC3,000
Public repositoriesFree and unlimited, 4 vCPU / 16 GBBilled normally
Job boot timeNot publishedUnder 3 seconds (Firecracker microVM)
Automatic failure recoveryNoNo

If your repository is public, stay on GitHub-hosted

GitHub documents that use of standard GitHub-hosted runners is free and unlimited on public repositories, and public repos get the larger 4 vCPU / 16 GB configuration rather than the 2 vCPU / 8 GB private-repo one. That is a better machine than the private-repo default, at no cost.

  • The one exception is larger runners: GitHub bills those even on public repositories and even when you still have plan quota.
  • So the honest rule is that a public repo on standard runners has nothing to gain financially by moving, and something to gain only if wall-clock speed is the pain.

The price difference, in actual dollars

At published Linux x64 rates, per 10,000 private-repo minutes per month:

RunnerRateCost per 10,000 minDifference vs GitHub-hosted
GitHub-hosted, 2-core$0.006/min$60.00baseline
Blacksmith, Linux x64$0.004/min$40.00-$20.00
Blacksmith, Linux arm64$0.0025/min$25.00-$35.00

Why Blacksmith is faster: clock speed, not core count

The architectural bet is specific. Most CI critical paths are one process doing one thing: a tsc invocation, a Rust or Kotlin compile, a Webpack bundle, a single-threaded test runner. Those workloads do not get faster when you add vCPUs; they get faster when the core runs at a higher clock. Blacksmith buys that by running consumer gaming CPUs on bare metal instead of server SKUs.

  • Blacksmith cites a single-thread PassMark score of 4484, which the independent RunsOn benchmark ranks highest among managed GitHub Actions runner providers.
  • Jobs boot into an ephemeral Firecracker microVM in under three seconds, so queue-to-start latency is not where the time goes.
  • Published workload results: Node.js builds 5.9x, Rust 4x, Docker 3x, and Android 2.3x faster than GitHub-hosted.
  • A co-located cache and Docker layer caching sit next to the compute, with sticky disks and static IPs as add-ons.

What GitHub-hosted still does better

A fair comparison has to name what you give up, because a drop-in swap is not free of consequences.

  • Zero vendors. No extra GitHub App, no second status page, no second invoice, no second support relationship.
  • Runner images are the reference implementation. Third-party providers track them, so on a new image release there is a window where behaviour can differ.
  • Free and unlimited on public repositories, which no paid provider can match.
  • GitHub-hosted is the environment every action, every marketplace step, and every Stack Overflow answer assumes.

The switch, and the switch back

Both directions are one line, which is the strongest practical argument for trying it: the cost of being wrong is a revert commit.

workflow.yml
jobs:
  build:
    # GitHub-hosted
    runs-on: ubuntu-latest

    # Blacksmith
    runs-on: blacksmith-4vcpu-ubuntu-2404

    # Latchkey
    runs-on: latchkey-small

The failure mode neither one addresses

Blacksmith competes on making a passing job finish sooner. It does not change what happens when a job fails for a reason unrelated to your code: a registry timeout, a browser binary that did not install, a transient dependency resolution error, a network mount that blipped. On GitHub-hosted and on Blacksmith alike, that job fails, both the failed minutes and the re-run minutes are billed, and the pipeline waits for a human to notice and click.

  • A 2x faster runner does not fail less often. It fails just as often, sooner.
  • The expensive part is rarely the minutes. It is the hours between the failure at 02:00 and the engineer who sees it at 09:00.

Decide with your own repository

  • Both tools in a mature category can do the job. What differs is behaviour on your codebase, which takes an afternoon to measure and beats any feature table.
  • Benchmark the cold path with no cache. Warm local runs favour whatever you already have cached, which is the one condition CI never has.
  • Price the switching cost honestly: lockfile or config format, stricter resolution surfacing latent bugs, and every developer plus every runner having to move together.

The verdict

Public repository on standard runners: stay on GitHub-hosted. It is free, unlimited, and gives you a bigger machine than the private-repo default. Nothing here beats that.

Private repository, CPU-bound builds: Blacksmith has a real and measurable case. It is 33% under GitHub-hosted list on Linux x64, and its bare-metal high-clock architecture targets exactly the single-threaded compile and bundle steps that dominate most critical paths. If your builds run on ARM, the $0.0025/min rate is a 58% saving on list and the strongest number on this page.

Either way, benchmark one job for two weeks before migrating a pipeline. Both the switch and the revert are a single runs-on line, so the honest test costs almost nothing.

Frequently asked questions

Is Blacksmith cheaper than GitHub Actions?
On private repositories, yes. Blacksmith lists Linux x64 at $0.004/min against GitHub-hosted list of $0.006/min for a 2-core runner, and Linux arm64 at $0.0025/min. On public repositories, no: standard GitHub-hosted runners are free and unlimited there, so Blacksmith cannot win on price.
How much faster is Blacksmith than GitHub-hosted?
Blacksmith publishes 5.9x for Node.js builds, 4x for Rust, 3x for Docker, and 2.3x for Android. Those are vendor best-case figures. The mechanism is real - bare-metal gaming CPUs with a cited single-thread PassMark of 4484, the highest in the category per the RunsOn benchmark - but your speedup depends on how much of your critical path is single-threaded CPU work.
What hardware do GitHub-hosted runners actually give you?
On a private repository, the standard Linux runner is 2 vCPU, 8 GB RAM, and 14 GB SSD. On a public repository it is 4 vCPU and 16 GB. Windows matches Linux; macOS arm64 is 3 vCPU and 7 GB. This asymmetry is why the same workflow can feel meaningfully slower after a repo goes private.
Do I have to rewrite my workflows to use Blacksmith?
No. It is a GitHub App install plus a change to the runs-on label. Your steps, actions, secrets, and matrix stay the same. Reverting is the same one-line change, which makes a two-week trial on a single job a low-risk way to get real numbers.
Does Blacksmith automatically retry failed jobs?
No. Blacksmith optimises how fast a job runs, not what happens when it fails for transient reasons. A registry timeout or a missing browser binary fails the job, bills the failed minutes and the re-run minutes, and waits for a human. Automatic on-runner detection and repair is not part of the product.
How many free minutes do I get?
Blacksmith publishes 3,000 free minutes per month. GitHub gives 2,000 on Free, 3,000 on Pro and Team, and 50,000 on Enterprise Cloud, applied to private repositories only. Note that GitHub bills larger runners even when free quota remains.
Is Blacksmith or GitHub-hosted better for macOS builds?
GitHub-hosted, on price. GitHub lists macOS 3-core or 4-core at $0.062/min; Blacksmith lists macOS M4 at $0.08/min. Blacksmith is the newer Apple silicon, so the comparison is speed against cost rather than a straight win, but macOS is the one row where GitHub-hosted is cheaper.
Can I use Blacksmith for only some jobs?
Yes, and it is the sensible way to start. Runner selection is per job, so different jobs in the same workflow file can target different providers. Point your slowest or most expensive job at Blacksmith, leave the rest, and compare real runs before committing the pipeline.

Related guides

References

Latchkey runs the same jobs at $0.0025/min against $0.004/min, and repairs transient failures. Start free → 30-day trial · No credit card