Requirements
Operating system
Runtime dependencies
Optional packages (installed by agent jobs when needed)
Network requirements
Outbound HTTPS (required)
The VM must reach:
All agent API traffic must use HTTPS — the agent refuses plaintext BALCTL_API_BASE / BALCTL_UPDATE_URL (v28+).
Inbound (not required)
Panel-driven operations use the outbound job queue. No inbound SSH or agent port is required if the agent runs as root for privileged jobs.
IP allowlisting (enrollment)
When you create a pool member, you must supply at least one allowed source IPv4. This is the VM’s outbound/egress IP as seen when it calls the control plane — not necessarily its SSH IP or the IP traffic should hit.
The control plane validates CF-Connecting-IP against the enrolled allowlist on every agent request. Mismatch → 403.
Enrollment requirements
Before the agent can heartbeat, create the member in the dashboard (Add pool member):