> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nodalmerge.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Control Tower UI reference

> Every user-facing action in the NodalMerge Studio VS Code extension, organized by panel.

# Control Tower UI reference

Every user-facing action in the NodalMerge Studio VS Code extension, organized by
panel — the practical "what can I click" companion to [How Studio works](/studio/concepts/overview)
and to [Reference → API surface](/studio/reference/api-reference)'s backend catalog.

## Command palette

| Command                              | What it opens                                                                                                     |
| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------- |
| `NodalMerge: Open Studio`            | The Studio shell — tabs for Goal Workspace, Activity Center, Model & Agent Studio, Decision Convergence, Pathways |
| `NodalMerge: Open Review`            | Decision Convergence, scoped to a specific merge proposal                                                         |
| `NodalMerge: Open Decision Conflict` | Decision Convergence in conflict-resolution mode                                                                  |
| `NodalMerge: Restart Studio Host`    | Restarts the embedded .NET host process                                                                           |
| `NodalMerge: Show Output`            | Extension output channel (host logs)                                                                              |

## Goal Workspace

The primary surface: create goals, watch the Decision Tree, inspect any node in the
Decision Lens.

### Topbar

* **Active Exploration** — pick which session's decision tree to view
* **Exploration Strategy** — `Multi-Agent Fanout` (or another topology template) for
  a normal run, or one of four experiment strategies: `Multi-Model Comparison`,
  `Architecture Fork`, `Library Comparison`, `Product Strategy Fork`
* **Goal** — the goal text
* **▶ Run** — launches the goal under the selected strategy, review policy, and target
* **⚙ Settings** — toggles the Exploration Settings panel below

### Review / Target row (always visible under the topbar)

* **Review: Human Required / Agent Approval / Hybrid (5 min)** — sets this goal's
  review policy
* **Target: Candidate Branch / Direct** — only shown when promotion branches are
  enabled session-wide; overrides the session default per goal

### Exploration Settings panel (⚙)

* Auto-select agent profiles by capability (checkbox)
* Max concurrent workers (number)
* Scheduler poll interval, ms (number)
* Require build before proposal / Require tests before proposal (checkboxes —
  server-side policy gate, not a manual trigger)

### Fork config panel (appears for any of the 4 experiment strategies)

Per fork: a **Profile** dropdown and an optional **Constraint** text field (e.g.
"use gRPC instead of REST" for an Architecture Fork). **+ Add Fork** adds another
entry. `Multi-Model Comparison` picks 2 orchestrator profiles automatically and
ignores the constraint field; the other three require every fork to have a
constraint (the backend rejects the request otherwise).

### Decision Tree (left column)

* Click a node to select it (loads its timeline + Decision Lens)
* Right-click → **Fork Hypothesis**, **Re-explore**, **Fork from latest candidate**,
  **Fork from Known Good**
* A parent with 2+ forks shows an **N forks** badge + **Compare Results** link
* A counterfactual node shows a **Counterfactual** badge + **Compare with Original**
  link

### Reasoning & Execution Timeline (middle column)

Click any artifact or event to load it into the Decision Lens.

### Decision Lens (right column) — two tabs

**Metadata tab:**

* **Fork Hypothesis** / **Re-explore** / **Fork from latest candidate** / **Fork
  from Known Good** — same actions as the tree's context menu. Fork from Known Good
  lists the node's branch's marked checkpoints, then a goal and profile, then forks
  a new work unit seeded from that checkpoint's content.
* **↺ Run with different model** (completed/merged nodes) — creates a
  counterfactual: re-runs this node's latest proposal under a different profile
* **⏸ Pause & Redirect** (running nodes) — pauses the agent, prompts for a
  constraint, forks a sibling that resumes with it
* **↳ Fork from here** (running nodes) — forks a sibling from this node's current
  state with a new goal + optional constraint

**Context tab:**

* Loads the goal, plan, assumptions, constraints, evidence, execution results,
  allowed tools, and model for this node — the structured decision audit, never raw
  prompt text
* **📋 Copy as Markdown** — copies the above to clipboard
* Constraints proposed by domain observers appear in the Artifacts chain here,
  identifiable by their title prefix (e.g., `[SecurityAgent] Missing rate-limit on
  /api/auth`). See [Guides → Domain observers](/studio/guides/domain-observers).

### Compare Results view (experiments)

* Click a fork card to select it
* **Pick Winner** — approves the selected fork's latest proposal and rejects every
  other fork's latest proposal
* **Reset** — clears the selection
* **📋 View proposals** — opens the fork's proposals

### Compare with Original view (counterfactuals)

Side-by-side original vs. counterfactual: model/provider, status, confidence, files
touched, diff summary for each, plus a "which was better" line when set.

## Activity Center

Secondary surface for direct work-unit/agent lifecycle management without going
through the Goal Workspace's Decision Tree.

* **Session override** — filter this panel to one session
* **+ New Goal** — create a work unit via sequential prompts: goal → owner → review
  policy → (if promotion branches are on) target (Candidate / Direct)
* Active Goals: **Spawn** (start an agent) · **View Conflict →** (when Reviewing)
* Running Agents: **+ Start Agent** · **Pause** · **Resume** · **↺ Resume** (for
  `Interrupted` agents after a host restart) · **Stop**. Agents spawned by a
  connected headless peer appear in this list alongside interactively spawned
  agents and can be paused, resumed, or stopped from here — see
  [Guides → Headless peer](/studio/guides/headless-peer).
* Pending Decisions: **Review Decision →**
* Blocked Explorations (dead-letter queue): **Retry** (when attempts remain)

## Model & Agent Studio

Configuration surface — profiles, templates, and session-wide defaults.

### Profiles tab

Table of agent profiles with **Edit** / **Delete** per row, **+ Add Profile**. The
form: ID, label, domain, LLM provider (VS Code LM / OpenAI-compatible / Anthropic),
model (with **↑ Refresh** to fetch live model list), base URL + API key (hidden for
VS Code LM), system prompt hint. **Save Profiles** persists everything.

### Exploration Strategies tab

Topology templates (orchestrator + worker assignments): **Set Default**, **Edit**,
**Delete**, **+ Add Exploration Strategy**. **Save Strategies** persists.

### Quick Explore tab

One-off run: strategy, goal, "run automated review before human gate" checkbox,
**▶ Quick Explore**.

### Pipeline Profiles tab

Stage-specific agent behavior (Orchestrate/Plan/Execute/Review/Merge): allowed
tools, file-scope patterns, max iterations, system prompt. **Edit** / **+ Add
Pipeline Profile**.

### Session Defaults tab

* **Default Review Policy** dropdown
* **Use candidate branch** checkbox (session-wide promotion branch toggle)
* **↑ Promote to Main** — applies `candidate` → `main`; enabled only when the
  toggle above is on
* **Save Session Defaults**

<Note>
  Domain observer enable/disable is config-file only — there is no toggle in this
  panel. Set `Workspace:EnabledDomainAgents` in `appsettings.json` and restart the
  host, or override per-goal at agent spawn time. See
  [Guides → Domain observers](/studio/guides/domain-observers).
</Note>

## Decision Convergence

The merge-review gate. Two modes depending on the proposal/work-unit state.

### Proposal review mode

* Status badge, source/target branch, confidence, goal, summary, rationale
* Code Changes: **Inline** / **Split** diff toggle, per-file expand, **Open Diff in
  Editor**
* Evidence: build/test results, **download full output** when truncated
* Converged Decision section (if synthesized from multiple candidates): constituent
  proposal cards
* **Validate Evidence** · **Accept Decision** · **Reject Decision** · **Apply
  Decision** · **Fork Hypothesis** · **Restore workspace** (read-only pre-change
  files)

### Conflict resolution mode

Shows the conflict report; resolution itself happens by editing the conflicting
branches outside the panel, then re-running the merger.

## Pathways / Trajectory Replay

DAG visualization and historical scrubbing.

* **Replay Mode**: Linear / Branch Explorer / Counterfactual
* DAG canvas: click/hover a node for details
* Scrubber: slide through the branch's timeline (position shown as `N / Total`)
* Playback bar: **▶ Live** (jump to latest) · **⎇ Branch from here** (new work unit
  seeded from the scrubbed branch's current content) · **📌 Mark Known Good** (label
  * save checkpoint) · **↩ Restore Known Good** (pick a marked checkpoint for this
    branch and restore the branch's files to that point in place)

## Summary

| Panel                | Core job                                                                          |
| -------------------- | --------------------------------------------------------------------------------- |
| Goal Workspace       | Create goals, explore the Decision Tree, run experiments/steering/counterfactuals |
| Activity Center      | Direct work-unit/agent lifecycle without the Decision Tree                        |
| Model & Agent Studio | Profiles, topology templates, session-wide defaults                               |
| Decision Convergence | The human approval gate — accept/reject/apply                                     |
| Pathways             | DAG visualization, timeline scrubbing, checkpoint marking                         |
