# Custom GitHub Actions Runners ## Available Runners | Runner Label | Architecture | Size | Ephemeral | Notes | | -------------------------- | ------------ | ------ | --------- | ---------------------------------------------------------- | | `runner-small` | x86_64 | Small | No | Light tasks: linting, formatting, validation | | `runner-medium` | x86_64 | Medium | No | Standard CI: tests, builds | | `runner-medium-arm64` | arm64 | Medium | No | ARM64 builds and tests | | `runner-large` | x86_64 | Large | No | Heavy workloads: benchmarks, coverage, release builds | | `runner-large-spot` | x86_64 | Large | Yes | Cost-optimized large jobs where interruption is acceptable | | `runner-medium-arm64-spot` | arm64 | Medium | Yes | Cost-optimized ARM64 jobs where interruption is acceptable | ## Spot Runners Spot runners (`*-spot`) use ephemeral cloud instances provisioned on a best-effort basis. They are significantly cheaper but can be preempted at any time if the cloud provider reclaims capacity. **Use spot runners for:** - Jobs that can be retried without consequence (test suites, linting) - Non-time-critical workloads - PR validation where re-runs are acceptable **Do not use spot runners for:** - Benchmarks (preemption and noisy-neighbor effects skew results) - Release builds and publishing - Jobs requiring consistent, reproducible timing ## Choosing a Runner | Workload | Recommended Runner | | ------------------------------- | -------------------------- | | Linting, formatting, validation | `runner-small` | | Unit tests, standard builds | `runner-medium` | | ARM64 cross-compilation / tests | `runner-medium-arm64` | | Benchmarks, coverage reports | `runner-large` | | Non-critical large builds | `runner-large-spot` | | Non-critical ARM64 builds | `runner-medium-arm64-spot` |