Air-gapped mode
Air-gapped mode is the Enterprise tier posture for environments where the runner cannot — or must not — reach the public internet. Defence, medical-devices, automotive functional-safety teams use it to satisfy network-segmentation requirements.Air-gapped pools are available only on the Enterprise tier. The platform itself can be SaaS, single-tenant SaaS, or fully on-prem. The runner side of the contract is identical across all three.
What changes
In air-gapped mode the runner only ever opens connections to:https://<your-roboticks-platform>(could beapi.roboticks.io, your single-tenant subdomain, or an on-premhttps://roboticks.internal)- The S3-compatible object store presigned-URLs returned by the platform
pip install from public PyPI. It does not pull base images from Docker Hub at job time.
Set it up
Step 1 — declare an air-gapped pool
--airgapped flag annotates the pool. Jobs routed to it must have airgapped: true on the project — the router refuses cross-mode dispatch.
Step 2 — flip the project flag
Step 3 — install the runner on the isolated network
Mirror the Cosign-signed binary into your internal artifact store, then install on the host:Step 4 — set network.airgapped: true in runner.yaml
The runner enforces network-egress restrictions when this flag is set:
Pushing tests without GitHub
In air-gapped mode the runner cannotgit clone. Instead the CLI uploads the test payload directly:
Firewall rules
Open one outbound rule on the runner host. Everything else can be denied.
That is the entire firewall surface.
On-prem roboticks SDK mirror (optional)
If your tests pip install roboticks at job time and the runner cannot reach pypi.org, host an internal mirror:
Verification
After setup, prove isolation:Limits and trade-offs
Next steps
Pool management
Tokens, draining, audit log.
Service install
systemd / launchd / Windows service.