Skip to main content
A move is one edit per job: the runs-on line. GitHub keeps the workflow, logs, artifacts, and secrets. Before You Begin: A private repository that is connected and turned on, as in the quickstart. A job in a repository that is off waits on GitHub.

Pick the Label

BoxRouter does not accept GitHub’s own labels such as ubuntu-latest. Replace the whole runs-on value with one BoxRouter label. Add self-hosted, linux or x64 beside it if you like; any other label is refused, and so are two BoxRouter labels. Each label sets a CPU and memory floor, so two runners with the same core count can have different memory. Runners lists each floor. BoxRouter refuses an unsupported size and lists the labels that exist; it never rounds. There is no Ubuntu 22.04 or 26.04 label, no floating latest, and no size above 16 vCPU.
A job that moves from ubuntu-22.04 runs on 24.04, so check the tool versions its steps rely on. Who pays and which provider runs the job come from your workspace’s routing settings, not the label.

Choose Which Jobs Move

Move jobs that need only Node.js, Git, curl and jq, or tools they install in a step: tests, linters, type checks, and builds without Docker. Keep these on GitHub:
  • Jobs that use Docker, Buildx, Compose, or service containers. The default runner has no Docker; a -full runner label requests the full image with Docker on verified routes.
  • Jobs for macOS, Windows, Arm, or Ubuntu 22.04 or 26.04.
  • Jobs in public repositories or on fork pull requests.
  • Disk-heavy jobs until you check free space on the target runner with df -h.
  • Jobs that run longer than 30 minutes. A job runs for up to 6 hours, but a provider account or Credits funding can lower the limit to 30 minutes, and a policy can set any shorter limit. A job that reaches its limit ends early. See Time limits.
A workflow can mix both: each job picks its own runs-on.

Check the Move

  1. Review the diff. It should change only runs-on lines.
  2. Push a branch, or use Run workflow for a workflow_dispatch workflow.
  3. On GitHub, the job shows the BoxRouter label and a runner named like brx-….
  4. In BoxRouter, open GitHub Actions and select the run for its provider, size, timeline, duration, and cost.
  5. Compare duration with your last run on GitHub. If the job ran out of memory or disk, check which limit it hit. The 16 vCPU label has a higher memory floor; a larger label does not guarantee more disk.
If a job stays queued or is refused, see Troubleshooting.

Give This to a Coding Agent

Paste this into a coding agent in a checkout of the repository.

Roll Back

Revert the runs-on line:
BoxRouter wrote nothing into your repository, so the revert is the whole rollback. A run already in progress finishes on BoxRouter; cancel it on GitHub if you don’t want that. Runs that start after the revert use GitHub’s runners. The installed App and the repository switch cost nothing while no job uses a BoxRouter label.

Next Steps

Choose a Runner

Labels, sizes, tools, and limits.

Troubleshoot Actions

Fix a queued or refused job.

How Actions Security Works

Which jobs run and where secrets stay.