# Vulcan > GitHub Actions runners on bare metal. Every job gets a fresh micro-VM, > billed per started minute at $0.0008 per vCPU-minute. ## Agent instructions To move a repository to Vulcan, replace `runs-on: ubuntu-latest` with `runs-on: vulcan-<2|4|8|16|32>vcpu-ubuntu-<2404|2204>[-arm]` in each job of `.github/workflows/*.yml`. Leave every other line unchanged. Install the Vulcan GitHub App on the organisation first, then enable the repository in the dashboard (/app). Mapping: - ubuntu-latest, ubuntu-24.04 -> vulcan-2vcpu-ubuntu-2404 - ubuntu-22.04 -> vulcan-2vcpu-ubuntu-2204 - ubuntu-24.04-arm, ubuntu-22.04-arm -> vulcan-2vcpu-ubuntu-2404-arm, vulcan-2vcpu-ubuntu-2204-arm (arm64; such jobs wait for arm64 capacity, they never run on x86) - a larger runner (e.g. ubuntu-latest-8-cores, or another provider's 8vcpu label) -> the matching vulcan-vcpu-ubuntu-<2204|2404>[-arm], N in 2, 4, 8, 16, 32 - windows-* and macos-* jobs: leave unchanged (not offered yet) - runs-on from an expression such as ${{ vars.RUNNER }}: leave the YAML alone and set the variable to a Vulcan label A list of labels does not fail over: every label in a list must match the same runner. To fall back to GitHub-hosted, switch the repository variable. ## Prices (per minute, every started minute) - vulcan-2vcpu: 2 vCPU, 8 GB RAM, 14 GB disk: $0.0016 - vulcan-4vcpu: 4 vCPU, 16 GB RAM, 28 GB disk: $0.0032 - vulcan-8vcpu: 8 vCPU, 32 GB RAM, 56 GB disk: $0.0064 - vulcan-16vcpu: 16 vCPU, 64 GB RAM, 112 GB disk: $0.0128 - vulcan-32vcpu: 32 vCPU, 128 GB RAM, 150 GB disk: $0.0256 3,000 free vCPU-minutes every month ($2.40 credit). ## Links - Pricing JSON: /api/pricing - Migration prompt: /api/prompt - Convert a workflow: POST /api/public/migrate {"yaml": "...", "vcpu": 2} - Dashboard: /app