# GitHub Actions Runners

Avrea runners are ephemeral VMs on dedicated hardware, with colocated caching and step-level observability.

## Pricing

Runners are billed per minute with no minimum. See [avrea.com/pricing](https://avrea.com/pricing) for current rates.

## Runner images

Avrea runner images are based on the official [GitHub Actions Runner Images](https://github.com/actions/runner-images). They come pre-installed with the same set of software as GitHub-hosted runners, including Docker, Node.js, Go, Python, Java, .NET, and more.

For the full list of installed software, see the GitHub-maintained image readmes:

- [Ubuntu 24.04](https://github.com/actions/runner-images/blob/releases/ubuntu24/20260406/images/ubuntu/Ubuntu2404-Readme.md)
- [Ubuntu 22.04](https://github.com/actions/runner-images/blob/releases/ubuntu24/20260406/images/ubuntu/Ubuntu2204-Readme.md)
- [macOS 26](https://github.com/actions/runner-images/blob/releases/ubuntu24/20260406/images/macos/macos-26-arm64-Readme.md)
- [Windows 2025](https://github.com/actions/runner-images/blob/releases/ubuntu24/20260406/images/windows/Windows2025-Readme.md)

Avrea images include additional tooling on top of the base GitHub images (e.g. build cache adapters). If your workflow runs on GitHub-hosted runners today, it will run on Avrea without changes.

## The `latest` alias

`avrea-ubuntu-latest-*-vcpu` always points to the most recent supported Ubuntu LTS (currently 24.04). The bare `avrea-ubuntu-latest` maps to `avrea-ubuntu-latest-2-vcpu` — 2 vCPUs, 8 GB RAM.

Use `latest` unless you need to pin a specific Ubuntu version — see [Pinned Ubuntu versions](#pinned-ubuntu-versions) below.

## Linux x86_64

| Label | vCPUs | Memory |
|-------|:-----:|:------:|
| `avrea-ubuntu-latest-1-vcpu` | 1 | 4 GB |
| `avrea-ubuntu-latest-2-vcpu` | 2 | 8 GB |
| `avrea-ubuntu-latest-4-vcpu` | 4 | 16 GB |
| `avrea-ubuntu-latest-8-vcpu` | 8 | 32 GB |
| `avrea-ubuntu-latest-16-vcpu` | 16 | 64 GB |
| `avrea-ubuntu-latest-32-vcpu` | 32 | 128 GB |

## Linux ARM

| Label | vCPUs | Memory |
|-------|:-----:|:------:|
| `avrea-ubuntu-latest-arm-1-vcpu` | 1 | 4 GB |
| `avrea-ubuntu-latest-arm-2-vcpu` | 2 | 8 GB |
| `avrea-ubuntu-latest-arm-4-vcpu` | 4 | 16 GB |
| `avrea-ubuntu-latest-arm-8-vcpu` | 8 | 32 GB |
| `avrea-ubuntu-latest-arm-16-vcpu` | 16 | 64 GB |

## macOS

| Label | vCPUs | Memory |
|-------|:-----:|:------:|
| `avrea-macos-26-8-vcpu` | 8 | 24 GB |
| `avrea-macos-26-16-vcpu` | 16 | 48 GB |

## Windows

| Label | vCPUs | Memory |
|-------|:-----:|:------:|
| `avrea-windows-2025-2-vcpu` | 2 | 8 GB |
| `avrea-windows-2025-4-vcpu` | 4 | 16 GB |
| `avrea-windows-2025-8-vcpu` | 8 | 32 GB |
| `avrea-windows-2025-16-vcpu` | 16 | 64 GB |

## Pinned Ubuntu versions

Pin a specific Ubuntu version when you need stability across runner-image rollouts. Sizes match the `latest` table above:

- `avrea-ubuntu-26.04-*-vcpu`
- `avrea-ubuntu-24.04-*-vcpu`
- `avrea-ubuntu-22.04-*-vcpu`

ARM images are built for 26.04 and 24.04 only, e.g. `avrea-ubuntu-24.04-arm-4-vcpu` or `avrea-ubuntu-26.04-arm-8-vcpu`. There is no ARM build of 22.04.

## Concurrency

Avrea scales with your workloads, so you can run as many jobs in parallel as you
need. For safety, the number of concurrent jobs and vCPUs has caps that depend
on your usage, and they grow as your usage grows. Organizations on their free
monthly minutes start with lower caps, which rise automatically once you move
on to paid usage.

If you need more capacity or are planning a large rollout, email
[support@avrea.com](mailto:support@avrea.com) and we'll raise your caps.

## Usage

Set the runner label in your workflow:

```yaml title="workflow.yml"
jobs:
  build:
    runs-on: avrea-ubuntu-latest-4-vcpu
    steps:
      - uses: actions/checkout@v7
      - run: make build
```

## Linting your workflows

[actionlint](https://github.com/rhysd/actionlint) only recognises GitHub's own
hosted runner labels, so it reports `label "avrea-ubuntu-latest-4-vcpu" is
unknown` after you switch. Register the labels you use in
`.github/actionlint.yaml`:

```yaml title=".github/actionlint.yaml"
self-hosted-runner:
  labels:
    - avrea-ubuntu-latest-4-vcpu
```

Label matching is case-sensitive, and glob patterns such as `avrea-*` are
accepted if you prefer a single entry.

If you run actionlint through
[super-linter](https://github.com/super-linter/super-linter) or
[MegaLinter](https://github.com/oxsecurity/megalinter), they pass their own
`-config-file`, so put the same content in `.github/linters/actionlint.yml`
instead.

Avrea's workflow conversion keeps this up to date for you. When it converts a
workflow it looks for how your repository runs actionlint, then adds any Avrea
labels the matching configuration does not already accept to that same
configuration, in the same pull request. If you have no actionlint
configuration yet, it creates `.github/actionlint.yaml`. Nothing is written
when every label is already accepted, or when your configuration is in a shape
Avrea cannot extend without risking your formatting or comments.