What Is a GitHub Actions Runner?
A runner is the server that actually runs your job's steps. The runner application polls GitHub for work and executes it.
Workflows describe work, but something has to do it. That something is a runner: a virtual machine or container with the GitHub Actions runner agent installed, ready to pick up jobs.
What it is
A runner is a machine running the Actions runner software. When a job is queued, an available runner matching the job's labels picks it up, runs every step, and streams logs back to GitHub.
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo "Running on ${{ runner.os }}"How it works
The runs-on: field selects which runner type executes the job. GitHub-hosted runners are spun up fresh per job; self-hosted runners are machines you maintain and register to your repo or organization.
Three kinds
- GitHub-hosted: managed VMs billed per minute.
- Self-hosted: your own hardware or cloud instances.
- Managed: a third party runs the fleet for you.
Why it matters
Runner choice drives cost, speed, and control. Latchkey provides managed runners that execute the exact same workflows as GitHub-hosted runners, but cheaper and self-healing, so a failed instance is replaced automatically.
Related concepts
Runners are chosen with runs-on: and labels, and self-hosted fleets can be organized into runner groups.
Key takeaways
- A runner is the machine that executes a job.
runs-on:selects the runner by label.- Options are GitHub-hosted, self-hosted, or managed.