Adding a Node
Connect a server to your organization and have it accept workers and deployments in minutes.
This is what you do today to get a working node: create it in the dashboard, run one Docker command on your server, and it's online. There's no extra configuration step — every node behaves the same way regardless of where it's hosted.
- Docker installed and running on the server
- Outbound HTTPS/WSS access to
spunto.net(no inbound ports needed) /var/run/docker.sockaccessible to the agent container
Create a node in the dashboard
Go to Dashboard → [Your Org] → Nodes → New node.
Give it a name (e.g. prod-eu-1) and click Create. Copy the NODE_TOKEN shown — it's only displayed once.
Deploy the agent on your server
SSH into your server and run:
docker run -d \
--name spunto-agent \
--restart unless-stopped \
-e NODE_TOKEN=your_token_here \
-e API_URL=https://spunto.net \
-v /var/run/docker.sock:/var/run/docker.sock \
ghcr.io/coderhammer/spunto-agent:latestThe agent connects within a few seconds — outbound only, nothing to open on your firewall.
Verify the node is online
Back in the dashboard, the node's status should switch to online. If it stays offline after 30 seconds, check the agent logs:
docker logs spunto-agent -fSpawn a worker
Go to a project and click New worker. Spunto automatically schedules it on the new node (least-loaded selection across all online nodes in the org).
If you don't want to manage a server yourself, Spunto can provision one for you:
- Connect your GCP account from Account Settings (OAuth,
cloud-platformscope) - Nodes → Add node → Google Cloud
- Select region, machine type, and disk size
- Click Create
Spunto calls the Compute Engine API to create a Debian VM with a startup script that installs Docker and runs the agent automatically — no manual docker run needed. The VM provisions in about 2 minutes and the node goes online by itself.
You can register multiple nodes under the same organization. Workers and deployment services are scheduled on the least-loaded online node — the one with the fewest running workers.
If no node is online when a worker is created, the creation fails with a clear error rather than silently queuing.
Before shutting down a server:
- Go to the node's detail page
- Click Drain — the node stops accepting new workers
- Wait for existing workers to finish, or stop/move them manually
- Shut down the server
When the agent reconnects (after a restart), the node resumes accepting workers automatically — draining is not persisted across reconnects unless you drain it again.
If a token is compromised:
- Go to Nodes → select the node → Rotate token
- A new token is generated; the old one is invalidated immediately
- Update the
NODE_TOKENenv var on your server and restart the agent container
- The agent only accepts commands from the API WebSocket connection it initiated — nothing listens for inbound connections on the node
- Worker containers run as isolated Docker containers with no host network access
- The Docker socket is mounted read-write — the agent needs it to manage containers. Treat any machine you connect as a node as trusted infrastructure for your organization
