Install dev-mux

"Install" means something different for each role. Pick your role first, then follow the platform steps for that role. With the managed product the hub is provisioned for you — there is nothing to install for the hub role.

Which role am I installing?

If you are unsure: the box where your code and your agents live is a spoke; the box in your hands is a device.

Before you install

Every spoke and every device connects to your hub over Tailscale, a private network. Set that up first — it is the single most important step and the one most people ask about. Follow the Tailscale setup guide to generate a pre-authorized auth key and join your hub's network, then come back here.

Install a spoke

A spoke runs the single-file dev script. It needs no heavy dependencies — no databases, no tokens, no secrets. The one-line bootstrap fetches and installs it:

./install.sh --role spoke

Then wire the spoke up:

Once a spoke is installed, register it into your fleet — see Add spokes.

Spoke on a Raspberry Pi or cloud VM

The same install.sh --role spoke works on a Raspberry Pi, a GCP/AWS/Azure VM, or any Linux box. The floor is identical: bash, tmux, git. No native code runs on a spoke.

Spoke on macOS (Apple Silicon)

A Mac works as a spoke; the hub drives its tmux exactly like a Linux box. One thing to clear on Apple Silicon: Homebrew is not on the non-interactive PATH that a remote command runs under, so surface dev and tmux on a system path:

sudo ln -sf ~/.local/bin/dev /usr/local/bin/dev
sudo ln -sf "$(command -v tmux)" /usr/local/bin/tmux

Keep the spoke's repo on the internal disk (not an external volume) so macOS file permissions do not block the remote session.

Install a device

A device runs the devf client and connects to your hub. It stores no node configuration.

./install.sh --role device
export DEV_HUB=<your-hub-host>

<your-hub-host> is your hub's Tailscale name (for example hub.tailnet-XXXX.ts.net). Then run the onboarding helper for your platform, for example devf onboard mac.

Windows (WSL2)

tmux and the dev-mux core run under WSL2 on Windows. The PowerShell installer sets up WSL2, installs the tool inside it, and recommends WezTerm:

./install.ps1 -Role device -Hub <your-hub-host>   # or -Role spoke

Then drive the fleet from WezTerm into WSL with devf.

iPhone

There is no dev-mux binary for iPhone — it is a client. Install an SSH app (Blink Shell or Termius) and the Tailscale app, sign in to your hub's network, then connect:

ssh <your-hub-host>
devf next so

Your sessions are held on the hub in tmux, so an SSH reconnect drops you back exactly where you were — this is tmux-backed sessions with automatic reconnect, not a special always-on tunnel.

What connects to what

Every convenience tier — cockpit, phone, glasses — is additive. The fleet is fully drivable from the smallest tier alone.

Next steps