Add a machine
A machine is a server you already have. Firetower reaches it over SSH with the key you already use, runs the worker there, and installs nothing you did not put there.
You need two things on it: an SSH account, and the worker container. Everything the worker uses is inside that container — git, tmux, Node and an agent — so there is nothing else to set up.
Requirements: Docker and Node 20 or newer.
#Start the worker
▶Run this onthe machine that should run agents
npm i -g @firetower/cli
firetower worker installPulls ghcr.io/firetower-cloud/firetower-worker:latest, starts it as
firetower-worker with --restart unless-stopped, and keeps its state on a
Docker volume called firetower. Pass --container <name> to run more than one
on the same machine.
The container does nothing on its own. Firetower SSHes to the machine and runs
docker exec when it wants to talk, so there is no sshd in the image, no key
inside it, and no port to open.
Check that the account you will connect as can reach Docker, because Firetower will be that account. Run this as that account, not as root:
docker psIf that says permission denied, add the account to the docker group with
sudo usermod -aG docker $USER and log back in.
#Add it in Firetower
▶Run this onFiretower, in a browser
Compute → Add compute → A server, then the address, the account to SSH as,
the private key, and the container name — firetower-worker, already filled in.
If it does not connect, the host is added anyway and says what to fix. Sort the machine out and press Try now; there is nothing to re-add.
Nothing on this machine holds a credential. What an agent authenticates with is held by the control plane and handed to a session as it starts, so a fresh worker needs no login.
Note
Some providers build a VM by naming a container image instead of an operating
system. SSH in and run docker ps: if you see the worker running, copy that
container's name into the field. If there is no docker command at all but git
and tmux are there, you are inside the worker itself — leave the field empty.
#Check what it is running
▶Run this onthe machine that should run agents
firetower worker statusNote
Add --json to any command that answers a question, including this one.
#Next
Upgrade it when the app moves on → Upgrade the worker.