Fleet Management

One tool,
every machine

A fleet in WireHop is just your private network of machines (a warren), managed at scale: roles and tags across every machine, replicated to all of them, with no master server. Same WireHop simplicity, from 5 machines to 5,000.

How It Works ← Back to WireHop

Three concepts, that's it

Managing a fleet comes down to your warren, tags, and roles.

Your warren

Your machines, as one shared list. Every node sees the same membership; there's no master server to run or lose. Add a machine and it's in the warren; its roles and tags travel with it.

Tags

Label your hosts with tags like developer, production, or web. Tags describe what a machine is.

Roles

Define what people can reach. A role maps to host tags ("developers reach developer + staging machines") and gates warren VPN reach too. Each person gets their own account.

How it works

Set up fleet management in four steps.

Start your warren

Install WireHop on any machine. It starts your warren and prints a creator invite. Redeem it from your laptop with hop connect and it's saved as a known host (here, myserver).

Define roles

Roles map host tags to access, and to warren VPN reach. Manage any host remotely with hop admin <host>, e.g. hop admin rex role create developer.

Add machines

One invite registers any number of machines into the warren, with their tags. Membership replicates to every node, no master list to keep in sync.

Invite your team

Invite people by role. They reach every matching machine (by name, over the warren) each with their own account.

Terminal, Setting up your warren
# 1. Install WireHop on a host, it starts your warren $ curl -fsSL https://wirehop.org/install-daemon.sh | bash Creator invite: eyJ0eX... (valid for 1 hour) # 2. Redeem it from your laptop, saved as a known host, "rex" $ hop connect eyJ0eX... Saved as known host: rex # 3. Define roles, they map tags to access AND warren reach $ hop admin rex role create developer --tags developer,staging $ hop admin rex role create ops --tags '*' --sudo # 4. One invite adds any number of machines to the warren $ hop admin rex fleet-invite --tags developer,web Warren invite: abCdEf... (100 uses, 24h expiry) # 5. On each machine, joins the warren with its tags $ curl -fsSL https://wirehop.org/install-daemon.sh | bash -s -- --invite abCdEf... # 6. Invite a teammate by role $ hop admin rex invite --role developer --name alice Invite: xYz123... (reaches every developer+staging machine)

Role-based access

Define who can access what. Each role maps to host tags and access settings.

Sensible defaults, full control

Roles default to individual accounts with no sudo. Override as needed, give ops sudo, create shared service accounts for CI, or add users to specific Unix groups.

  • Individual accounts: each person gets their own Unix user
  • No sudo by default: principle of least privilege
  • No passwords: access only via WireHop's key-based auth
  • Auto-created: user accounts created on first connection
  • Git-committable: roles live in roles.json, version-control your access policy
Role
Host Tags
Sudo
User Mode
Sandbox
developer
developer, staging
No
Individual
,
ops
* (all hosts)
Yes
Individual
,
security
production, staging
No
Individual
audit
ci
build
No
Shared
deploy
roles.json
{ "roles": [ { "name": "developer", "host_tags": ["developer", "staging"], "user_mode": "individual", "sudo": false }, { "name": "security", "host_tags": ["production", "staging"], "sandbox": { "read_only": true, "no_network": true } }, { "name": "ops", "host_tags": ["*"], "user_mode": "individual", "sudo": true, "groups": ["docker"] } ] }

Sandbox Policies

Restrict what peers can do at the OS level. Policies are enforced via macOS Seatbelt and Linux Landlock.

Three layers of enforcement

Sandbox policies flow through three layers: role definition (the role sets the baseline), invite creation (the host can further restrict), and client connection (the client can self-restrict). The result is always the strictest combination.

  • Presets: monitor (read-only, no network, scoped paths), audit (read-only, no network), deploy (scoped write, dangerous commands blocked)
  • Custom policies: combine --read-only, --no-network, --scope, --allow-command
  • Role-based: assign sandbox policies per role in roles.json
  • Client self-restriction: peers can request stricter sandbox at connect time
  • Merge logic: restrictions only tighten, never loosen
Terminal, Sandbox examples
# Create a monitor-only invite $ hop invite --preset monitor # Create a custom sandboxed invite $ hop invite --read-only --no-network --scope /var/log # Connect with self-imposed restrictions $ hop web-1 --preset audit # Execute a command in read-only mode $ hop web-1 --read-only -- cat /etc/hosts

Using the fleet

Once set up, your team works with the warren using familiar commands.

Terminal, Connecting
# Alice redeems her invite $ hop connect xYz123... Added 12 hosts (role: developer) # List available hosts $ hop fleet list developer web-1 online developer,web web-2 online developer,web staging-1 online staging # Connect to a specific host $ hop web-1 web-1 $ _ # Quick command on a single host $ hop web-1 -- uptime 14:32:01 up 42 days
Terminal, Fleet operations
# Run a command across all developer hosts $ hop fleet exec developer -- uname -a [web-1] Linux 6.1 x86_64 [web-2] Linux 6.1 x86_64 [staging-1] Linux 6.1 x86_64 # Check warren status $ hop fleet status Warren: 3a8f... (replicated to every node) 3 machines, 3 online # Admin: see the members $ hop admin rex peers alice developer online bob ops online

Run a command across every machine from your AI tool

The same fan-out you just saw, asked for in plain language instead of typed.

Add WireHop to your AI tool and it can select machines by role or tag and run one command across all of them, then bring the output back together. It skips machines that are offline and tells you how many it skipped, so a partial answer never looks like a complete one.

  • Selects by role or tag, the same way you would
  • Searches every machine's logs together, with per-machine provenance
  • Stays inside the limits the invite set: it cannot widen its own access
  • Every machine records what was run in its own audit log
How agents get set up →
Your AI tool
"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

Scales with you

No infrastructure to manage. The same tool works at every size.

Small Team (5-50)

Your warren plus JSON config, zero infrastructure beyond WireHop itself. Set up in minutes.

Growing (50-500)

Same warren. Roles keep access organized, and membership replicates to every node automatically, nothing to keep in sync by hand.

Large (500+)

No central server to bottleneck or shard: the warren replicates peer-to-peer, and data flows directly between machines.

Ready to get started?

Fleet features are built into WireHop: it's just your warren at scale. Install the daemon, redeem the creator invite, and you're managing every machine.

Install WireHop