You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Quest: Observe and interact with multiple coding-agent sessions #785
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.
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.
#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.
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.
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.
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 tailand<Session.Tail>read an existing conversation from provider files.<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
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:
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
Test black-box REPL messaging through
xmd runterminal panes #774 — Test black-box REPL messaging throughxmd runterminal panesMake executable document grids use
<Grid>and<Pane>#781 — Make executable document grids use<Grid>and<Pane><Grid>and<Pane>(#781) #797 inside open delivery PR ♻️ Extract terminal providers into workspace packages (#717) #771; issue remains open until the stack delivers.Test incremental Agent session rendering with Markdown components #799 — Test incremental Agent session rendering with Markdown components
deno compile.Render Agent session entries with Markdown components #800 — Render Agent session entries with Markdown components
View coding-agent sessions with
<Session.Tail>andxmd tail#782 — View coding-agent sessions with<Session.Tail>andxmd tailRun and reopen a linear multi-Agent XMD REPL #783 — Run and reopen a linear multi-Agent XMD REPL
<Session.Tail>andxmd tail#782.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
Present Agent session grids without an external multiplexer #784 — Present Agent session grids without an external multiplexer
<Grid>and<Pane>#781, View coding-agent sessions with<Session.Tail>andxmd tail#782, Run and reopen a linear multi-Agent XMD REPL #783, and the accepted Test native TUI hosting with an XMD-owned PTY and terminal emulator #801 result.#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
xmd tailand<Session.Tail>open exact Claude and Codex sessions, reconstruct complete history, and follow live files without gaining interaction capability.Relationships
xmd runterminal panes #774 and draft PR 🔒 Terminal REPL POC (#774) — VIEW_ONLY evidence #779 remain evidence rather than production code.Out of scope