Runners
Native arm64 GitHub Actions runners
Native Ampere and Graviton-class arm64 runners. No QEMU, no emulation penalty, 20% cheaper than the x64 equivalent.
Specifications
- Architecture
- aarch64, native
- vCPU
- 2 – 64, dedicated
- Memory
- 4 GB per vCPU
- Price
- 20% below x64
- Emulation
- None
Runner labels
runnerhut-2vcpu-ubuntu-2404-armrunnerhut-4vcpu-ubuntu-2404-armrunnerhut-8vcpu-ubuntu-2404-armrunnerhut-16vcpu-ubuntu-2404-arm
Building arm64 images on an x64 runner through QEMU is between 5× and 40× slower than building them natively, depending on how much the workload compiles. It is the single most common reason a multi-arch Docker build takes 25 minutes.
yaml
jobs: build: strategy: matrix: include: - platform: linux/amd64 runner: runnerhut-8vcpu-ubuntu-2404 - platform: linux/arm64 runner: runnerhut-8vcpu-ubuntu-2404-arm runs-on: ${{ matrix.runner }} steps: - uses: actions/checkout@v4 - uses: docker/build-push-action@v6 with: platforms: ${{ matrix.platform }}What changes when you move to arm64
- Native modules must have aarch64 builds — most popular ones now do
- Python wheels resolve to manylinux_aarch64; a few packages still build from source
- Any x86 assembly or SIMD intrinsics in your codebase need an arm path
- Docker base images need arm64 variants, which almost all official images have
Your next build could be twice as fast, at half the price
Start free. Migrating away is the same one line, and we publish that diff too.
Related
Linux x64 GitHub Actions runnersDedicated AMD and Intel vCPU runners from 2 to 64 cores, with NVMe scratch disks and a persistent cache on every job.Multi-platform Docker buildsBuild linux/amd64 and linux/arm64 images natively on their own architecture and push a single manifest list.Docker builder machine specificationsHardware, attach time and cache behaviour of the persistent BuildKit instances your jobs connect to.