Find the message you see. Most problems are a machine that will not let fleet in, and
for those there is one command: fleet doctor NAME says why, and what to do.
Open a new terminal. If it persists: uv tool update-shell, then a new terminal.
No coding agent found
fleet is installed, but no agent it knows is on this machine yet. Install the agent, then fleet setup; or name one with fleet setup --target claude.
core: … keeping it
Not an error: fleet was already installed, and the installer kept that copy. --force-core replaces it.
note: --join is no longer needed (or FLEET_JOIN)
A line from fleet 0.5's fleet invite. There is nothing to join any more; the installer ignored it and installed fleet as usual. See Upgrading from 0.5.
The machine is up and does not accept you. Nothing was recorded. The lines under it are the fix — usually your key on the machine, your provider's key page, or a Tailscale SSH rule. Then run the same fleet add again. Reaching your machines has each case.
NAME did not answer — timeout, unreachable, refused or closed
Nothing was recorded. Check the address, that the machine is on, and that sshd runs there; on a VPN or tailnet, that both ends are connected.
NAME did not answer — host_key_mismatch
Its host key changed: a rental's port given to someone else, or a reinstall — or someone in the middle. If you know why, ssh-keygen -R HOST and add it again.
NAME does not accept your key yet. Put your key on it with …?
fleet offers ssh-copy-id, which asks for the machine's password once and puts your key there. Say yes, or no and fix it another way.
you have no ssh key yet
Make one: ssh-keygen -t ed25519, then fleet doctor NAME for the line that puts it on the machine.
it keeps its name; to rename it: fleet edit NAME --name …
That machine was already known; the new address was added to it under its old name.
named after …; to rename it: …
fleet picks a name from the address you gave, or else from the machine's own hostname. If it is not the one you want, fleet edit NAME --name NEW keeps everything else.
… shares a machine-id with … most likely cloned from the same image
Two machines made from one image. They are kept apart; nothing to do.
… is not a usable name
Names and aliases are letters, digits, ., _ and -, starting with a letter or digit.
fleet ls --discover lists nothing
It reads Host entries in ~/.ssh/config and tailscale status here. With neither, add machines by their ssh command.
a tailnet machine from --discover refuses
It was tried as your local user name. Add it with the right one: fleet add "ssh ubuntu@NAME".
The machine is up and stopped letting fleet in — a key removed, a Tailscale policy changed, a rental recreated without your key. fleet doctor NAME.
NAME refused us a moment ago from fleet ssh
The last reading was refused. fleet doctor NAME says why; once fixed, fleet ls NAME -r tries again.
Tailscale SSH wants a browser sign-in
The policy rule for that machine is check. An agent can never sign in; make the rule accept.
timeout with an old "last seen"
A machine that keeps not answering is asked less often. Ask it directly: fleet ls NAME -r.
A machine I added on another computer is missing here
Each machine running fleet keeps its own list. Add it here too, or share machines.yaml (fleet paths) with your dotfiles.
No machine named 'X' from fleet ls X
The name matches nothing; fleet ls lists them all.
No machine named exactly …
fleet rm never acts on a prefix. Give the full name, an alias or the id.
NAME has no endpoint recorded
fleet knows the machine but not how to reach it. fleet edit NAME --ssh "ssh user@host".
NAME is this machine from fleet ssh
Run the command here, without fleet ssh.
claude reads an older description of fleet (or several agents)
fleet setup --refresh.
fleet ls --tag … finds nothing, and says machines were skipped
Those machines have never been measured, so they have no measured facts yet. fleet ls -r measures them; a shared or mobile machine is measured only when named: fleet ls NAME.
… is not valid YAML, or device X in the inventory is malformed: …
machines.yaml was edited by hand and no longer parses. The message names the file; fix it or restore a copy. fleet changes nothing until it parses.
config.yaml: KEY: … is not a number; using N
A setting has the wrong type. fleet uses the default and says so once.
My machines are gone after upgrading from 0.5
0.6 starts a new list and does not read 0.5's inventory.yaml. Add them again; see Upgrading from 0.5.
not found, or the operation failed (a machine refused or did not answer, an update failed)
2
refused or not possible here: bad input, a machine that refused a moment ago, no terminal to confirm
fleet ssh NAME -- COMMAND returns the remote command's own exit code instead, and 255
when ssh itself could not connect. Under --json, stdout carries only the JSON document;
a failure is either {"ok": false, "error": "…"} there or, with stdout empty, explained
on stderr.
fleet COMMAND --help explains every command, fleet doctor looks at every machine
that is failing, and fleet paths shows where fleet keeps its files. Please
open an issue with what you ran and what it
said.