Command reference¶
Every fleet command and option. fleet COMMAND --help prints the same, and each
command accepts --help. For what to use when, start with the
guides; for files, settings and environment variables, see
configuration.
| Command | What it does |
|---|---|
fleet ls |
List every device with live resource availability. |
fleet show |
Full detail for one device. |
fleet add |
Add a machine: how you reach it over ssh, or a name from fleet ls --discover. |
fleet edit |
Change a device's address or settings after it was added. |
fleet install |
Install fleet on a device, so you and its agents can use fleet from there too. |
fleet update |
Update fleet on the machines that have it, the way it was installed there. |
fleet ps |
What is running on every GPU, across the fleet, and which GPUs are idle. |
fleet models |
Every model being served across the fleet: which server, where, and how to reach it. |
fleet top |
Live view of the fleet, or of one device. Like htop, for your machines. |
fleet rm |
Stop watching a machine: take it out of this machine's list. |
fleet ssh |
Open a shell on a device, or run a command: fleet ssh machine_A -- nvidia-smi. |
fleet setup |
Teach your coding agents to use fleet. |
fleet uninstall |
Take fleet off this machine: out of your agents, and with --purge its files. |
fleet paths |
Show where fleet keeps its state. |
fleet doctor |
Why a machine will not let fleet in, and the one thing to do about it. |
fleet ls¶
List every device with live resource availability.
fleet ls [OPTIONS] [NAMES]...
Example:
fleet ls --json
| Argument | |
|---|---|
NAMES |
only these devices |
| Option | |
|---|---|
--json |
print JSON instead of a table, for scripts and agents |
--refresh, -r |
force a live probe |
--rescan |
also re-read software versions and folder sizes, which machines otherwise cache for 6 hours |
--wait SECONDS |
with --rescan: wait up to this long for the folder sizes it started measuring |
--online |
only reachable devices |
--discover |
list machines in your ~/.ssh/config and on your tailnet that are not added yet |
--hide NAME |
with --discover: never offer this one again; repeatable |
--unhide NAME |
with --discover: offer it again |
--all |
with --discover: include hidden ones |
--fields A,B,... |
with --json: only these keys of each machine, e.g. free_vram_mib,gpus,usd_per_hour |
--tag NAME |
only machines carrying this tag or fact; repeatable, and all must match |
fleet show¶
Full detail for one device.
fleet show [OPTIONS] [NAME]
Example:
fleet show machine_A
| Argument | |
|---|---|
NAME |
defaults to this machine |
| Option | |
|---|---|
--json |
print JSON instead of a table, for scripts and agents |
--refresh, --no-refresh |
probe it now; --no-refresh shows the last reading |
--rescan |
also re-read software versions and folder sizes, which machines otherwise cache for 6 hours |
--wait SECONDS |
with --rescan: wait up to this long for the folder sizes it started measuring |
fleet add¶
Add a machine: how you reach it over ssh, or a name from fleet ls --discover.
fleet connects exactly as you do -- your ssh config, your keys and agent, Tailscale SSH, the key on your rental provider's account -- and installs nothing there.
fleet add [OPTIONS] [SSH_COMMAND]
Example:
fleet add "ssh -p 58418 root@1.2.3.4"
| Argument | |
|---|---|
SSH_COMMAND |
e.g. "ssh -p 58418 root@1.2.3.4" |
| Option | |
|---|---|
--self |
record the machine you are on, with no ssh |
--name |
what to call it; guessed from the host if omitted |
--alias SHORT |
a short handle to type instead of the name |
--tag NAME |
label it; repeatable. fleet ls --tag NAME finds it again |
--kind |
permanent|rental|shared|appliance|mobile |
--json |
print JSON instead of a table, for scripts and agents |
--dry-run |
probe and show what would be recorded; record nothing |
fleet edit¶
Change a device's address or settings after it was added.
Rentals recycle IPs and ports, so --ssh re-points a device without losing its name, tags, cost or history. Tags, cost, a note, folders (--path) and declared servers (--endpoint) are written to that machine's own machine.yaml, so everyone who looks at it reads the same; --local keeps tags and cost here instead.
fleet edit [OPTIONS] [NAME]
Example:
fleet edit machine_A --ssh "ssh -p 40001 root@5.6.7.8"
| Argument | |
|---|---|
NAME |
defaults to this machine |
| Option | |
|---|---|
--ssh CMD |
new address, e.g. "ssh -p 2222 root@5.6.7.8" |
--disk-path PATH |
watch this mount or directory for free space; repeatable |
--clear-disk-paths |
go back to autodetecting mounts |
--name NEW |
rename it; the id and its history stay |
--alias SHORT |
a short handle to type instead of the name; --alias "" removes it |
--tag NAME |
add a label; repeatable |
--untag NAME |
remove a label; repeatable |
--cost USD |
what it costs per hour, for the $/HR column and the fleet's burn rate; 0 clears it |
--note TEXT |
a line about the machine; --note "" clears it |
--path KIND=PATH |
where this machine keeps models, datasets, media...: models=/data/models; repeat a kind for several, models= clears it |
--endpoint NAME=PORT[/PATH] |
a model server fleet would not find by itself: myllm=9000 or myllm=9000/v1; myllm= removes it. Never a key |
--local |
keep --tag/--untag/--cost in this machine's own list instead of on that machine |
--json |
print JSON instead of a table, for scripts and agents |
fleet install¶
Install fleet on a device, so you and its agents can use fleet from there too.
A machine fleet only looks at needs nothing installed; this is for one you also work on. It installs from git; re-running updates an existing install.
fleet install [OPTIONS] [NAME]
Example:
fleet install machine_A
| Argument | |
|---|---|
NAME |
the machine to install fleet on |
| Option | |
|---|---|
--repo URL |
git URL to clone; defaults to config or this checkout |
--ref |
branch or tag to install (default: main) |
--forward-agent, --no-forward-agent |
authenticate the clone as you, leaving no credential on the device |
fleet update¶
Update fleet on the machines that have it, the way it was installed there.
A machine with fleet from PyPI gets uv tool upgrade (or pipx upgrade), one with fleet's own checkout is updated from git, and your own source install is left as it is. --repo or --ref asks for git everywhere. Updates this machine without ssh, and --all every machine that runs fleet.
A device with no fleet is skipped and named, never given one: most of a fleet is meant to have nothing installed, and fleet install NAME is how you change that on purpose.
fleet update [OPTIONS] [NAME]
Example:
fleet update --all
| Argument | |
|---|---|
NAME |
defaults to this machine |
| Option | |
|---|---|
--all |
every device that already runs fleet |
--repo URL |
git URL to deploy from; defaults to config or this checkout |
--ref |
branch or tag (default: main) |
fleet ps¶
What is running on every GPU, across the fleet, and which GPUs are idle.
fleet ps [OPTIONS] [NAMES]...
Example:
fleet ps --json
| Argument | |
|---|---|
NAMES |
only these machines |
| Option | |
|---|---|
--json |
print JSON instead of a table, for scripts and agents |
--refresh, -r |
force a live probe |
fleet models¶
Every model being served across the fleet: which server, where, and how to reach it.
fleet models [OPTIONS] [NAMES]...
Example:
fleet models --json
| Argument | |
|---|---|
NAMES |
only these machines |
| Option | |
|---|---|
--json |
print JSON instead of a table, for scripts and agents |
--refresh, -r |
force a live probe |
--rescan |
also re-measure the model folders, which machines otherwise cache for 6 hours |
fleet top¶
Live view of the fleet, or of one device. Like htop, for your machines.
Anything unreachable backs off instead of being redialled every couple of seconds. Shared multi-user hosts are probed only when asked for by name (fleet ls NAME).
fleet top [OPTIONS] [NAME]
Example:
fleet top machine_A -i 1
| Argument | |
|---|---|
NAME |
one device, instead of the whole fleet |
| Option | |
|---|---|
--interval, -i |
seconds between refreshes (default: 2.0) |
fleet rm¶
Stop watching a machine: take it out of this machine's list.
Nothing is changed on the machine itself -- fleet put nothing there but the notes fleet edit --path wrote, which stay with it.
fleet rm [OPTIONS] NAME
Example:
fleet rm machine_A
| Argument | |
|---|---|
NAME (required) |
the exact name; a prefix is never enough |
| Option | |
|---|---|
--yes, -y |
do not ask for confirmation |
fleet ssh¶
Open a shell on a device, or run a command: fleet ssh machine_A -- nvidia-smi.
The wrapper resolves the endpoint and connects exactly as you would, so an agent never needs an address, a key or a password -- only the machine's name.
fleet ssh [OPTIONS] NAME [-- COMMAND...]
Example:
fleet ssh machine_A -- nvidia-smi
| Argument | |
|---|---|
NAME (required) |
a machine's name or alias |
fleet setup¶
Teach your coding agents to use fleet.
An agent with a shell gets a skill, which costs nothing until a task actually needs a machine. A desktop client has no shell, so it gets fleet mcp registered as an MCP server instead -- merged into its config beside whatever else is already there.
fleet setup [OPTIONS]
Example:
fleet setup --dry-run
| Option | |
|---|---|
--target |
an agent name, or all | auto (whatever is installed) (default: auto) |
--project |
write into the current directory, not your home |
--dry-run |
show what would change; write nothing |
--uninstall |
remove what setup installed |
--refresh |
rewrite only what fleet already installed, so it matches this fleet; adds nothing new |
fleet uninstall¶
Take fleet off this machine: out of your agents, and with --purge its files.
Nothing on the machines fleet looked at changes. The program itself is removed last, by you: the command to run is printed at the end.
fleet uninstall [OPTIONS]
Example:
fleet uninstall --purge
| Option | |
|---|---|
--purge |
also delete fleet's files here: its list of machines, cache and logs |
--yes, -y |
do not ask; needed without a terminal |
--json |
print JSON instead of a table, for scripts and agents |
fleet paths¶
Show where fleet keeps its state.
fleet paths [OPTIONS]
Example:
fleet paths
fleet doctor¶
Why a machine will not let fleet in, and the one thing to do about it.
fleet connects exactly as you do and manages no access, so the fix is yours to make: usually putting your key on the machine, adding it to a rental provider's account, or a rule in your Tailscale SSH policy. This names the one for each machine. It changes nothing.
fleet doctor [OPTIONS] [NAME]
Example:
fleet doctor gpu-box
| Argument | |
|---|---|
NAME |
one machine; all that are failing if omitted |
| Option | |
|---|---|
--json |
print JSON instead of a table, for scripts and agents |