Skip to content

Agent Workspaces

kwt is useful when each branch deserves its own terminal workspace and agents should not fight over one checkout.

Layouts

Layouts define tmux panes. Keep them explicit and boring:

[agents]
codex = "codex"
claude = "claude"
roborev = "roborev tui"

[[layouts.presets]]
name = "review"
arrange = "even-horizontal"
panes = ["agent:codex", "agent:roborev", ""]

The empty string creates a plain shell. Agent commands can include flags, but approval and sandbox bypass flags should be deliberate local choices.

Layouts are opt-in: without --layout, --select-layout, or a layouts.default, a workspace is a blank single-pane session. The reserved name none selects the blank session explicitly.

Working loop

kwt add -b fix/flaky-status
kwt exec fix/flaky-status -- go test ./internal/status
kwt open fix/flaky-status

For long-running agent work, keep one branch per worktree, one tmux workspace per branch, and let kwt status show which branches are dirty, ahead, behind, or quiet.

Cross-project steering

The dashboard is project-aware. Use P to set the active project perspective before creating a worktree. Press n for a new branch or b to search local and remote branches that are not already checked out. A selected remote branch is checked out without repository hooks, configured filters, setup commands, or workspace commands. It still participates in ordinary status and fleet observation. Review it before pressing enter; that explicit attach acknowledges the checkout and creates its session. Use lowercase p for a temporary project-name filter and / for row search.