Skip to content

Configuration

fleet needs no configuration. This page lists what can be changed, and where fleet keeps its files.

Files

OS Configuration State
Linux ~/.config/fleet ($XDG_CONFIG_HOME/fleet) ~/.local/state/fleet ($XDG_STATE_HOME/fleet)
macOS ~/Library/Application Support/fleet the same folder
Windows %LOCALAPPDATA%\fleet the same folder

FLEET_CONFIG_DIR and FLEET_STATE_DIR move them. Both folders are readable by you alone. fleet paths prints where the main files are on this machine.

Configuration folder

File What it is
machines.yaml the machines you added on this machine: names, ssh commands, and the tags and cost you set with --local. Written only here; share it with your dotfiles if you want the same list elsewhere. No keys or passwords are in it.
config.yaml the settings below. Optional; fleet never creates it.
discover-hidden.txt names fleet ls --discover --hide stopped offering, one per line
device-id only on a machine cloned from another's image: the id fleet gave it, so the two are told apart

State folder

File What it is
cache.db measurements. Disposable: delete it, and the next reading rebuilds it.
first-run-done marks that the first run has happened here
update.log, update.ps1, update-run.ps1, update-run.log Windows only: the last fleet update of this machine, which runs after fleet exits

Folders named .NAME.queue beside these files are the write queue; they come and go.

Files from fleet 0.5 — inventory.yaml, access*.yaml, id_ed25519, clock.yaml, center-service.log and others — are not read by 0.6. They are listed, with how to remove them, in Upgrading from 0.5.

Settings

config.yaml in the configuration folder, for example:

telemetry_ttl_s: 30
max_workers: 16
Key Default What it changes
telemetry_ttl_s 60 Seconds a reading counts as fresh. ls and show measure a machine again once its reading is older.
offline_backoff_max_s 1800 The longest wait between attempts on a machine that keeps not answering; the wait doubles per miss up to this.
probe_timeout_s 20 Seconds ls, show and top give a machine to answer.
connect_timeout_s 8 ssh connection timeout for those readings.
max_workers 8 How many machines are measured at once.
shared_min_interval_s 300 The shortest time between two measurements of a shared machine, so a multi-user cluster is never hammered.
snapshot_retention 120 Readings kept per machine in cache.db.
repo (empty) The git URL fleet install and fleet update deploy from; otherwise the repository fleet was installed from, or GitHub.

An unreadable config.yaml is ignored rather than stopping fleet, and a number setting that is not a number falls back to its default, with one warning. Keys fleet does not know — such as 0.5's sync_ttl_s and access_retry_s — are ignored.

Environment variables

Variable Effect
FLEET_CONFIG_DIR, FLEET_STATE_DIR where fleet keeps its files
FLEET_NO_FIRST_RUN when set, the first ls, show, top, add or setup on a machine does not record the machine or teach its agents
HERMES_HOME where fleet setup puts the Hermes skill (default ~/.hermes, or %LOCALAPPDATA%\hermes on Windows)
TERM=dumb fleet top prints one frame instead of a live view (as it does without a terminal)

Read by the installers:

Variable Installer Effect
FLEET_NO_SETUP install.ps1 install the command only (install.sh takes --no-setup)
FLEET_FORCE_CORE both install with uv even though another copy of fleet is here; same as --force-core
FLEET_SOURCE both install this package spec — a path, a wheel, a git URL — instead of agents-fleet from PyPI

FLEET_JOIN (and install.sh --join) is from fleet 0.5: the installers now say it is no longer needed, and ignore it.

On the machines you watch

fleet keeps nothing about access there. The probe reads each machine's own machine.yaml — /etc/fleet/machine.yaml, then ~/.config/fleet/machine.yaml (Windows: %ProgramData%\fleet\machine.yaml, then %LOCALAPPDATA%\fleet\machine.yaml) — and on Linux and macOS keeps a cache in ~/.cache/fleet. The full list is in What fleet changes; the file's format is in What is on each machine.