> ## 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.

# Quickstart

> Install the Control Tower VS Code extension, start the Studio host, and run your first goal.

# Quickstart

This guide gets you from zero to a running goal in the Control Tower.

## Prerequisites

* [.NET SDK 10.0](https://dotnet.microsoft.com/download)
* [Node.js 22+](https://nodejs.org/) (for the VS Code extension)
* [VS Code 1.90+](https://code.visualstudio.com/)
* A sibling checkout of [nodalmerge](/) — Studio embeds the
  NodalMerge host and consumes it via local NuGet packages

## 1. Restore NodalMerge dependencies

From the `nodalmerge-studio` repo root, pack local NodalMerge NuGet artifacts from
the sibling repo:

```powershell theme={null}
pwsh -File .\scripts\restore-local-nodalmerge.ps1
```

## 2. Restore and build

```powershell theme={null}
dotnet restore NodalMerge.Studio.slnx --configfile NuGet.config
dotnet build NodalMerge.Studio.slnx
```

## 3. Build the VS Code extension

```powershell theme={null}
cd clients\vscode-extension
npm install
npm run compile
```

## 4. Start the Studio host

```powershell theme={null}
pwsh -File .\scripts\dev.ps1
```

Verify it's up:

```bash theme={null}
curl http://127.0.0.1:5080/health
curl http://127.0.0.1:5080/studio/health
```

## 5. Launch the extension

Press <kbd>F5</kbd> from the `clients/vscode-extension` directory to launch the
extension in a VS Code Extension Development Host.

## 6. Run "NodalMerge: Open Studio"

Open the command palette (<kbd>Ctrl+Shift+P</kbd> / <kbd>Cmd+Shift+P</kbd>) and run
`NodalMerge: Open Studio`. This opens the Control Tower — a tabbed shell with Goal
Workspace, Activity Center, Model & Agent Studio, Decision Convergence, and Pathways.

## 7. Configure an agent profile

Before you can run a goal, define at least one agent profile in VS Code settings —
this maps agent roles to an LLM provider and model:

```jsonc theme={null}
// settings.json
{
  "nodalmerge.agentProfiles": [
    {
      "id": "orchestrator",
      "label": "Orchestrator (Claude)",
      "domain": "orchestration",
      "provider": "anthropic",
      "model": "claude-sonnet-4-6",
      "apiKeyRef": "anthropic-key",
      "systemPromptHint": "You are an orchestrator agent. Plan work, assign tasks, review results."
    }
  ]
}
```

`provider` can be `anthropic`, `openai`, or `vscode-lm` (VS Code's built-in Language
Model API — no API key required). Store API keys via VS Code's `SecretStorage`
(**Ctrl+Shift+P → "Preferences: Configure Runtime Arguments"**, or through the
Model & Agent Studio panel's Profiles tab).

## 8. Run your first goal

In the Goal Workspace topbar:

1. Type a goal, e.g. "Add input validation to the signup form"
2. Leave **Exploration Strategy** at its default (single-agent) and **Review:
   Human Required** (the default review policy)
3. Click **▶ Run**

Watch the Decision Tree populate as the orchestrator plans and workers execute. Click
any node to load its timeline into the Decision Lens.

## 9. Review and approve the proposal

When a worker finishes, it submits a merge proposal, which routes to Decision
Convergence for review (or shows up under Activity Center's "Pending Decisions").
Inspect the diff, evidence, and rationale, then **Accept Decision** and **Apply
Decision**.

## Next steps

* Read [Concepts → How Studio works](/studio/concepts/overview) for the mental model behind
  work units, projections, and branches
* Read [Concepts → Trust & autonomy](/studio/concepts/trust-and-autonomy) to configure
  review policy, promotion branches, and experiments for less hands-on runs
* Browse the [Control Tower UI reference](/studio/reference/ui-reference) for every panel
  and control
* If you're integrating from CI or an external system rather than the extension, see
  [Guides → Extending goals](/studio/guides/extending-goals) and
  [Guides → Headless peer](/studio/guides/headless-peer)
