Skip to content

Specifying The Runner Type

vzakaznikov edited this page May 19, 2025 · 8 revisions

x64 Runners

The default server type is cx22, which is an Intel, 2 vCPU, 2GB RAM shared-cpu x64 instance.

✋ Note: You can use the --default-type option to set a different default server type.

You can specify different x64 server instance type by using the type-{name} runner label. The {name} must be a valid Hetzner Cloud server type name such as cx22, cpx21 etc.

For example, to use an AMD, 3 vCPU, 4GB RAM shared-cpu x64 instance, you can define the runs-on as follows:

job-name:
   runs-on: [self-hosted, type-cpx21]

ARM64 Runners

The default server type is cx22, which is an Intel, 2 vCPU, 2GB RAM shared-cpu x64 instance. Therefore, in order to use ARM64 runners, you must specify the ARM64 server instance type by using the type-{name} runner label. The {name} must be a valid ARM64 Hetzner Cloud server type name such as cax11, cax21 etc. which correspond to the Ampere Altra, 2 vCPU, 4GB RAM and 4 vCPU, 8GB RAM shared-cpu ARM64 instances, respectively. You must also specify a valid ARM image using the image-arm-{type}-{name} runner label.

For example, to use the Ampere Altra, 4 vCPU, 8GB RAM shared-cpu ARM64 instance, running the ubuntu-22.04 image, you must define the runs-on as follows:

job-name:
   runs-on: [self-hosted, type-cax21, image-arm-system-ubuntu-22.04]

Multiple Server Types

✅ Available: >= 1.8

You can specify multiple server types that will be tried in order, with each server type being attempted in all specified locations. This is useful when you want to have fallback options if your preferred server type is not available. The server types will be tried in the order they are specified.

For example, to try a cx22 server first, and if that's not available, fall back to a cpx11 server:

job-name:
   runs-on: [self-hosted, type-cx22, type-cpx11]
✅ Available:

>= 1.9, you can also use a composite label value:

⚠️ Warning: Composite label values do not work inside meta labels.
job-name:
   runs-on: [self-hosted, type-cx22-cpx11]

A composite label value will be treated as a meta-label and expanded to:

runs-on: [type-cx22-cpx11, type-cx22, type-cpx11]

This is useful when building the runs-on labels dynamically, for example:

runs-on: [
  "self-hosted",
  "${{ inputs.runner_type }}"
]

You can also combine multiple server types with multiple locations. In this case, the system will try each server type first, then each location for that server type. For example, if you specify locations nbg1 and fsn1 with server types cpx21 and cx22, the system will try them in this order:

  1. cx22 in nbg1
  2. cx22 in fsn1
  3. cpx11 in nbg1
  4. cpx11 in fsn1

Here's an example configuration:

job-name:
   runs-on: [self-hosted, type-cx22, type-cpx11, in-nbg1, in-fsn1]
Clone this wiki locally