Feature Reference
Maturity:
Depth:
Keyboard Shortcuts
Global / Browse tab
| Key | Action | Context |
|---|---|---|
q | Quit the application | Global |
b | Switch to the Browse tab (keeps the current graph/list choice) | Global |
s | Switch to the Session tab | Global |
r | Switch to the Running tab | Global |
v | Toggle the Browse area between graph and list view | Browse |
d | Browse as list view | Global |
g | Browse as graph view | Global |
space | Mark / unmark the focused node | Browse |
c | Open the dimension-comparison matrix over the marked nodes | Browse |
Enter | Open the focused node’s detail hub | Browse (focused node) |
A | Open the Operations dialog for the focused node | Browse (focused node) |
f | Toggle the focused module’s “deferred” status | Browse |
Ctrl+R | Retry applying the initializer agent output | Running tab |
DAG graph view
Shown in the footer when the graph has focus:
| Key | Action |
|---|---|
↑ / ↓ | Move between graph layers |
← / → | Move between columns within a layer |
Enter | Open the focused node |
h | Set the focused node as HEAD |
o | Open the operation that produced the focused node |
p | View the focused node’s full proposal |
x | Start a compare against the focused node |
Escape | Cancel an in-progress compare selection |
Node detail hub
Opened with Enter on a node:
| Key | Action |
|---|---|
a | Open the Operations dialog |
c | Compare from this node |
v | Fullscreen proposal view |
e | Export the node’s proposal |
o | Open the operation that produced this node |
Tab | Focus the minimap |
Escape | Close |
Operations dialog and wizard
The Operations dialog (A / a) lists the operations; selecting one opens a configuration wizard. The one exception is Discuss, the last row: it skips the wizard and opens the agent-launch dialog instead (see How to Discuss Proposals with an Agent).
| Key | Action | Context |
|---|---|---|
a | Choose Operations | Operations dialog |
c | Choose Compare | Operations dialog |
H | Show operation help | Operations dialog / wizard |
w | Cycle the preview-pane width | Wizard |
l | Toggle line numbers in the preview | Wizard |
Escape | Close the dialog | Operations dialog / wizard |
Operation detail and logs
| Key | Action | Context |
|---|---|---|
Escape / q | Close | Operation detail screen |
r | Refresh | Log detail |
t | Show the log tail | Log detail |
f | Show the full log | Log detail |
Module preview
Shown by the review-before-apply gate (buttons; Escape cancels):
| Action | Effect |
|---|---|
| Accept | Apply the proposed modules to the graph |
| Re-run | Supply a steering note and run the decomposition again |
| Cancel | Discard the proposal; graph untouched |
Every key above can be rebound — press
?in the TUI for the in-place editor, or use Settings → Shortcuts.
Node box anatomy
In graph view each node is a five-row box:
┌──────────────────────────┐ ← top border (green = HEAD, orange = anchor)
│ n003 ✓ │ ← node id + selection checkbox (✓ marked / □ not)
│ explore │ ← operation badge (color-coded, see below)
│ Variant: cache-first … │ ← one-line description
└──────────────────────────┘ ← bottom border
Operation color legend
The operation badge is color-coded by the operation that produced the node:
| Color | Operation |
|---|---|
| Cyan | explore |
| Yellow | compare |
| Magenta | synthesize |
| Green | module decompose |
| Orange | module merge |
| Purple | module sync |
| Dim grey | bootstrap (seed / initial node) |
Module status colors
Module nodes also carry a fluid status badge (a render of progress, separate from the operation that created them):
| Color | Status |
|---|---|
| Dim grey | unstarted |
| Cyan | in design |
| Yellow | in implementation |
| Green | implemented |
| Orange | merged |
| Red (italic) | deferred (an overlay marker, set with f) |
Operations and agents
Design operations are launched from the Operations dialog (A); each dispatches one or more background agents:
| Operation | What it does | Agent |
|---|---|---|
| Explore | Create new design variants from a base node | explorer |
| Compare | Run an agent comparison across the marked nodes | comparator |
| Synthesize | Merge multiple nodes into a synthesis | synthesizer |
| Module Decompose | Fork module subgraph roots from a proposal | module decomposer |
| Module Merge | Merge a module up into an ancestor | module merger |
| Module Sync | Pull a linked module’s as-implemented design back in | module syncer |
The Operations dialog also lists Discuss, which is not a design operation. It launches one interactive, advisory-only code agent that runs the /aitask-brainstorm-discuss skill over the cursor node or the marked set. You talk to that agent directly in tmux (a new window by default, or a split pane in an existing window) or in a terminal. It is not a background crew agent, so it never appears on the Running tab. It creates no node, so it has no badge color, and it changes no session file. Its default agent and model come from the discuss operation of ait codeagent, not from a brainstorm-<type> key, and you can override them in the launch dialog.
Session-lifecycle operations (Session tab) run no agents: pause, resume, finalize (export HEAD proposal to aiplans/), archive, delete.
Agent model defaults
Each design operation dispatches a code agent of a fixed agent type, and every agent type has a configurable default model and launch mode. There are seven agent types: the six design-operation agents in the table above (explorer, comparator, synthesizer, module decomposer, module merger, module syncer) plus the initializer — the bootstrap agent that reformats an imported markdown draft (ait brainstorm init --proposal-file) into the first graph node.
Where the defaults live. Per-type defaults are stored in aitasks/metadata/codeagent_config.json under defaults, keyed brainstorm-<type>:
"defaults": {
"brainstorm-explorer": "<agent>/<model>",
"brainstorm-synthesizer": "<agent>/<model>",
"brainstorm-module_decomposer": "<agent>/<model>"
}
Each brainstorm-<type> value is an <agent>/<model> string — the code-agent binary and the model it runs. An optional paired brainstorm-<type>-launch-mode key sets that type’s default launch mode.
Layered resolution. Defaults resolve in three layers, each overriding the one before it:
- Built-in resource defaults (per-type
max_parallelandlaunch_mode). - Project config —
codeagent_config.json(shared, committed). - Per-user override —
codeagent_config.local.json(gitignored).
The agent and model are bound when a session is initialized (when the brainstorm crew registers its agent types). Changing a default therefore takes effect on the next session you start — not one that is already running.
Launch mode. Every type has a default launch mode (interactive). Override it globally with the brainstorm-<type>-launch-mode config key, or per operation from the launch-mode selector in the operation wizard when you run that operation.
Changing a default. The simplest way to edit these is the Settings TUI: open the Agent Defaults tab, where every brainstorm agent type appears with an agent/model picker and a paired launch-mode picker. Each row shows the project value with your user override below it, so you can change a model for the whole project or just for yourself.
Module decompose modes
The Module Decompose wizard offers three modes:
| Mode | Names | Agent? |
|---|---|---|
| Manual | You type the module names | Yes (assigns content to your names) |
| Agent-proposed (infer) | Left blank; inferred from the decomposition plan | Yes (proposes the module set) |
| From section markers | Derived from <!-- section: --> markers | No (deterministic) |
Review before apply is on by default; it routes the result through the module preview (Accept / Re-run / Cancel) before committing. A Re-run steering note overrides the original decomposition plan on conflict, and later revisions override earlier ones. Decompose forks rather than prunes — the umbrella proposal stays whole, and Module Merge is the convergent path back.
Operation provenance
| Surface | Where |
|---|---|
| “Generated by” block (operation, group, agents, timestamp) | Browse detail pane for the focused node |
Operation detail screen (o) | Overview tab + per-agent Input / Output / Log tabs |
Operation data is resolved on demand from on-disk files via a lightweight pointer (an OpDataRef: kind, target, optional section), so the session state never duplicates agent inputs, outputs, or logs.
Session files and layout
A brainstorm session lives in its own AgentCrew worktree at .aitask-crews/crew-brainstorm-<task_num>/, created by ait crew init and populated by the brainstorm engine:
| Path | Purpose |
|---|---|
br_session.yaml | Session metadata and status (init, active, completed, archived) |
br_graph_state.yaml | The design DAG: nodes, edges, HEAD, and the module-decomposition maps |
br_groups.yaml | Operation groups — which agents ran, keyed by group, for provenance |
br_nodes/ | Per-node metadata |
br_proposals/ | Per-node proposal markdown |
A completed (finalize) session exports its HEAD proposal into aiplans/; archive and delete retire the worktree.
Next: Settings — configure agent defaults and rebind any of the keys above.