Skip to content

Quest: Observe and interact with multiple coding-agent sessions #785

Description

@taras

Story

As a person coordinating coding agents, I want XMD surfaces for viewing, interacting with, and arranging their sessions, so I can move between roles and issues without depending on each provider's native interface for every task.

XMD provides three distinct experiences:

  • xmd tail and <Session.Tail> read an existing conversation from provider files.
  • A linear XMD REPL interacts with sessions through ACP.
  • <Grid> and <Pane> arrange Tail, REPL, ordinary output, or native terminal content through a selected run provider.

Tmux presents Grid panes today. A later XMD-owned provider can present the same document. Provider files remain observation only, ACP remains the reliable interaction boundary, and native terminal input remains owned by its pane.

Example

<Grid columns={2}>
  <Pane title="Architect · #785">
    <Agent name="codex">
      <Session.Tail nativeSession="existing-session-id" />
    </Agent>
  </Pane>
  <Pane title="Implementor · #785">
    <Agent name="claude">
      <Session.Launch session="implementor">...</Session.Launch>
    </Agent>
  </Pane>
</Grid>

Role and current issue are ordinary document props used in pane titles. They do not become provider, pane, or Agent identity.

Current gap

The unmerged #717 stack supplies provider-neutral Grid/Pane structure and a tmux run provider. It does not supply a session viewer, a linear XMD REPL, configurable conversation presentation, or a first-party multiplexer.

#774 established the safe black-box boundary. Provider session files can supply passive conversation observation. Generic tmux input cannot close the race between the last provider-file sample and terminal delivery, so it cannot authorize messaging.

Product contract

Tail and REPL share normalized conversation entries and Markdown presentation, not transport or lifecycle:

  • Tail rebuilds a disposable read-only view from an exact provider file on each invocation.
  • REPL evaluates one XMD block at a time in a long-lived scope, receives live updates from its own ACP work, and journals only committed execution and final normalized Prompt snapshots.
  • Grid presents each content source without merging stores, opening competing connections, or acquiring session control.

Presentation is live and ephemeral. Streaming snapshots replace stable per-entry regions and coalesce when rendering is slower than ingestion. Repository-local Markdown components configure each message kind. Terminal frames and viewer state are not journaled.

Tmux remains a run-only Grid provider and is never used as a workflow mechanism. Bombshell TTY supplies structured rendering and input parsing. It is not a PTY manager or terminal emulator; native TUI support in the XMD-owned provider remains gated on separate evidence.

Dependency-ordered child map

  1. Test black-box REPL messaging through xmd run terminal panes #774 — Test black-box REPL messaging through xmd run terminal panes

  2. Make executable document grids use <Grid> and <Pane> #781 — Make executable document grids use <Grid> and <Pane>

  3. Test incremental Agent session rendering with Markdown components #799 — Test incremental Agent session rendering with Markdown components

  4. Render Agent session entries with Markdown components #800 — Render Agent session entries with Markdown components

  5. View coding-agent sessions with <Session.Tail> and xmd tail #782 — View coding-agent sessions with <Session.Tail> and xmd tail

  6. Run and reopen a linear multi-Agent XMD REPL #783 — Run and reopen a linear multi-Agent XMD REPL

  7. Test native TUI hosting with an XMD-owned PTY and terminal emulator #801 — Test native TUI hosting with an XMD-owned PTY and terminal emulator

  8. Present Agent session grids without an external multiplexer #784 — Present Agent session grids without an external multiplexer

#774 ───────────────────────────────► #782 ───┐
                                               │
#799 ─► #800 ────────────────┬──────► #782 ───┤
                              └──────► #783 ───┼──► #784
                                               │
#781 ──────────────────────────────────────────┤
#801 ──────────────────────────────────────────┘

#782's observer work and #783's linear REPL work can proceed independently once their shared #800 boundary is available. #801 can proceed at the same time.

Completion

  • Test incremental Agent session rendering with Markdown components #799 establishes that the Markdown/Bombshell presentation model works from source and a compiled executable.
  • Standard normalized entries render through default and repository-local Markdown components without exposing raw provider records.
  • xmd tail and <Session.Tail> open exact Claude and Codex sessions, reconstruct complete history, and follow live files without gaining interaction capability.
  • The linear REPL evaluates one block at a time, retains committed work and scope-bound resources, interacts through ACP, and never automatically resends an interrupted block.
  • Grid and Pane remain the authored vocabulary, and tmux remains run-only rather than Workflow behavior.
  • Test native TUI hosting with an XMD-owned PTY and terminal emulator #801 establishes an owned PTY and emulator boundary before the XMD provider hosts native TUIs or shells.
  • One Grid document runs under tmux or the XMD provider without changing its syntax, identities, permissions and ownership, or teardown guarantees.
  • No surface claims that ACP messages synchronize into a provider-native UI.
  • Provider files, terminal pixels, and tmux convergence never authorize prompts, cancellation, permissions, ownership, or completion.

Relationships

Out of scope

  • Adding Grid, Tail, terminal observation, or the interactive REPL to Workflow.
  • Synchronizing an independently open native Agent UI with ACP.
  • Provider-file writes, hooks, plugins, or provider-specific input automation.
  • Durable terminal frames or viewer UI state.

Activity

  1. added
    enhancementNew feature or request
    questCoordinating story with dependency-ordered sub-issues
    on Sep 8, 2026
  2. taras commented on Sep 17, 2026

    @taras
    OwnerAuthor

    Superseded by #827, which now coordinates the journal-driven XMD REPL from the Product Owner’s new terminal-interface mockup. #782 remains open as the independent, read-only xmd tail product rather than a REPL prerequisite.

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

    enhancementNew feature or requestquestCoordinating story with dependency-ordered sub-issues

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions