Mission Control

Mission Control is a desktop application inside Agency — not the Agency system, and not the whole web UI.

Agency (the product) is an agent operating system. After /login/, operators land on the Agency desktop (schema type: desktop): wallpaper, icons, floating windows, drawer (Menu / Windows / Inbox). That desktop hosts several apps (Help, Camera, Documents, Displays, System, …).

Mission Control is the dispatch app on that desktop. It is the operator surface for Agents, Missions, and Executions, plus the REST/Channels APIs that start, watch, continue, and resume those executions.

What it includes

Windows (default desktop / Menu → Dispatch):

  • Agents (agents) — catalog explorer: properties, tools, related executions

  • Missions (missions) — catalog explorer: prompt, loop, dispatch

  • Executions (executions) — history list

  • Execution windows (execution.<uuid>) — live thread: conversation, collapsible tool steps, continue-turn, HITL overlay

APIs (same app, usable without the windows):

  • GET/POST /api/agent/, GET/PATCH /api/agent/<id>/

  • GET/POST /api/mission/, GET/PATCH /api/mission/<id>/

  • POST /api/mission/<id>/dispatch/ — start an execution

  • GET /api/execution/, GET /api/execution/<id>/

  • continue-turn on the execution resource (Mission Control chat)

  • PATCH /api/interruption/<id>/ — HITL answer (also via /channel/)

Realtime: REST hydrate + Channels projection on /channel/ (catalog observe, thread messages, interruptions). Details: Connections.

What it is not

Do not call the following “Mission Control”:

  • The Agency desktop / SPA shell at /

  • Help, Camera, Documents, Search, Displays, System, Chat, user profile, schema inspector

  • Django admin (/admin/, /system/, /custom/)

  • Veronica (secretary agent) — she may open Mission Control windows, but she is not Mission Control

Those are other desktop apps or host surfaces. Schema types and Vue components: Frontend components (agency-ui). Default layout: agency/data/default_desktop.json.

Operator flows

  • Execute — from Missions, POST .../dispatch/ → open execution.<id> → timeline on /channel/ filtered by thread_id.

  • Loop missions — same Execution/Thread across iterations; supervisor LoopDecision between turns. Technical: Execution Runtime.

  • Continue — operator chat in the execution window (not a new dispatch).

  • HITL — interruption frames → overlay → answer on /channel/ or REST. Tutorial: Human-in-the-Loop.

Bootstrap / observe from Python: Python: serving the SPA. Desktop window addresses: UI.