{"meta":{"title":"Running jobs on larger runners","intro":"Identify available larger runners, then route jobs to the right runners by using runner groups and workflow labels.","product":"GitHub Actions","breadcrumbs":[{"href":"/en/actions","title":"GitHub Actions"},{"href":"/en/actions/how-tos","title":"How-tos"},{"href":"/en/actions/how-tos/manage-runners","title":"Manage runners"},{"href":"/en/actions/how-tos/manage-runners/larger-runners","title":"Larger runners"},{"href":"/en/actions/how-tos/manage-runners/larger-runners/use-larger-runners","title":"Use larger runners"}],"documentType":"article"},"body":"# Running jobs on larger runners\n\nIdentify available larger runners, then route jobs to the right runners by using runner groups and workflow labels.\n\n## Identifying available runners for a repository\n\nIf you have `repo: write` access to a repository, you can view a list of the runners available to the repository.\n\n1. On GitHub, navigate to the main page of the repository.\n2. Under your repository name, click **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-play\" aria-label=\"play\" role=\"img\"><path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z\"></path></svg> Actions**.\n\n   ![Screenshot of the tabs for the \"github/docs\" repository. The \"Actions\" tab is highlighted with an orange outline.](/assets/images/help/repository/actions-tab-global-nav-update.png)\n3. In the left sidebar, under the \"Management\" section, click **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-server\" aria-label=\"server\" role=\"img\"><path d=\"M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z\"></path></svg> Runners**.\n4. Review the list of available runners for the repository.\n5. Optionally, to copy a runner's label to use it in a workflow, click <svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-kebab-horizontal\" aria-label=\"More options\" role=\"img\"><path d=\"M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z\"></path></svg> to the right of the runner, then click **Copy label**.\n\n> \\[!NOTE]\n> Enterprise and organization owners can create runners from this page. To create a new runner, click **New runner** at the top right of the list of runners to add runners to the repository.\n>\n> For more information, see [Managing larger runners](/en/actions/how-tos/manage-runners/larger-runners/manage-larger-runners) and [Adding self-hosted runners](/en/actions/how-tos/manage-runners/self-hosted-runners/add-runners).\n\n## Targeting larger runners in a workflow\n\nAfter you identify the larger runners you want to use, you can target them in your workflow with runner groups, workflow labels, or both. Use runner groups to route jobs to a set of runners, workflow labels to target runners with a specific label, or both when a job must match both conditions.\n\nIf an administrator has disabled standard GitHub-hosted runners, you can only use runner groups.\n\n### Targeting by runner group\n\nReference the runner group name in your workflow. Use this when you want to route a job to any available runner in a specific group.\n\n<div class=\"ghd-tool linux\">\n\nIn this example, runners have been added to a group called `build-runners`. The `runs-on` key sends the job to any available runner in the `build-runners` group:\n\n```yaml\nname: learn-github-actions\non: [push]\njobs:\n  check-bats-version:\n    runs-on: \n      group: build-runners\n    steps:\n      - uses: actions/checkout@v6\n      - uses: actions/setup-node@v7\n        with:\n          node-version: '14'\n      - run: npm install -g bats\n      - run: bats -v\n```\n\n</div>\n\n<div class=\"ghd-tool windows\">\n\nIn this example, runners have been added to a group called `build-runners`. The `runs-on` key sends the job to any available runner in the `build-runners` group:\n\n```yaml\nname: learn-github-actions\non: [push]\njobs:\n  check-bats-version:\n    runs-on: \n      group: build-runners\n    steps:\n      - uses: actions/checkout@v6\n      - uses: actions/setup-node@v7\n        with:\n          node-version: '14'\n      - run: npm install -g bats\n      - run: bats -v\n```\n\n</div>\n\n<div class=\"ghd-tool mac\">\n\nIn this example, the `runs-on` key sends the job to any available runner in the `macos-build-runners` group:\n\n```yaml\nname: learn-github-actions\non: [push]\njobs:\n  check-swift-version:\n    runs-on:\n      group: macos-build-runners\n    steps:\n      - uses: actions/checkout@v6\n      - name: Build\n        run: swift build\n      - name: Run tests\n        run: swift test\n```\n\n</div>\n\n### Targeting by workflow label\n\nReference a workflow label in your workflow when you want to route a job to runners that share a specific label.\n\nLarger runners are automatically assigned a workflow label that matches the runner name.\n\n<div class=\"ghd-tool linux\">\n\nIn this example, the `runs-on` key sends the job to any available runner that has been assigned the `ubuntu-24.04-16core` label:\n\n```yaml\nname: learn-github-actions\non: [push]\njobs:\n  check-bats-version:\n    runs-on:\n      labels: ubuntu-24.04-16core\n    steps:\n      - uses: actions/checkout@v6\n      - uses: actions/setup-node@v7\n        with:\n          node-version: '14'\n      - run: npm install -g bats\n      - run: bats -v\n```\n\n</div>\n\n<div class=\"ghd-tool windows\">\n\nIn this example, the `runs-on` key sends the job to any available runner that has been assigned the `windows-2022-16core` label:\n\n```yaml\nname: learn-github-actions\non: [push]\njobs:\n  check-bats-version:\n    runs-on:\n      labels: windows-2022-16core\n    steps:\n      - uses: actions/checkout@v6\n      - uses: actions/setup-node@v7\n        with:\n          node-version: '14'\n      - run: npm install -g bats\n      - run: bats -v\n```\n\n</div>\n\n<div class=\"ghd-tool mac\">\n\nFor macOS larger runners, you can use either GitHub-defined workflow labels or the workflow label that is automatically assigned from the larger runner name you set when you create it. For a list of available macOS workflow labels, see [Larger runners reference](/en/actions/reference/runners/larger-runners#available-macos-larger-runners-and-labels).\n\nIn this example, the `runs-on` key sends the job to any available runner that has been assigned the `macos-26-xlarge` label.\n\n```yaml\nname: learn-github-actions\non: [push]\njobs:\n  check-swift-version:\n    runs-on: macos-26-xlarge\n    steps:\n      - uses: actions/checkout@v6\n      - name: Build\n        run: swift build\n      - name: Run tests\n        run: swift test\n```\n\n</div>\n\n### Using labels and groups to control where jobs are run\n\nUse both labels and groups when a job must run only on runners in a specific group that also have a specific label. The runner must meet both requirements to be eligible to run the job.\n\n<div class=\"ghd-tool linux\">\n\nWhen you combine groups and labels, the runner must meet both requirements to be eligible to run the job.\n\nIn this example, the `runs-on` key combines `group` and `labels` so that the job is routed to any available runner within the group that also has a matching label:\n\n```yaml\nname: learn-github-actions\non: [push]\njobs:\n  check-bats-version:\n    runs-on:\n      group: ubuntu-runners\n      labels: ubuntu-24.04-16core\n    steps:\n      - uses: actions/checkout@v6\n      - uses: actions/setup-node@v7\n        with:\n          node-version: '14'\n      - run: npm install -g bats\n      - run: bats -v\n```\n\n</div>\n\n<div class=\"ghd-tool windows\">\n\nWhen you combine groups and labels, the runner must meet both requirements to be eligible to run the job.\n\nIn this example, the `runs-on` key combines `group` and `labels` so that the job is routed to any available runner within the group that also has a matching label:\n\n```yaml\nname: learn-github-actions\non: [push]\njobs:\n  check-bats-version:\n    runs-on:\n      group: ubuntu-runners\n      labels: ubuntu-24.04-16core\n    steps:\n      - uses: actions/checkout@v6\n      - uses: actions/setup-node@v7\n        with:\n          node-version: '14'\n      - run: npm install -g bats\n      - run: bats -v\n```\n\n</div>\n\n<div class=\"ghd-tool mac\">\n\nIn this example, the `runs-on` key combines `group` and `labels` so that the job is routed to any available runner within the group that also has a matching label:\n\n```yaml\nname: learn-github-actions\non: [push]\njobs:\n  check-swift-version:\n    runs-on:\n      group: macos-runners\n      labels: macos-26-xlarge\n    steps:\n      - uses: actions/checkout@v6\n      - name: Build\n        run: swift build\n      - name: Run tests\n        run: swift test\n```\n\n</div>\n\n## Further reading\n\nFor syntax details for the `runs-on` key, see [Workflow syntax for GitHub Actions](/en/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idruns-on).\n\nFor specifications, labels, limitations, and troubleshooting information, see [Larger runners reference](/en/actions/reference/runners/larger-runners)."}