Skip to content

Linux runners

RunsOn supports both x64 and arm64 runners. The list of predefined runner names is available below.

For instance if you want to use a 2cpu x64 runner, your workflow file would look like this:

jobs:
build:
runs-on:
- runs-on=${{ github.run_id }}
- runner=2cpu-linux-x64
steps:
- run: echo "Hello from x64!"

For an arm64 runner, you would use:

jobs:
build:
runs-on:
- runs-on=${{ github.run_id }}
- runner=2cpu-linux-arm64
steps:
- run: echo "Hello from arm64!"

Default runners

RunnerFamiliesRunsOnGitHubRunsOn vs GitHub
1cpu-linux-x64m7a, m7i$0.0008--
2cpu-linux-x64m7i-flex, m7a, m7i$0.0011$0.00807.2x cheaper
4cpu-linux-x64m7i-flex, m7a, m7i$0.0019$0.01608.6x cheaper
8cpu-linux-x64c7i-flex, m7i-flex, c7i, c7a, m7i, m7a$0.0034$0.03209.5x cheaper
16cpu-linux-x64c7i-flex, m7i-flex, c7i, c7a, m7i, m7a$0.0068$0.06409.4x cheaper
32cpu-linux-x64c7i-flex, m7i-flex, c7i, c7a, m7i, m7a$0.0114$0.128011.3x cheaper
48cpu-linux-x64c7i, c7a, m7i, m7a$0.0165--
64cpu-linux-x64c7i, c7a, m7i, m7a$0.0147$0.256017.4x cheaper

$/min, us-east-1 prices. Includes compute + storage costs for the most recent EC2 family types.
Savings are even higher if you include the speed gains or switch to previous-generation instance types.

Custom runners

You can also create your own custom runners using inline runs-on: labels in your workflow, or by referencing a custom runner name created in the repository configuration file.

For more details:

Custom images

Every runner launches from an AMI. Default runners are launched using a public AMI managed by RunsOn, but you can also build and use your own custom AMIs if you’d like better control, or preinstall specific software.

For more details:

Examples

Disable spot pricing for critical jobs:

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

Only allow instances with 4 CPUs from compute-optimized families:

jobs:
build:
runs-on:
- runs-on
- runner=4cpu-linux-x64
- run-id=${{ github.run_id }}
- family=c7

Use ubuntu24 image instead of default ubuntu22:

jobs:
build:
runs-on:
- runs-on=${{ github.run_id }}
- runner=2cpu-linux-x64
- image=ubuntu24-full-x64

Fully custom runs-on definition, instance is launched in private subnet with static egress IP:

jobs:
build:
runs-on:
- runs-on=${{ github.run_id }}
- family=m7+c7+r7
- image=ubuntu24-full-x64
- spot=false
- ssh=false
- private=true