Skip to content

feat: add docker agent board, a Kanban TUI for orchestrating agents#3451

Merged
dgageot merged 1 commit into
mainfrom
feat/board-kanban-tui
Jul 6, 2026
Merged

feat: add docker agent board, a Kanban TUI for orchestrating agents#3451
dgageot merged 1 commit into
mainfrom
feat/board-kanban-tui

Conversation

@dgageot

@dgageot dgageot commented Jul 3, 2026

Copy link
Copy Markdown
Member

Working on several agent tasks in parallel means juggling terminals, worktrees, and half-remembered session IDs. This adds docker agent board, a full-screen Kanban TUI that turns that workflow into cards on a pipeline: each card launches an agent in a tmux session on an isolated git worktree, and moving a card forward (Dev → Review → Push → Done) delivers the destination column's prompt to its agent. It is a TUI port of the experimental web-based board project, built natively on docker-agent's own primitives (--worktree, --session, --listen).

The engine (pkg/board) keeps one watcher goroutine per card tailing the agent's control-plane event stream over a per-card unix socket, mirroring title and running/waiting/paused/failed status into a JSON store, and relaunching the tmux session (resuming the same conversation and worktree) if the agent dies. Prompt delivery, busy-move rejection, and delete/relaunch races are all serialized through the store and a relaunch lock. Projects and column prompts live in the user's global config file (~/.config/cagent/config.yaml, new board: section) and are editable from the TUI, which follows the main TUI's standards: shared dialog chrome, theme, keymap (remapped quit/suspend bindings are honored), scrollbars, and mouse support. Pressing enter attaches the terminal to a card's agent; ctrl+q detaches back to the board.

The board is single-instance (flock on the state file), sanitizes agent-controlled strings before rendering, runs its tmux sessions on a private validated socket, and requires tmux (it fails with a clear message otherwise; Windows builds compile but the command is effectively unix-only). Docs live in docs/features/board/.

@aheritier aheritier added kind/feat PR adds a new feature (maps to feat:). Use on PRs only. area/cli CLI commands, flags, output formatting area/docs Documentation changes area/tui For features/issues/fixes related to the TUI labels Jul 3, 2026
@dgageot
dgageot force-pushed the feat/board-kanban-tui branch from 3119838 to fdb2835 Compare July 3, 2026 15:25
@rumpl

rumpl commented Jul 3, 2026

Copy link
Copy Markdown
Member

Didn't look at the code, one note: i'm using the tasks toolset a lot, can you make sure that the board can be reused? I would want to have a board for the tasks at some point

@dgageot
dgageot force-pushed the feat/board-kanban-tui branch from fdb2835 to 6938695 Compare July 3, 2026 16:52
Assisted-By: claude-opus-4-5
@dgageot
dgageot force-pushed the feat/board-kanban-tui branch from 6938695 to 9e6f0a7 Compare July 4, 2026 09:03
@dgageot
dgageot marked this pull request as ready for review July 4, 2026 12:09
@dgageot
dgageot requested a review from a team as a code owner July 4, 2026 12:09
@dgageot
dgageot merged commit 7fe042b into main Jul 6, 2026
18 checks passed
@dgageot
dgageot deleted the feat/board-kanban-tui branch July 6, 2026 07:33
pull Bot pushed a commit to TheTechOddBug/cagent that referenced this pull request Jul 7, 2026
Adds the missing `docker agent board` section to the CLI reference.

Source: docker#3451
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/cli CLI commands, flags, output formatting area/docs Documentation changes area/tui For features/issues/fixes related to the TUI kind/feat PR adds a new feature (maps to feat:). Use on PRs only.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants