Skip to content

Project kanban board: what each agent is doing, grouped by state #161

Open

Description

@AThraen

This was generated by AI during triage.

Summary

A kanban board per project that shows what each agent in it is doing. A project is a session group, or every session sharing a repo, worktrees included. Columns are states, cards are agents, and each card says what that agent is working on now. The question it answers is "where does each part of this project stand?", which a terminal grid can't answer once a project has four or more agents.

How this differs from the related issues

Issue What it gives What's missing for this
#57 Workspace Overview one card per session, tiled, with last output lines flat across all sessions, no grouping by state, no "current task"
#154 activity indicator + timeline a Working state per session, plus history of when it's the data source this board needs, not a board
#132 / #125 MCP fleet + chat agents can read the fleet and talk to each other a human-facing view of the same thing
#138 Team Bus agents push their own title/colour/status a natural source for the card's "doing now" line

This view could be built on #57's card component, or replace #57 outright (#57 would become this board with grouping turned off). That's for the maintainer to decide.

Proposed behaviour

v1: columns are agent states, cards are agents

Column Driven by
Working #154's Working state
Needs approval IsWaitingForApproval (exists)
Needs input IsWaitingForInput (exists)
Idle none of the above for N minutes
Asleep dormant sessions, collapsed by default

Each card shows:

  • accent stripe, name, branch and dirty marker (all existing);
  • doing now: one line, taking the best source available:
    1. a status the agent pushed itself (Team Bus Team Bus: let an agent add/edit its own session's run commands, not just title/color/status #138 / OSC 9001 title);
    2. for Claude sessions, the in_progress item of the agent's current todo list, read from the session transcript under ~/.claude/projects/ (ClaudeSessionService already locates it to find the --resume id);
    3. otherwise the last non-blank output line;
  • time in the current column ("waiting 12 min"). Combined with the Needs columns, this is the thing that makes the board useful: it shows who has been blocked on you the longest.

Interactions:

  • clicking a card focuses that session;
  • right-clicking a card opens the same menu as the sidebar row;
  • no dragging between columns: the column is observed state, not something the user sets.

Scope selector: a group (reusing SessionGroup), a repo (RepoRoot, which merges worktrees of one repo), or All.

v2: columns are tasks

Gather every agent's todo list into To do / In progress / Done, with each card tagged by the agent that owns it. This is the board people usually mean by "kanban", but it depends entirely on reading todo lists (Claude only, unless other harnesses publish theirs via #132), so it comes second.

Constraints

Open decisions

  1. Separate window or a grid-replacing view? This also decides Add Workspace Overview view: status cards with activity + output preview #57's fate.
  2. Is the transcript todo list an acceptable dependency, or should v1 rely only on what agents push themselves (Team Bus: let an agent add/edit its own session's run commands, not just title/color/status #138) plus output?
  3. Which default scope: the active session's group, or its repo?

Depends on #154 (Working state). Related: #57, #132, #125, #138, #151.

Activity

  1. AThraen commented on Nov 10, 2026

    @AThraen
    ContributorAuthor

    This was generated by AI during triage.

    Update: the data exists now (#190), and Herdr's board answers open decision 1

    It no longer depends on #154. #190 shipped OSC 7501, so each session already exposes:

    • AgentState (Idle / Working / Blocked / Done / Error);
    • IsWorking and WorkProgress;
    • a status Message.

    Sessions that report nothing fall back to IsWaitingForInput / IsWaitingForApproval.

    Prior art: Herdr's board layout

    Herdr's board layout is Apache-2.0 and about 100 lines of JS. It is driven by the same OSC 7501 status:

    • Columns: Needs you (blocked), Working, Done and Idle, each with a count badge and its own scrolling.
    • Cards: a stripe in the state colour, the program, the terminal and tab name, the space, and "Nm observed". That time is tracked locally from when the board first saw the state.
    • Click focuses the agent, and the area below switches to its live terminals. There is no dragging and no task view.

    Its layout is a third option we didn't list: the board docked above the live terminal grid. In CSM that is a fixed-height WPF row above TerminalGrid. The board never overlaps a WebView2, so there is no airspace problem and nothing needs collapsing. You keep the overview and the workspace on screen at the same time. I'd recommend this over a separate window or a view that replaces the grid. It also resolves #57: the board becomes the overview.

    Revised v1

    Column Source
    Needs you Blocked (orange stripe for permission), Error (red), heuristic waiting
    Working IsWorking, with a WorkProgress % on the card
    Done Done, until acknowledged
    Idle everything else
    Asleep collapsed
    • Card "doing now" line: the 7501 Message comes first. The todo list read from the transcript (source 2 above) is now only for sessions that don't report.
    • Time in state: stamped on the VM when AgentState changes. Unlike Herdr's, it can survive a restart if persisted.
    • Click: goes through the existing FocusSession, so the grid below shows that session. Ctrl+Tab can follow board order.
    • Updates: cards update in place from PropertyChanged, and the board is never rebuilt. See the UI-thread rules from perf: coalesce per-session PTY output dispatcher posts to prevent UI starvation #70 and fix(perf): take three blocking paths off the UI thread and the thread pool #160.
    • Collapsing: the board can be collapsed, or hidden automatically in Single layout. A fixed band (Herdr uses 355 px) squeezes the terminals on small screens.

    Gaps

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 request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions