> ## Documentation Index
> Fetch the complete documentation index at: https://www.rumus.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Fleet Mode

> One sentence, safe ops across a group of saved hosts. Tell the AI agent what to do, review the command and its risk, then run it everywhere — with canary rollout and per-host results.

**Fleet Mode** runs an operations task across many [saved SSH hosts](/docs/remote/hosts) at once. Instead of opening a terminal per server or scripting a loop, you pick the target hosts, tell the AI agent in one sentence what to do, and review a single approval card before anything runs. The agent adapts the command to each host's operating system, and you get per-host output in one place.

> **One sentence, safe ops across a group of hosts.**

Fleet Mode is built around a simple promise: **every batch is reviewed before it runs.** Nothing executes on your servers until you've seen the exact command and its risk level and clicked **Allow**.

## How it works

<Steps>
  <Step title="Open a Fleet tab">
    Click the **+** in the tab bar and choose **Fleet Mode**. Fleet opens as its own full-page tab — not a terminal.
  </Step>

  <Step title="Pick target hosts">
    Click **Select targets** and choose from your encrypted [host vault](/docs/account/vault). Hosts are organized by your [host groups](/docs/remote/groups-known-hosts); selecting a group selects every host under it. Search by name or IP, or use **Select all** / **Clear**.
  </Step>

  <Step title="Tell the agent what to do">
    Type a plain-language instruction — for example, *"List disk usage across all hosts and highlight anything above 80%."* The agent reads your selected targets, detects each host's OS, and adapts the command if needed.
  </Step>

  <Step title="Review and run — safely">
    The agent proposes a batch as an **approval card** showing the exact command (one per OS), a risk level, and how many hosts it will touch. Choose **Allow**, **Canary**, or **Reject**.
  </Step>

  <Step title="Watch it run">
    A status HUD tracks every host live — connecting, running, succeeded, failed. Click any host to read its full output, copy it, or feed it back to the agent.
  </Step>
</Steps>

## Picking targets

Fleet targets come from the same encrypted vault as your SSH hosts — Fleet doesn't store separate credentials. The target picker shows your hosts grouped exactly as in [host management](/docs/remote/groups-known-hosts):

* **Groups** — select a whole group to select every host inside it.
* **Ungrouped** — hosts that aren't in any group live here.
* **Search** — filter the list by host name or IP.
* **Select all** / **Clear** — bulk toggles.

You must select **at least one** host before you can send a message.

<Warning>
  **Targets lock once the conversation begins.** After you send your first message, the target list for that chat is fixed — this keeps the agent reasoning about a stable set of hosts. To run against a different set, click the **+** button to start a new Fleet chat.
</Warning>

## Telling the agent what to do

You write in natural language, not shell. The agent has two Fleet tools:

| Tool                    | What it does                                                   |            Approval            |
| ----------------------- | -------------------------------------------------------------- | :----------------------------: |
| **Check Fleet targets** | Reads the hosts you selected, including each one's detected OS | Read-only — runs automatically |
| **Run on Fleet hosts**  | Proposes a command (one per OS) to run across the fleet        |        Always asks first       |

Because hosts in a fleet may run different operating systems, the agent groups them into **OS buckets** (Linux, macOS, Windows) and writes one command per bucket. A single approval card can therefore contain a `df -h` for your Linux hosts and the equivalent for macOS — adapted automatically.

Some prompts to start from:

* *"List disk usage across all hosts and highlight anything above 80%."*
* *"Show the current load average and uptime for every host."*
* *"List the top 5 CPU-consuming processes on each host."*

## The approval card

No command touches your servers until you approve it. Each batch the agent proposes renders inline as a **Fleet batch approval** card:

* **The command(s)** — grouped by OS, e.g. *Linux hosts (8)* with its command.
* **Risk level** — a badge: **Low risk**, **Medium risk**, or **High risk**.
* **Scope** — *"Will run on N hosts."*
* **A warning banner** on high-risk batches: *"This action may affect multiple production hosts. Review carefully before approving."*

You have three choices:

| Action     | What happens                                                                       |
| ---------- | ---------------------------------------------------------------------------------- |
| **Allow**  | Runs on every selected host.                                                       |
| **Canary** | Runs on a small subset first, then asks before rolling out to the rest.            |
| **Reject** | Cancels the batch — nothing runs. The card shows *"Rejected — batch did not run."* |

### Risk levels

Rumus scores every proposed command against a set of patterns and labels it automatically:

* **High risk** — destructive or system-altering commands: `rm -rf`, `mkfs`, `dd if=`, `shutdown`, `reboot`, `systemctl stop` / `disable` / `mask`, `drop table` / `drop database`, `chmod -R 777`, writes to `/dev/sd*`, and fork bombs.
* **Medium risk** — commands containing `sudo`, `install`, `upgrade`, or `delete`.
* **Low risk** — everything else (read-only inspection, listing, status checks).

<Note>
  Risk scoring is pattern-based, not context-aware — it flags `rm -rf` even when the target is a harmless temp directory. Treat the badge as a prompt to look closely, and use **Canary** when you want a real-world check before committing to the whole fleet.
</Note>

## Canary rollout

Canary runs the batch on a few hosts first so you can confirm it behaves before it hits everything. Rumus suggests Canary automatically for any **high-risk** batch, and for any **medium-risk** batch that targets five or more hosts.

1. On the approval card, use the stepper to set how many hosts go first, then click **Canary** (the button reads **Run on N first**).
2. The canary hosts run while the rest wait.
3. **If the canary succeeds**, you're prompted: *"Canary succeeded (N/total). Continue on the remaining N hosts?"* — click **Continue rollout** to finish, or abort to stop with partial success.
4. **If the canary fails**, rollout stops automatically: *"Canary failed (N hosts). Rollout stopped."* Nothing runs on the remaining hosts.

The default canary size is configurable — see [Settings](#settings) below.

## Watching execution

While a batch runs, a status HUD sits above the chat input with a live summary: **"3 done · 1 failed · 2 running / 6 total."** Each host moves through these states:

| State           | Meaning                             |
| --------------- | ----------------------------------- |
| **Queued**      | Waiting to start.                   |
| **Connecting…** | Opening the SSH connection.         |
| **Probing…**    | Detecting the host's OS.            |
| **Connected**   | SSH ready, command not yet run.     |
| **Running**     | Command executing.                  |
| **Succeeded**   | Finished with exit code 0.          |
| **Failed**      | Finished with a non-zero exit code. |
| **Aborted**     | Stopped by you mid-run.             |

From the HUD you can:

* **Abort** — stop the running batch immediately.
* **Retry N** — re-run only the hosts that failed.
* **Log** — open the per-host output viewer.

Hosts in a batch run in parallel, so a large fleet finishes in roughly the time the slowest host takes.

## Reading per-host output

Click any host (in the HUD or the approval card) to open its **Execution log**. Each log shows that host's `stdout` and `stderr` (errors in red), with these actions:

* **Add to Agent** — select any text in the log and send it back to the agent, with the host name attached, to ask a follow-up.
* **Download** — save the output as a `.log` or `.txt` file.
* **Copy** — copy the full output to the clipboard.

## Settings

Fleet preferences live under **Settings → Fleet**:

| Setting                   | What it controls                                                                    |   Default   |
| ------------------------- | ----------------------------------------------------------------------------------- | :---------: |
| **Canary execution mode** | Whether the canary batch is a **fixed count** of hosts or a **ratio** (percentage). | Fixed count |
| **Canary host count**     | How many hosts run first, when mode is *fixed count*.                               |      1      |
| **Canary ratio (%)**      | What percentage of hosts run first, when mode is *ratio*.                           |     20%     |
| **Auto probe OS**         | Detect each host's OS before running, so the agent can adapt the command.           |      On     |
| **Connect timeout (s)**   | Mark a host as failed if its SSH handshake takes longer. Range 5–300.               |      20     |

## Fleet vs. multi-terminal broadcast

Both run something across several hosts, but they're for different jobs:

* **[Multi-terminal broadcast](/docs/terminal/canvas)** types the same keystrokes into several live terminals at once. You drive it directly, in real time, with full TTY control.
* **Fleet Mode** is AI-assisted and batch-oriented: you describe the goal in words, the agent writes (and OS-adapts) the command, and you approve it once with a risk review and canary rollout.

Reach for broadcast when you want hands-on, interactive control; reach for Fleet when you want a reviewed, one-shot operation across a saved group of hosts.

## History

Fleet conversations are saved like any other chat. Reopen one from your history and it loads with the same targets, messages, and approval cards — a record of exactly what was approved and how each host responded.

## Troubleshooting

<AccordionGroup>
  <Accordion title="A host shows “Host key not trusted”">
    Fleet uses your saved known-hosts entries. If a host key isn't trusted yet, the host fails with *"Host key not trusted — try again to approve, or check the host's known-hosts entry."* Connect to that host once in a normal [SSH terminal](/docs/remote/hosts) to accept its key, then retry the batch. See [Known hosts](/docs/remote/groups-known-hosts).
  </Accordion>

  <Accordion title="A host is stuck on “Connecting…” then fails">
    The SSH handshake didn't finish within the connect timeout. Confirm the host is reachable and that it works from a normal terminal, then raise **Settings → Fleet → Connect timeout** for slow or distant hosts.
  </Accordion>

  <Accordion title="The agent split my fleet into several commands">
    That's expected when your hosts run different operating systems — the agent writes one command per OS bucket so each host gets a command that actually works there. Review each bucket on the approval card.
  </Accordion>

  <Accordion title="Some hosts failed but others succeeded">
    Open each failed host's **Execution log** to see its `stderr`, fix the cause, and use **Retry** in the HUD to re-run only the failed hosts.
  </Accordion>

  <Accordion title="I can't change the target hosts">
    Targets lock once a conversation starts. Click the **+** button to begin a new Fleet chat with a different set of hosts.
  </Accordion>
</AccordionGroup>

<Note>
  Fleet question we didn't cover? Ask in the [Rumus community](https://www.rumus.ai/community).
</Note>

## Next steps

<CardGroup cols={2}>
  <Card title="SSH host management" icon="server" href="/docs/remote/hosts">
    Save the hosts Fleet will operate on.
  </Card>

  <Card title="Host groups & known hosts" icon="layer-group" href="/docs/remote/groups-known-hosts">
    Organize hosts into groups you can select as a fleet in one click.
  </Card>

  <Card title="Agentic execution" icon="robot" href="/docs/ai/agentic">
    How the AI agent proposes and runs commands.
  </Card>

  <Card title="Multi-terminal broadcast" icon="grip" href="/docs/terminal/canvas">
    Interactive, real-time fan-out across live terminals.
  </Card>
</CardGroup>
