Skip to content
Latchkey

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.

Selecting a runner
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.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →