The approval that finds you
A blocked agent surfaces as buttons in Telegram. Tap once, and the pane keeps moving.
Torad Fleet / the control room
Torad Fleet is an OpenClaw plugin that finds every Claude Code, Codex, and Gemini session on your machine, ranks them by urgency, and takes your answer from your phone.
Free to run · your machine is the server · every action audited
left · the fleet, one session pulled forwardright · the same session in Telegram? · the approval, one tap
The whole control room is free. Paid extras unlock with a key your machine verifies offline. Nothing meters you, nothing phones home to us.
What it is
Fleet discovers your agent sessions over tmux, reads each transcript as it is written, and types back into the pane when you answer. Nothing new to babysit.
It compounds. One agent gets phone approvals. Three get ranked by urgency. A dozen stay legible.
A · the fleet in useB · the flow: a pane, b transcript, c plugin, d helper
At your desk. Every session is a live tile, and the one that needs you is already pulled to the front.
Away from it. Every session is a topic: turns stream in, replies land in the pane, and a blocked prompt becomes buttons you tap.
The web room binds to loopback. Telegram is the away-from-desk surface, by design.
Agent-to-agent
Fleet ships an MCP server with two verbs: read what a sibling session said, send it the next move. You stop being the messenger between your own agents.
› seeStatus { sessionName: "repo-web" }
‹ "Migration finished. Typecheck is clean. Blocked on the API contract."
› sendMessage { sessionName: "repo-web", message: "Contract merged on main. Pull and wire the client." }
‹ ok · relayed into the pane
A B · two agent sessionsQ · the host queue, on disk
seeStatus returns a session's latest assistant message from its own transcript. sendMessage relays a prompt into its pane. Read, then act. Nothing else.
A relayed message rides the same on-disk queue as every other operation, committed before it is typed. A restart does not lose it.
It is an MCP server you add per agent. Give it to the session doing the orchestrating, not to everything with a keyboard.
Demo
Six shipped features, one labeled preview.
Recording in production.
A blocked agent surfaces as buttons in Telegram. Tap once, and the pane keeps moving.
Tiles carry provider, health, a live mini-terminal, and velocity. The session that needs you becomes the hero.
Claude Code, Codex, Hermes, and Gemini share one wall. The matrix below states exactly how deep each one goes.
The room runs on your machine with your own bot token. Telegram is the one network boundary, detailed below.
The scanned bundle cannot spawn a process. One readable helper owns tmux, and they meet in a single audited table.
Mirroring keeps streaming when the helper is down. The doctor finds orphaned sessions and cleans them.
Why Fleet
Fleet is an OpenClaw plugin. Three things follow from that one fact.
Fleet activates when your gateway starts. For an OpenClaw user it is not a second thing to adopt.
openclaw workspaces health, verifies the result.OpenClaw hard-blocks any plugin whose source can spawn a process. Fleet splits brain from hands: the scanned bundle is exec-free, and a zero-dependency helper owns tmux. The two meet in one shared table on disk.
The whole product is free: fleet, operator, search, doctor, audit, batch, and both surfaces. Paid features are additive, and the free path degrades gracefully instead of breaking.
Supported agents
Fleet controls tmux sessions and on-disk transcripts, not model APIs. Support varies by agent.
| Capability | Claude Code | Codex | Hermes | Gemini |
|---|---|---|---|---|
| Detect and bind | yes | yes | yes | yes |
| Drive into the pane | yes | yes | yes | yes |
| Live transcript mirror | yes | yes | yes | pane-tail |
| Tappable answer buttons | yes | yes | yes | pane-tail |
| Exact token / cost | exact | best-effort | best-effort | no |
| Spawn a new agent | yes | yes | yes | no |
On your billing: Fleet attaches to sessions you already started. No second API key, no token surcharge from us; each session bills on its own auth, as if you typed the prompt yourself.
Features
Every session as a tile: provider, health, a live mini-terminal, velocity.
The most urgent session, pulled to a hero slot with controls at hand.
Find any session across the fleet without cycling panes.
Health states, orphans, and the same diagnosis the CLI prints.
Append-only and read-only: who, verb, target, outcome.
Running, waiting, dead, and bound counts, plus a 0-to-100 health dial. There is no hard session cap.
Multi-select acts run as one ordered, audited batch with per-session outcomes. Database verbs are transactional; tmux side-effects are not, so it reports "4 of 5 done".
Tags group the fleet. Favourites and layout persist server-side, across devices.
Every web button, Telegram tap, or agent tool passes one seam that logs who, verb, target, and outcome. A respawned session is a new binding, so a stale command cannot fire into it. Spawning is allowlisted and name-validated, with no shell.
Push alerts the moment a session starts waiting or dies. The free path simply no-ops.
Trade-offs
The limits, in one place.
Narrower than ductor, which reaches more chat networks, cron, and webhooks. Less private than raw ssh plus tmux, which is end-to-end yours.
Fleet earns its place when "attach and read" stops scaling: approvals queue up, sessions die quietly, and you stop noticing which pane asked first.
With Telegram on, assistant-turn text is stored by Telegram, and bot chats are not end-to-end encrypted. It is your bot, your account, your group, your allowlist, and the only added egress is the Telegram Bot API. There is no Torad backend in the path.
Turn Telegram off and the web room adds no egress at all.
Out of the box, defaults favor speed: inbound messages paste without confirmation, and agent write tools are on.
Set requireApproval to hold every inbound message behind an approve button, and set agentTools.allowWrites to false to make agent access read-only. Flip both anywhere you would not hand over your terminal.
Get access
The control room works today. We onboard a few operators at a time, so every install gets real attention.
The recording lands here: phone approvals, urgency ranking, and one agent handing work to another.
See it runTell us what you run. Members get the room, plus early access to paid features as they land.
FAQ
Yes. The first win is not fleet scale, it is the blocked approval that becomes a phone button. Ranking, batches, and the relay start paying once you run three or more.
Reach and a record. Attention finds you instead of the reverse: tappable approvals, push when a session waits or dies, exact per-session cost, and an append-only ledger of who did what. It does not replace ssh.
Three differences: it installs into the OpenClaw you already run, passes the install scanner clean with no dangerous flag, and charges per feature with an offline key rather than per backend.
Treat it as terminal authority, because it is. The scanned bundle cannot spawn processes, only allowlisted Telegram ids may drive, every mutation passes the audited seam, and two config flips put an approval gate in front of every inbound message.
The instrument is free. Paid features are additive and unlock with a key your machine verifies offline, so there is no metered backend to phone. Preview terms arrive with membership.
Not yet. Fleet is in limited preview. Request access above.
Torad Fleet · an OpenClaw plugin · part of Torad Labs