Adding Nodes
Grow the fleet: roles, staged provisioning and connection.
A node is any machine that runs the ZenSailor agent and Docker. The main node hosts the platform itself; every additional node scales build and run capacity across machines — that is what unlocks true horizontal deployment.
Roles#
Each node gets a role that steers what it does:
| Role | Builds | Runs services |
|---|---|---|
| General (default) | ✓ | ✓ |
| Builder only | ✓ | – |
| Runner only | – | ✓ |
Scheduling tags refine placement further: services can require target tags (where they run) and build tags (where they compile); node roles seed default tags, and you can refresh tags after changing a node's role.
Provisioning flow#
From System → Nodes → Add node:
- Give the node a name and pick its role.
- Provide the IP, SSH port, user and key. Node provisioning uses SSH keys —
add one under Settings → Security → SSH Keys or generate it from the
CLI (
zensailor ssh-key generate). - The flow provisions the machine in stages with live progress — Docker install, agent setup, registry wiring — and reattaches to an existing run if interrupted, so a flaky connection does not restart the whole process.
Once connected, agents report heartbeats every 30 seconds; a node that falls silent for 90 seconds is marked offline.
Reachability#
The control plane reaches the agent over its public address on the agent port. Remote-node services still route through the platform: the agent publishes host ports (30000–32767) and Traefik dials back using the heartbeat's port map, so your routers work with zero extra configuration.