Skip to content

Fleet pane: inspect and message native agents across machines #1

Description

@lukemaj

Outcome

One T3 Code pane to see and control the agent fleet across connected machines. Discover externally launched agents, inspect their work live, and message any agent in its existing native session across Codex, Claude Code, OpenCode, and Grok CLI. This includes the brain/planner, dispatcher, and implementation agents.

This advances the approved fork Objective: make T3 a working control surface across machines and harnesses, starting with one externally launched dispatcher and expanding the proven integration.

Problem

Agents work across separate harnesses and machines. The user needs one place to understand what each agent is doing and send it an idea, question, or correction while it works, without moving orchestration into the UI or starting a replacement conversation.

Solution and boundaries

Extend T3's existing agent pane, transcript view, and composer. Each connected environment supplies its available native sessions; the pane combines them with clear machine, provider, session identity, and status. Select an agent to inspect its work and message it.

T3 integrates with native harness session discovery, event/transcript streams, and messaging interfaces. Model Router continues managing routing and delegation. No Router chat API, inbox, transcript parser, or replacement dashboard. If a native launch mode must change to permit attachment, prove that need before proposing the narrow change in its owning repository.

Use existing T3 connections and authentication for remote environments. Offline machines remain distinguishable from idle agents. Do not introduce a new fleet broker or persistent service without evidence that existing facilities cannot meet the requirement.

Acceptance criteria

  • A single pane lists agents across connected machines and all four supported harnesses, including sessions launched outside T3.
  • Each agent is distinguishable by machine, harness, and stable native session identity; role and model are shown when available without guessing.
  • Selecting an agent shows its available history and live messages, tool activity, and results as the harness exposes them.
  • The user can message every supported agent role in its existing native session and see the response.
  • Delivery reflects the harness's real semantics: active-turn steering versus a queued follow-up is visible; failures are explicit and never shown as delivered.
  • Viewing or disconnecting T3 does not stop the agent, change its permissions, duplicate its session, or take ownership of its process lifecycle.
  • Reconnection preserves session identity and history without duplicate agents or duplicate message delivery. Uncertain delivery is surfaced rather than blindly retried.
  • Local and remote agents use the same interaction; unreachable environments and ended sessions have truthful status.

First milestone: one dispatcher

Use one Codex dispatcher launched outside T3 on one machine. Prove the complete interaction before adding more providers or fleet discovery machinery:

  1. Start a bounded task through the actual dispatcher launch path and record its native session identity.
  2. Find it in the T3 pane and observe live work in the transcript.
  3. Send a uniquely identifiable question or instruction from T3 while the dispatcher is active.
  4. Observe receipt and a response in that same native session, with the original task continuing correctly.
  5. Disconnect and reconnect the T3 view; verify the same session, no repeated message, and uninterrupted agent ownership.

A historical transcript import, copied session, resumed fork, or a second process with the same saved thread identifier does not prove live attachment. A mocked adapter alone does not satisfy this milestone.

Implementation and testing decisions

Reuse the existing provider adapters, agent panel model, transcript rendering, and composer wherever they fit. Keep differences between native harnesses at the adapter boundary. Preserve provider-specific capability reporting rather than pretending every transport behaves identically.

The highest proof seam is the real T3 client through its server to an externally launched native agent. Add focused regression tests for identity, event continuity, message delivery, and disconnect behavior. Start the first milestone in an isolated T3 home. Do not mutate the user's live T3 database.

After the dispatcher proof, apply the same acceptance contract to the brain/planner and workers on all four harnesses, then verify one pane against at least two connected machines. Assess shared web/desktop behavior and mobile compatibility explicitly; one client's success is not evidence for all clients.

Non-goals

Changing model selection, routing policy, agent orchestration, or the brain/planner workflow; replacing native harnesses; building a new dashboard; remote provisioning; fleet billing; automatic deployment; or implementing unrelated controls such as mass termination.

Blockers and unknowns

No product decision blocks the first experiment. Native attachment and messaging to the actual live externally launched instance remain unproven per harness. Test the existing launch path first. If attachment fails, retain the exact failing behavior and assess the smallest native launch/transport adjustment instead of adding a Router messaging service.

Remote reachability and a second connected test machine are required for fleet acceptance, not for the first local dispatcher proof. A provider that cannot yet accept messages remains incomplete against full scope.

Required proof

Record the tested T3 commit, harness version and launch mode, machine/environment identity, native session identity, and sanitized evidence of live activity, message receipt, response, continued task execution, and reconnect behavior. Repeat across four harnesses and at least two machines before claiming fleet completion. Do not publish credentials, private transcripts, or connection tokens.

Simplification decision

The wanted result is visibility and direct communication with existing agents. Prior source inspection found reusable T3 panel/transcript/provider components and native session facilities. Cut the proposed Router inbox, Router transcript parsing, replacement UI, and speculative permanent services. The smallest surviving test is one existing dispatcher, one pane, one live message round trip. Its current constraint is proving attachment to the real running native backend, not constructing a session-list UI.

Approved fork direction

Vision: One surface to understand and direct the entire agent fleet, across every machine and harness.

Mission: Extend T3 Code with a fleet management pane that lets users discover agents, inspect their work live, and message them directly through their native harnesses. Keep orchestration and routing in their existing tools.

Objective: Make T3 Code a working control surface for agents across connected machines, covering Codex, Claude Code, OpenCode, and Grok CLI. Users can see agent status, inspect live sessions, and message any agent, including the brain/planner, dispatcher, and implementation agents.

Start by proving that one externally launched dispatcher appears in T3, streams its work, and receives and answers a message in the same native session without disrupting its ongoing task. Expand that proven integration across agents, harnesses, and machines.

Delivery

Implementation belongs in toolboxmd/t3code. This issue is the canonical saved spec and implementation tracker. Begin with the dispatcher milestone; expand only after its native integration proof. Upstream contribution is a later step subject to the upstream contribution process. This spec does not claim implementation, live verification, deployment, or upstream acceptance.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions