4 agent machines + 1 M4 control surface · Tailscale mesh · Mech 1 peer gateways · Mech 3 unified dashboard.
Only box that can run local models. Do research synthesis and hard reasoning here; point it at a local inference server or a strong cloud model.
Tailscale + Hermes install & verify
# Windows (Machine 0 already done)
winget install Tailscale.Tailscale
# macOS (M4)
brew install tailscale
# Linux agent boxes
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up
tailscale ip # note each 100.x.y.z
# Every machine: Hermes agent
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
hermes doctor
hermes setup --portal # or: hermes model
Windows · 5060 Ti · gateway + key
hermes gateway setup # enable api_server, port 8377
# ~/.hermes/config.yaml
gateway:
platforms:
api_server:
enabled: true
extra:
port: 8377
# ~/.hermes/.env (create if missing)
HERMES_API_SERVER_KEY=<your-strong-random-key>
# generate one:
python -c "import secrets; print(secrets.token_urlsafe(32))"
hermes gateway start
Optional local model: hermes model for a local backend, or point config.yaml at llama.cpp / vLLM / Ollama on http://localhost:8080/v1. 16GB VRAM fits quantized 70B-class.
Bosgame E5 / 8GB · cloud models only
Repeat on each of the 3 boxes: same Tailscale, Hermes, gateway, and same HERMES_API_SERVER_KEY value as Machine-0. Cloud API models only (Nous Portal / OpenRouter) — never local inference on 8GB. Keep each bot's toolset lean: file ops, terminal, maybe browser.
hermes gateway setup # enable api_server :8377
# ~/.hermes/.env
HERMES_API_SERVER_KEY=<same-key-as-machine-0>
hermes gateway start
Hermes Desktop + Tailscale
brew install tailscale
tailscale up && tailscale ip
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
hermes setup --portal && hermes doctor
hermes desktop # launches the dashboard
Keep the M4 as a clean dashboard, or also run light agents on it (fast CPU + Neural Engine). Set the M4 connection as Primary later so Sessions opens there.
Register from one hub, then mirror
# From Machine-0 (hub):
hermes peer add machine-1 --url http://<ip-1>:8377 --key <KEY>
hermes peer add machine-2 --url http://<ip-2>:8377 --key <KEY>
hermes peer add machine-3 --url http://<ip-3>:8377 --key <KEY>
hermes peer list # expect 3 peers
# ~/.hermes/config.yaml — write SAME block on EVERY machine, then:
# hermes gateway restart
bot_peers:
machine-0: { url: "http://<ip-0>:8377", api_server_key: "<KEY>" }
machine-1: { url: "http://<ip-1>:8377", api_server_key: "<KEY>" }
machine-2: { url: "http://<ip-2>:8377", api_server_key: "<KEY>" }
machine-3: { url: "http://<ip-3>:8377", api_server_key: "<KEY>" }
Symmetric registration = any bot can @mention any remote bot. The Bot Mode protocol learns the roster automatically.
4 remote gateways on the M4
In Hermes Desktop: Settings → Gateways (plug icon) → Add connection → Remote gateway, once per machine: Name machine-0..3, URL http://<tailscale-ip>:8377, auth = that machine's HERMES_API_SERVER_KEY. Roster shows every profile; duplicates disambiguate as @name-device (e.g. @researcher-machine-0). Group chats can span machines.
Option A on home box · B from M4
A (recommended): create each bot where it runs — chat /newagent or New Agent dialog, or CLI:
# on the bot's home machine:
hermes profile create heavy-lifter --description "Heavy reasoning, research synthesis"
hermes -p heavy-lifter setup
# Machine-1: coder · Machine-2: reviewer · Machine-3: writer
B: from the M4 New Agent dialog, use the Create on picker to target a remote machine.
Prove Mech 1 + Mech 3, then assign
hermes peer list # Mech 1 roster on each box
# from any bot: @coder-machine-1 run a hello-reply check
# from M4: open each remote agent chat, send a probe message
Suggested split (adjust to your workflows): M0 heavy-lifter/researcher · M1 coder · M2 reviewer/QA · M3 writer/ops-cron. Different model pin per bot is fine.
Research synthesis, hard reasoning. Local quant model or strongest cloud pin. Generous context, full tools.
profile: heavy-lifter
Implements code, writes tests. Cloud API model. Lean: file ops, terminal, git, maybe browser.
profile: coder
Reads diffs, checks tests, audits. Smallest footprint — diff viewer + test runner only.
profile: reviewer
Content, docs, ops routines, cron jobs. Scheduler + editor tools.
profile: writer