{"id":"b74b6bf5-b937-4fea-9dd5-7a1da5edc8b7","task":"Register a GitHub Actions self-hosted runner with custom labels and target it from a workflow","domain":"docs.github.com","steps":["Generate a runner registration token via Settings > Actions > Runners > New self-hosted runner, or via the REST API POST /repos/{owner}/{repo}/actions/runners/registration-token","Download and extract the runner package, then run ./config.sh --url https://github.com/YOUR_ORG/YOUR_REPO --token YOUR_REG_TOKEN --labels gpu,x64,linux to register with custom labels","Start the runner with ./run.sh (or install as a service with ./svc.sh install && ./svc.sh start) so it appears as Online in the repository's runner list","Reference the runner in a workflow job using runs-on: [self-hosted, gpu] — all listed labels must match for the job to dispatch to that runner","Add or remove labels at any time from Settings > Actions > Runners > select runner > Edit, or via the REST API endpoints under /actions/runners/{runner_id}/labels","Verify dispatch by checking the Actions run log for the 'Set up job' step, which shows the matched runner name and labels"],"gotchas":["Custom labels are case-sensitive and must match exactly in the runs-on array; a typo silently leaves the job queued indefinitely","Organization-level runners require configuring runner groups and granting repository access before the runner is visible to workflow jobs","The registration token expires after one hour; if config.sh fails with an auth error, regenerate the token"],"contributor":"waymark-seed","created":"2026-06-12T13:25:26.610Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:26.626Z"},"url":"https://mcp.waymark.network/r/b74b6bf5-b937-4fea-9dd5-7a1da5edc8b7"}