v3.4 changelog quickstart →

Linux runners

Native x64 and arm64 Linux runners on any EC2 instance, from Flex labels or Fleet runner definitions.

RunsOn supports both native x64 and arm64 Linux runners.

Flex

Pick a predefined runner from the runs-on label — 2cpu-linux-x64 for x64, 2cpu-linux-arm64 for arm64:

.github/workflows/ci.yml
jobs:
build:
runs-on: runs-on=${{ github.run_id }}/runner=2cpu-linux-x64
steps:
- uses: runs-on/action@v2
- run: echo "Hello from x64!"
.github/workflows/ci.yml
jobs:
build:
runs-on: runs-on=${{ github.run_id }}/runner=2cpu-linux-arm64
steps:
- uses: runs-on/action@v2
- run: echo "Hello from arm64!"

Most users go beyond the predefined names and tailor CPU, memory, family, and volume with job labels or custom runners.

Fleet

Define the runner shape in Terraform, publish it as a fleet, then target the fleet from workflow YAML:

main.tf
runners = {
linux-small = {
family = ["c8i.large"]
image = "ubuntu24-full-x64"
}
}
fleets = {
linux-small = {
runner = "linux-small"
}
}
.github/workflows/ci.yml
jobs:
build:
runs-on: runs-on/fleet=linux-small/env=production

Default images#

Opt into a specific image with the image label. When you set image, make sure your family uses instance types matching the image architecture (e.g. family=c8g+m8g for arm64).

ImageArchitectureDescription
ubuntu22-full-x64x64Compatible with the official Ubuntu 22.04 GitHub runner image.
ubuntu24-full-x64x64Compatible with the official Ubuntu 24.04 GitHub runner image.
ubuntu26-full-x64x64Compatible with the official Ubuntu 26.04 GitHub runner image.
ubuntu22-full-arm64arm64Compatible with the official Ubuntu 22.04 GitHub runner image.
ubuntu24-full-arm64arm64Compatible with the official Ubuntu 24.04 GitHub runner image.
ubuntu26-full-arm64arm64Compatible with the official Ubuntu 26.04 GitHub runner image.

Examples#

Disable spot pricing for critical jobs:

.github/workflows/ci.yml
jobs:
build:
runs-on: runs-on=${{ github.run_id }}/runner=2cpu-linux-x64/spot=false

Only allow 4-CPU instances from compute-optimized families:

.github/workflows/ci.yml
jobs:
build:
runs-on: runs-on=${{ github.run_id }}/runner=4cpu-linux-x64/family=c8

Fully custom definition — launched in a private subnet with a static egress IP:

.github/workflows/ci.yml
jobs:
build:
runs-on: runs-on=${{ github.run_id }}/ram=8/family=m8+c8+r8/image=ubuntu24-full-x64/spot=false/ssh=false/private=true

Need help choosing? Use the instance finder ↗ to match AWS instances to your CPU, RAM, and architecture requirements.

Quotas#

New AWS accounts have low default quotas for standard instances, so you may need an increase to launch many jobs.

How to request an increase
  1. Search for “Quotas” in the AWS console.
  2. Click “Request quota increase”.
  3. Select “EC2” as the service.
  4. Select the standard instance type.
  5. Fill in the form and submit (you request vCPUs, not instance count).
  6. Repeat for both spot and on-demand quotas.
Quota increase