Migrate from GitHub-Hosted Runners to Blacksmith
Moving from GitHub-hosted runners to Blacksmith is mostly a label change, but two documented steps keep it from queuing.
According to Blacksmith's runner docs, you migrate by replacing the runs-on tag, for example runs-on: ubuntu-latest becomes runs-on: blacksmith-2vcpu-ubuntu-2404. Blacksmith describes itself as a drop-in replacement for GitHub runners using the same images, so your workflows and actions otherwise stay the same.
The two documented steps
- Swap runs-on to a valid blacksmith-* label sized to the job.
- Install the Blacksmith GitHub App on every repo that uses blacksmith-* labels, which the docs say is required so capacity is provisioned and jobs are not adopted across repos.
The swap gotcha
Per the docs, the runs-on value must exactly match a valid Blacksmith label, so a typo or a missed workflow leaves that job queued. Grep your repos for every runs-on value before declaring the migration done.
What to evaluate alongside
Blacksmith targets speed on the same images. If your migration goal also includes killing flaky re-runs and cutting cost, Latchkey is worth evaluating in parallel: it is also a runs-on swap and adds self-healing plus up to 58% lower per-minute cost than GitHub Actions.
If you want failures to recover on their own
Blacksmith is a strong choice when raw runner speed and per-core performance are your priority. If your recurring pain is instead flaky, transient failures that force manual re-runs, Latchkey is worth a look: it runs your GitHub Actions on managed, drop-in runners and adds self-healing CI, so out-of-memory kills, disk-full errors, and registry timeouts are detected and retried automatically. You can pilot it on a single workflow with a one-line runs-on change and compare against your real builds.