Day 1 for hosts¶
You have a machine with an NVIDIA card and want to add it to a pool. This page is everything you need for the first day: what the machine needs, the one command, how to tell it worked, and how to take it out again. The deeper reference is Bootstrap contract.
What your machine needs¶
| Needs | Checked by the installer? | |
|---|---|---|
| Operating system | Linux, x86_64 or arm64. macOS joins but cannot train or serve (no CUDA). WSL is untested. | no |
| GPU | An NVIDIA card, Pascal (GTX 10xx) or newer. Several cards in one machine are used together. | no - detected when the node starts |
| VRAM | 4 GB per card is the floor: the leader places work only on cards with about 4 GB free (SWARM_PLACEMENT_MIN_GPU_FREE_GB). Two 4 GB GTX 1050 Ti and two 6 GB GTX 1660 SUPER serve Qwen3-14B together. |
the self-test, after joining |
| NVIDIA driver | nvidia-smi must work. The installer takes PyTorch 2.4-2.6 from PyPI, a CUDA 12 build, which needs driver 525 or newer (550 or newer recommended). |
no |
| Python | 3.11 or newer, with venv (on Debian/Ubuntu: apt install python3-venv), plus curl and tar. |
yes, first thing |
| Disk | About 10 GB for the Python environment and PyTorch, plus the models you hold: a stage of a 14B model in 4 bits is 3-5 GB in the Hugging Face cache. | no |
| Network | Outbound HTTPS to the leader and to PyPI. Nothing has to reach in: no port forwarding, no VPN of your own. | - |
| Account | No root. Everything installs into ~/.silent-swarm as your user. |
- |
Check the two things the installer does not:
nvidia-smi # lists your cards and the driver version
python3 --version # 3.11 or newer
Join with one command¶
- Sign in, open your pool (Pools on the dashboard) and press Add a node. Tick Join as a standby if the machine should only step in when another one fails.
-
Copy the command. It looks like this and is valid for one hour:
on your GPU machinecurl -fsSL -H "X-Bootstrap-Token: <token>" https://<leader>/api/v1/bootstrap/fellow.sh | bash -s -- \ --leader-url https://<leader> --session-id <session> --token <token>Anyone holding it can add a machine to your pool until it expires, so do not paste it anywhere public. 3. Run it on the GPU machine, as your normal user.
Want to read the script first? Add --dry-run to see the six steps without
running them, or follow Read before you run
to download it, check its checksum and read it before running it. Either way,
the script refuses plain HTTP and checks the code it downloads against the
checksum the leader publishes.
The first run takes a few minutes, most of it installing PyTorch.
What "ready" looks like¶
In the terminal, the installer counts six steps and ends with:
[bootstrap] step 6/6: starting fellow process
[bootstrap] fellow started successfully with pid=12345
[bootstrap] log_file=/home/you/.silent-swarm/logs/fellow.out
The node now runs in the background; you can close the terminal.
On the pool page, under Nodes, the machine appears within a few seconds:
- Status goes to Ready: it is connected and idle. Training means it is working on a run; Offline means the leader has not heard from it for about 15 seconds.
- Role starts as Probation while the node runs its self-test: it allocates most of each card's free memory and checks a computation whose answer is known. When that passes, the role becomes Active (or Standby). See Admission, checkout and availability.
- The Grade fills in over the next hours, from uptime, speed and errors.
Your profile shows what your machine contributed: GPU-hours online, tokens served and requests answered.
On the machine itself:
fellow logs --attach # follow the node's log (Ctrl+C to stop following)
fellow jobs # recent training events
If fellow is not found, add ~/.local/bin to your PATH (the installer says
so when it is missing).
Day-to-day¶
- You need the GPU back for a while:
fellow checkout --in 15mmoves the node's work elsewhere before then without losing a step, and nothing new is placed on it.fellow checkingives it back. It does not hurt the grade. - After a reboot the node starts by itself (a systemd unit, or an
@rebootline in your crontab).fellow autostart statusshows which, andfellow autostart offstops that; installed with--no-autostart, or before this existed, runfellow restartafter a reboot orfellow autostart ononce. - Updates come from the leader: an admin runs
swarm updateand every idle node reinstalls itself from the leader's current code. On the machine,fellow updatedoes the same. - Stop for now:
fellow stop. The node shows as Offline until you start it again withfellow restart.
Leaving¶
To take the machine out for good, on the machine:
fellow purge
It stops the node and deletes everything the installer put there: the code,
the Python environment, the config with its token, the logs, the userspace mesh
and the fellow command; it also removes the firewall rules the installer added
(only if you joined with --allow-from). Models downloaded through Hugging Face
stay in ~/.cache/huggingface; delete that folder too if nothing else on the
machine uses it.
The pool shows the node as Offline from then on. A pool admin can also do
this from the leader side (swarm release --fellow-id <id> --purge-install),
which works even while the machine is offline: it is purged when it next
connects.
When something goes wrong¶
Python 3.11 or newer is required: install a newer Python (python3.12is picked up automatically) and run the command again.- The node shows Offline right after joining:
fellow logsshows why; most often PyTorch cannot see the card (nvidia-smifails, or the driver is older than 525). - Probation does not end: the self-test failed, usually because another program holds the card's memory. The pool page's role menu offers Run its self-test again.
- The command says the session expired: commands live one hour; press Add a node again.
More in Troubleshooting. And if something on this page was wrong for your machine, Send feedback in the app's sidebar reaches the people running the pool.