Self-hosted runners
Use a runner you control when tests require VPN egress.
Free VPN CLI can fit CI-style workflows when the runner environment allows VPN services and tunnel permissions. It is best suited to self-hosted runners or controlled machines, not as a blanket promise for GitHub-hosted runners.
GitHub-hosted runner compatibility is not promised here. Use Free VPN CLI on self-hosted runners or environments where installing services and creating VPN tunnels is allowed.
Install and permit the VPN service in a controlled runner environment, then use status and doctor output around network-sensitive jobs.
Keep CI usage permission-aware and transparent. The runner must allow the network behavior you need.
Use a runner you control when tests require VPN egress.
Capture status before tests that depend on region or egress.
Save doctor output when a job fails due to networking.
Avoid hidden VPN changes in shared or restricted CI contexts.
Three verbs cover most day-to-day VPN work. set-region and doctor cover region selection and troubleshooting.
Prepare the runner outside the job or in a controlled setup step. During the job, capture status before network-sensitive steps and doctor output only when needed.
| Command | Why it matters |
|---|---|
freevpn status --json | Log current VPN state before the sensitive step. |
freevpn set-region "US East"freevpn up --json | Connect to an explicit region when the runner permits it. |
freevpn doctor --json | Collect diagnostics when a network-dependent job fails. |
freevpn down | Clean up runner VPN state when your workflow requires it. |
CI needs headless operation, parseable output, and failure evidence more than visual controls.
The CLI does not require a desktop window for status, connection, or diagnostics.
Use --json for workflow logs and artifacts.
Capture DNS, route, controller, license, and egress diagnostics when a network step fails.
Use a documented region slug or label and verify status.
Runner network permissions decide whether VPN setup can work.
Make VPN state visible in job logs where appropriate.
VPN use in CI should be explicit and environment-aware.
status --json before tests and doctor --json on failure.freevpn status --json before the sensitive step and doctor --json only when troubleshooting.Start with a self-hosted or controlled runner, then use JSON status and doctor output around network-sensitive jobs.