Cloud Runners
This page is for maintainers who need to move PRFlow jobs away from the default GitHub-hosted Linux runner.Select a Runner
Every job in the two shipped workflows usesubuntu-latest by default. Set the GitHub Actions variable DEVFLOW_RUNNER to select another runner for all of them.
Set it under Settings → Secrets and variables → Actions → Variables. Keep the
DEVFLOW_ name. No PRFLOW_RUNNER alias exists.
Provision a Self-Hosted Runner
Install these prerequisites before selecting the runner:git.- GitHub CLI (
gh). jq.- Python 3.11 or newer, available as
python3. - A POSIX bash on
PATH. - Docker when
setup.servicesor repository checks need it.
bash for run: steps. On Windows, install Git Bash or an equivalent POSIX bash. If Python is available only as python or py -3, run the shipped scripts/provision-python3-shim.sh --apply once on the runner. Use DEVFLOW_GH, DEVFLOW_JQ or DEVFLOW_BASH only when the working executables are in nonstandard locations.
Use Claude Code on Windows
The action’s bundled Claude Code installer is Unix-only. Preinstall Claude Code on a self-hosted Windows runner and setsetup.claude_code_executable to the single-line path of claude.exe.
Avoid Runner Selection Traps
A self-hosted label array must match a registered runner’s labels. GitHub leaves an unmatched job queued rather than failing it. Leavesetup.git_dir_pin and setup.git_work_tree_pin at false unless you have validated their documented constraints. git_dir_pin is not honored by implementation and can misdirect repository-root config reads. git_work_tree_pin breaks remote marketplace cloning and is appropriate only for a local-only marketplace list.
PRFlow can send jobs to the configured runner, but it is not certified for every non-Linux environment. Run one complete shipped workflow on the target runner before treating it as production-ready.