~/tools/github-actions-runner
GitHub Actions Runner
tool

GitHub Actions Runner

GitHub Actions Runner is the open source application that runs your GitHub Actions jobs — install it on your own Linux, macOS, or Windows machines to run CI/CD workflows on self-hosted infrastructure instead of paying for GitHub-hosted minutes.

What is GitHub Actions Runner?

GitHub Actions Runner is the open source application that runs a job from a GitHub Actions workflow. GitHub-hosted runners use it behind the scenes, but you can also install the same runner on your own Linux, macOS, or Windows machines to execute workflows on self-hosted hardware you control.

What is GitHub Actions Runner best for?

Teams already using GitHub Actions that need something GitHub-hosted runners can’t give them: custom hardware (GPUs, ARM, big memory), access to a private network or on-prem resources, or cheaper compute at high build volumes where per-minute billing adds up. It’s a fit when you want to keep your existing workflow YAML but move where the jobs actually run.

What can GitHub Actions Runner do?

  • Run GitHub Actions jobs on your own Linux, macOS, or Windows machines (x64 and ARM64)
  • Register at the repository, organization, or enterprise level, so many repos share a runner pool
  • Match jobs to specific runners with custom labels (runs-on: [self-hosted, gpu])
  • Run as a background service that auto-starts and reconnects after reboots
  • Support ephemeral, single-job runners that reset to a clean state after each run
  • Autoscale on Kubernetes via the separate Actions Runner Controller (ARC), which spins up ephemeral runner pods per queued job

Where does GitHub Actions Runner fall short?

  • Unsafe on public repositories. GitHub explicitly warns against using self-hosted runners with public repos — a fork’s pull request can run arbitrary code on your machine. It’s really meant for private repositories.
  • No built-in autoscaling. A plain runner is one long-lived machine; scaling up and down with demand means running Actions Runner Controller on Kubernetes, which is a real operational project in its own right and only autoscales Linux runners.
  • Not accepting outside contributions. GitHub keeps the repo open source and ships security fixes, but it’s closed to external pull requests and new features, so it’s not a community-driven project you can steer.
  • Tied to GitHub Actions. It only runs GitHub Actions workflows — it isn’t a general-purpose CI/CD engine like Jenkins or Woodpecker CI that you can point at GitLab, Gitea, or a standalone pipeline.

Is GitHub Actions Runner free?

Yes — the runner application is free and MIT-licensed, and self-hosted runners don’t consume GitHub Actions minutes, so the execution itself is free beyond the cost of the hardware you run it on. You still pay for GitHub-hosted runner minutes only when you use GitHub’s own machines; storage and data transfer for self-hosted runners can still incur GitHub billing in some plans.

FAQ

Is GitHub Actions Runner open source? Yes. The runner is released under the MIT license on GitHub at actions/runner. Note that GitHub currently ships security updates but does not accept external contributions to the repository.

Can I self-host GitHub Actions Runner for free? Yes. Download the runner, run its config script with a registration token, and start it — there’s no license fee, and self-hosted jobs don’t burn metered Actions minutes. Your only cost is the machine it runs on.

What do I need to run it? A Linux, macOS, or Windows machine (x64 or ARM64) with network access to GitHub, plus a repo, org, or enterprise you can register against. Registration uses a time-limited token that expires after one hour.

Self-hosted vs GitHub-hosted runners — which should I use? Use GitHub-hosted runners for clean, zero-maintenance, on-demand capacity. Choose self-hosted when you need custom or larger hardware, private-network access, or lower cost at high volume — and accept that you now manage the machines, images, and security yourself.