One tool,
every machine

A fleet is your private network at scale: roles and tags on every machine, replicated to all of them, with no master server. The same WireHop from 5 machines to 5,000.

Select by tag or role. Run once, get every answer back, with the machine it came from.

Tags

Label a machine with what it is: production, web, staging. Tags are set when the machine joins and can be changed later from anywhere.

Roles

A role maps to tags: developers reach developer and staging machines, ops reach everything. Each person gets their own account on each machine, no sudo unless the role says so.

Replicated

Membership, roles and tags live in a document every machine holds a copy of. There is no master list to run, lose, or keep in sync, and nothing to bottleneck at a thousand machines.

Confined

A role can carry a sandbox: read-only, no network, a few allowed commands. Enforced by the OS on the machine itself, and the recipient can only tighten it.

Set it up

From the machine that started your network, or any admin. Three steps.

Define roles

Manage any host from your laptop with hop admin. Roles are stored as JSON you can commit.

$ hop admin myserver role create developer --tags developer,staging $ hop admin myserver role create ops --tags '*' --sudo --groups docker

Add machines

One reusable invite joins any number of machines, each with its own tags.

$ hop invite --max-uses 50 --expiry 86400 Invite: abCdEf... (50 uses, 24h) # on each machine $ curl -fsSL https://wirehop.org/install.sh | \ bash -s -- --host --invite abCdEf... --tag web,production

Invite people by role

They reach every machine the role covers, by name, each with their own account.

$ hop invite --role developer --user alice Invite: xYz123... (reaches every developer+staging machine)

Sandboxes, presets, and the full role schema are in the docs: fleet management and the sandbox system.

From your AI tool

The same fan-out, asked for in plain language.

Add WireHop to your AI tool and it can select machines by role or tag, run one command across all of them, and bring the output back together. It skips machines that are offline and says how many it skipped, so a partial answer never looks like a complete one. Every machine records what was run in its own audit log.

How agents get set up.

"how much disk is left on every production box?" # what it runs $ hop fleet exec production -- df -h / → web-1 42% used → web-2 38% used → db-1 81% used 1 machine offline, skipped