Fleet Control — How to Watch Agents (Штаб агентов)
When VibeOS asks specialists for help (delegate_task) or runs durable workers on a Kanban board, Fleet Control (Russian UI: Штаб агентов) is the dispatch board: you see who is working, what they are doing, and you can pause, stop, or approve without opening a terminal.
This page is the “for beginners” tour. For the mechanics of spawning children, see Delegation. For restart-safe multi-profile work, see Kanban. Full team walkthrough: How to run an agent team.
Install pack (≤15 min): vibeos pack apply multiagent-memory --apply then vibeos multiagent-memory doctor.
Open the overlay
Desktop app: open Agents / Fleet Control / Штаб агентов from the session chrome (same place the “N agents running” indicator points).
You should see:
- A short role legend (portraits).
- Waiting for your OK — dangerous-command approvals + board «Needs you» (CAPTCHA /
assignee=human). - Kanban workers — OS processes claimed on the active board (survive app restart).
- In-session agents — live
delegate_taskchildren for the current process (die if the app exits). - Today at HQ — merged timeline of board events, recent delegations, and cron last-runs (also
vibeos kanban timeline).
If everything is quiet, the HQ portrait and “Fleet is idle” means nothing is delegated right now — the timeline may still show earlier activity.
Roles (who is who)
Fleet guesses a role from the agent’s goal text and shows a portrait:
| Role | Typical work |
|---|---|
| Orchestrator | Plan / fan-out / replan |
| Researcher | Search, sources, briefs |
| Builder | Code, patches, implement |
| Critic | Review, find holes |
| Creative | Design / imagery / copy |
| Operator | Ops, CAPTCHA / human handoffs, Fleet Waiting for your OK inbox |
| Archivist | Memory / notes / durable facts — see Persistent Memory |
| Monitor | Watches, heartbeats, alerts (Monitor mode) |
Portraits ship with the desktop app under agent-roster/. Planning masters live in the repo at docs/plans/assets/agent-roster/.
Team tree
When an Orchestrator has children, Fleet shows a compact Team tree (depth + role + goal). Default config keeps nesting flat (delegation.max_spawn_depth: 1). Raise depth only when you intentionally want Orchestrator → leaf.
Live spectator stream
Expand an agent card to see recent tool / progress / thinking lines — enough for a non-technical glance (“searching pricing pages”) without diving into logs. Open live view when the child has its own session window.
Optional spectator cost strip (duration / tools / tokens / USD) sits under the career strip on Live cards when display.fleet.spectator_cost is on. It uses metrics already streamed for the spectator — no extra telemetry and no mid-chat prompt changes. Default off so HQ stays glanceable.
Dispatcher controls
| Control | What it does |
|---|---|
| Pause new spawns | Blocks new delegate_task children. Running agents keep going. |
| Resume spawns | Allows new children again. |
| Stop (on a card) | Asks that subagent to interrupt at the next safe boundary. |
| Approve once / Deny | Same gateway approval wait as the chat strip — use when a dangerous command is blocked. |
Pause is global for the process; Stop is per child. Neither replaces killing a Kanban worker PID — use Kanban CLI / dashboard for durable board ops.
Agent career (missions & trust)
Each Fleet card can show a quiet career strip: how often that agent finished well, how often it failed, and the last mission title — so you can glance at trust without opening logs.
Example: 3 ✓ · 1 ✗ · last: Ship login.
Open the Career sheet: click the strip (or the Career control on the card). You get wins/fails, optional XP/level (when enabled), last mission, and a short recent-missions list.
Verify memory (in the sheet) offers local and Verify (research) buttons — both review-only, nothing written to Core. Research merges offline claims-eval on top of local heuristics. Enable with memory.career_critique.enabled (default off). Live web retrieve (bounded Research Pro quick fan-out) is opt-in via memory.career_critique.allow_network (default false, config-only — not in Settings).
XP and the chat brain: when XP is on, level/skill hints apply on the next session only. Career never rewrites the model’s system prompt mid-chat (prompt cache stays valid).
Career toggles (config.yaml)
| Key | Default | Meaning |
|---|---|---|
display.fleet.career_stats | true | Show the ✓/✗ / last-mission strip + Career sheet |
display.fleet.career_xp | false | Show XP/level; allow next-session bias (dogfood) |
display.fleet.pixel_roster | false | Prefer pixel sprites on Fleet cards (painted PNGs if off or missing art) |
display.fleet.spectator_cost | false | Show per-agent duration / tools / tokens / USD on Live cards (Settings → Fleet HQ) |
memory.career_critique.enabled | false | Enable Verify memory in the Career sheet |
memory.career_critique.require_approval | true | Quarantine before Core promote |
memory.career_critique.allow_network | false | Opt-in live Research Pro retrieve on Verify (research); config-only |
Defaults: stats on; XP, critique, pixel roster, and spectator cost off. Secrets stay in .env; these are behavioral settings only.
HQ lenses, report & research mission
Desktop Fleet HQ can focus the roster without changing the agent mid-chat:
| Lens | Shows |
|---|---|
| All | Inbox + live subagents + Kanban workers |
| Needs you | Approvals, board handoffs, Work waiting (when unified) |
| Live | In-session subagents / promote hints |
| Durable | Kanban workers on the active board |
HQ Report (collapsible) summarizes career wins/fails/blocked + board health for a window (display.fleet.report_days, default 7). Copy exports Markdown for ops notes — observation only.
Research mission appears when the active board has a research swarm (gather → critique → synthesize). It shows stage status, ledger current_step, and recent Board KB finds. No new model tools; dispatcher/profiles still do the work.
Fleet view toggles (config.yaml)
| Key | Default | Meaning |
|---|---|---|
display.fleet.density | comfortable | comfortable | compact spacing in HQ |
display.fleet.attention_unified | true | Merge command approvals + Kanban human + Work waiting into one inbox |
display.fleet.report_days | 7 | HQ Report career window (clamped 1–30) |
Long jobs: promote to Kanban
Background delegate_task is process-local. If a card has been running a long time, Fleet shows a promote hint (default after delegation.promote_hint_after_seconds: 600) on the Live card and as a banner — use Promote to Kanban in the desktop overlay, or the CLI below.
Optional durability: set delegation.auto_promote_after_seconds to a positive number (default 0 = off) to automatically create a Kanban task with the goal + context package when a background async delegation exceeds that age. Desktop promote and CLI both call the same handoff path (kanban.from_delegation / vibeos kanban from-delegation) and do not mute or rewrite the chat.
Promote manually from the terminal:
vibeos kanban from-delegation --title "Continue research" --goal "…" \
--context "constraints…" --summary "partial findings…" \
[--ledger-file progress-ledger.md]
Then keep a Magentic-style notebook with the progress-ledger skill:
vibeos kanban ledger <task_id> --set progress-ledger.md
See also: Kanban vs delegate_task.
Config knobs (optional)
In config.yaml under delegation::
| Key | Default | Meaning |
|---|---|---|
max_spawn_depth | 1 | Nesting depth (1 = flat) |
promote_hint_after_seconds | 600 | Fleet banner threshold (0 disables) |
context_package | enabled | Structured brief for children (not the full parent transcript) |
Secrets stay in .env; these are behavioral settings in config.yaml.
Today at HQ (timeline)
Not a LangSmith/trace explorer — short sentences with roster avatars:
vibeos kanban timeline --hours 24
# or JSON / RPC: kanban.timeline
Sources: Kanban task_events, in-process async delegations, cron last_run_at. Heartbeats and free-form comments are filtered out.
Offline smoke (developers)
From a repo checkout:
bash scripts/smoke-fleet-control.sh
bash scripts/smoke-multiagent-memory-golden.sh # G1–G12 + Memory OS
That checks roster assets, progress-ledger, from-delegation, and golden-task contracts without opening Electron.
Related
- How to run an agent team — swarm, Monitor, restart
- Persistent Memory — Core/User/Archival/Board KB (Archivist)
- Delegation —
delegate_taskAPI and roles - Kanban — durable board
- Kanban tutorial — walkthroughs
- Capability packs —
multiagent-memory - Offline smokes:
scripts/smoke-fleet-control.sh(G1–G4),scripts/smoke-memory-os.sh(G5–G8),scripts/smoke-multiagent-memory-golden.sh(G1–G12) - Plan / ADR:
docs/plans/2026-07-17-multiagent-memory-masterplan.md - HQ vNext ADR:
docs/plans/adr-agent-hq-vnext.md