Skip to content

Tiled Dispatch #248

Closed
Closed

Description

@Juliusolsson05

Tiled Dispatch

Summary

Add a Tiled Dispatch command that lets the user enter a tile count, up to 10, and opens a multi-lane Dispatch layout where several live agents can be viewed and controlled at the same time.

Problem

Dispatch Mode is useful for managing many agents, but it currently behaves like a single command-center surface. That means the user can see the list of agents, pick one, and work with that agent, but they cannot easily keep multiple active agents visible side by side from the Dispatch workflow.

When coordinating several Claude/Codex agents, the user often wants both:

  • A full Dispatch index with all worktrees, section titles, agent types, and full agent titles.
  • Multiple live agent views on screen at once, each with a small local selector for switching that lane to another agent.

The existing single Dispatch surface makes that workflow too serial.

Proposed Behavior

Add a command:

Tiled Dispatch

When run, the command prompts the user for a number:

How many dispatch tiles? 1-10

After the user enters N, Agent Code enters a tiled Dispatch layout:

┌──────────────────────┬──────────────────────────────┬────────────┬──────────────────────────────┬────────────┬──────────────────────────────┐
│ DISPATCH INDEX       │ AGENT VIEW 1                 │ MINI LIST  │ AGENT VIEW 2                 │ MINI LIST  │ AGENT VIEW 3                 │
│ full list            │ selected agent               │ compact    │ selected agent               │ compact    │ selected agent               │
│                      │                              │            │                              │            │                              │
│ Worktree: app        │ ┌──────────────────────────┐ │ ● Agent A  │ ┌──────────────────────────┐ │ ● Agent B  │ ┌──────────────────────────┐ │
│  Claude  Agent A  ◀  │ │ Claude/Codex transcript  │ │ ● Agent B◀ │ │ Claude/Codex transcript  │ │ ● Agent C◀ │ │ Claude/Codex transcript  │ │
│  Codex   Agent B     │ │ composer / terminal      │ │ ● Agent C  │ │ composer / terminal      │ │ ● Agent D  │ │ composer / terminal      │ │
│  Claude  Agent C     │ │ live output              │ │ ● Agent D  │ │ live output              │ │ ● Agent E  │ │ live output              │ │
│                      │ │                          │ │            │ │                          │ │            │ │                          │ │
│ Worktree: issue-211  │ │ selected from index      │ │ no groups  │ │ selected from mini list  │ │ no groups  │ │ selected from mini list  │ │
│  Codex   Agent D     │ └──────────────────────────┘ │ no cwd     │ └──────────────────────────┘ │ no cwd     │ └──────────────────────────┘ │
│  Claude  Agent E     │                              │ no type    │                              │ no type    │                              │
└──────────────────────┴──────────────────────────────┴────────────┴──────────────────────────────┴────────────┴──────────────────────────────┘

For N tiled lanes, the conceptual layout is:

[full dispatch index] [agent view 1] [mini list 2] [agent view 2] ... [mini list N] [agent view N]

The first lane is special:

  • It keeps the full Dispatch list UI.
  • It shows full section titles.
  • It shows worktree/project grouping.
  • It shows agent type/provider labels.
  • It acts as the global index for the whole tiled Dispatch layout.

Every later lane uses a compact local selector:

  • It shows a minimal agent list.
  • It omits repeated section titles.
  • It omits repeated worktree labels.
  • It omits repeated agent type/provider labels.
  • It is only there to switch which agent is shown in that lane.

Each lane still has a real live agent view beside its list. This is not just multiple copies of the Dispatch list; the point is to make multiple agents visible and usable at the same time.

Scroll and Selection Sync

When the user scrolls a compact mini list, the full Dispatch index on the far left should follow that scroll position enough to keep the same region of the agent list/context visible. The full index remains the source of truth for rich context: section titles, worktrees, provider labels, and full agent titles.

Selection highlighting is separate from scroll sync:

  • The full index still highlights the agent selected in lane 1.
  • A compact mini list highlights the agent selected for its own lane.
  • Scrolling mini list 3 should move the full index to the same approximate list region, but it should not make the full index pretend that lane 3's agent is selected.
  • This lets the user use the full left index as context while still seeing exactly which agent belongs to lane 1.

In other words:

Lane 3 mini list scrolls
        │
        ▼
Full left index follows scroll/context
        │
        └── but selected highlight remains Agent 1 / lane 1

UX Notes

  • The default tile count should be conservative, probably 2 or the previous value if one exists.
  • The max should be clamped to 10.
  • The layout needs horizontal overflow or responsive compression for high tile counts.
  • The first/full Dispatch index should stay readable even when there are many lanes.
  • Compact mini lists should be dense and stable, optimized for quick lane switching.
  • The selected agent per lane should be independent.
  • Switching one lane should not steal focus or selection from the other lanes.
  • Scrolling a compact mini list should sync the full index's scroll context, while preserving the full index's own selected-agent highlight.

Open Questions

  • Should tiled Dispatch persist across app reloads, or should it be a transient Dispatch view mode?
  • Should each lane remember its selected agent by session id across normal Dispatch exits/reentries?
  • Should lane widths be resizable?
  • Should the full index lane be pinned/sticky while the right-side lanes horizontally scroll?
  • Should tile count changes preserve current lane selections where possible?

Acceptance Criteria

  • A Tiled Dispatch command exists.
  • Running it prompts for a tile count from 1 to 10.
  • Entering a valid count opens a tiled Dispatch layout.
  • The leftmost lane shows the full Dispatch index with section titles, worktree grouping, provider/agent type labels, and full titles.
  • Each additional lane shows a compact mini list plus the actual selected agent view to its right.
  • Each lane can select a different live agent.
  • Scrolling a compact mini list scroll-syncs the full left Dispatch index to the same general list region.
  • The full left Dispatch index continues to highlight lane 1's selected agent, even while its scroll position follows another lane's mini list.
  • The same agent process/session is reused; switching tiled views must not respawn agents.
  • Exiting tiled Dispatch returns the user to the normal workspace without killing agents.
  • Invalid counts are rejected or clamped safely.

Activity

  1. added 6 commits that reference this issue on Jun 5, 2026
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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions