# Quickstart

Get Agents Orchestrator (agor) running locally in under 10 minutes.

## Prerequisites

| Dependency | Version | Notes |
|------------|---------|-------|
| Node.js | 20+ | npm included |
| Rust | 1.77+ | Install via [rustup](https://rustup.rs/) |
| WebKit2GTK | 4.1 | Tauri 2.x rendering engine |
| System libs | -- | See below |

### System libraries (Debian/Ubuntu)

```bash
sudo apt install \
  libwebkit2gtk-4.1-dev \
  libgtk-3-dev \
  libappindicator3-dev \
  librsvg2-dev \
  libssl-dev \
  libsoup-3.0-dev \
  javascriptcoregtk-4.1 \
  patchelf
```

### Optional dependencies

- **Claude Code CLI** -- Required for the Claude provider. Auto-detected at
  `~/.local/bin/claude`, `~/.claude/local/claude`, `/usr/local/bin/claude`, or
  `/usr/bin/claude`.
- **Deno** -- Preferred sidecar runtime (faster startup). Falls back to Node.js.
- **Ollama** -- Required for the Ollama provider. Must be running on
  `localhost:11434`.

## Clone and build

```bash
git clone git@github.com:DexterFromLab/agent-orchestrator.git
cd agent-orchestrator

npm install
npm run tauri dev
```

The dev server runs on port **9700**. Tauri opens a native window automatically.

### Production build

```bash
npm run tauri build
```

Output: `.deb` and AppImage in `src-tauri/target/release/bundle/`.

## Project configuration

Agor organizes work into **groups**, each containing one or more **projects**
(codebases) and optional **agents** (Tier 1 management roles).

Configuration lives in `~/.config/agor/groups.json`. On first launch, agor
creates a default file. You can also create it manually:

```json
{
  "version": 1,
  "groups": [
    {
      "id": "my-team",
      "name": "My Team",
      "projects": [
        {
          "id": "backend",
          "name": "Backend API",
          "identifier": "backend-api",
          "description": "REST API service",
          "icon": "B",
          "cwd": "/home/user/code/backend",
          "profile": "default",
          "enabled": true,
          "provider": "claude"
        },
        {
          "id": "frontend",
          "name": "Frontend App",
          "identifier": "frontend-app",
          "description": "Svelte web client",
          "icon": "F",
          "cwd": "/home/user/code/frontend",
          "profile": "default",
          "enabled": true,
          "provider": "claude",
          "model": "claude-sonnet-4-6"
        }
      ],
      "agents": [
        {
          "id": "mgr-1",
          "name": "Manager",
          "role": "manager",
          "enabled": true,
          "wakeIntervalMin": 3,
          "wakeStrategy": "smart",
          "wakeThreshold": 0.5
        }
      ]
    }
  ],
  "activeGroupId": "my-team"
}
```

### Key fields

| Field | Required | Description |
|-------|----------|-------------|
| `id` | Yes | Unique identifier within the group |
| `cwd` | Yes | Absolute path to the project directory |
| `provider` | No | `claude` (default), `codex`, `ollama`, or `aider` |
| `model` | No | Model override; falls back to provider default |
| `profile` | No | Claude profile name from `~/.config/switcher/profiles/` |
| `useWorktrees` | No | Enable git worktree isolation per session |
| `sandboxEnabled` | No | Enable Landlock filesystem sandbox (Linux 5.13+) |
| `autonomousMode` | No | `restricted` (default) or `autonomous` |
| `anchorBudgetScale` | No | Anchor token budget: `small`, `medium`, `large`, `full` |
| `stallThresholdMin` | No | Minutes before idle agent is marked stalled (default 15) |

## Creating your first agent session

1. Launch agor (`npm run tauri dev` or the built binary).
2. The workspace shows your configured projects as cards in a grid.
3. Click a project card to focus it. The **Model** tab opens by default.
4. Type a prompt in the input area at the bottom and press Enter.
5. Agor spawns a sidecar process, connects to the provider, and streams
   responses in real time.

The agent session persists across tab switches. Closing the project card stops
the agent.

## Keyboard shortcuts

| Shortcut | Action |
|----------|--------|
| `Ctrl+B` | Toggle sidebar |
| `Ctrl+,` | Open settings |
| `Ctrl+Shift+F` | Full-text search overlay |
| `Ctrl+K` | Command palette |
| `Alt+1` -- `Alt+5` | Focus project 1--5 |
| `Escape` | Close sidebar / overlay / palette |

## Running tests

```bash
# All tests (vitest frontend + cargo backend)
npm run test:all

# Frontend only
npm run test

# Backend only
npm run test:cargo

# E2E tests (requires built binary)
npm run test:all:e2e
```

## Directory layout

```
agent-orchestrator/
  agor-core/          # Shared Rust crate (PTY, sidecar, supervisor, sandbox)
  agor-relay/         # Standalone relay binary (WebSocket server)
  src-tauri/          # Tauri app (Rust backend)
  src/                # Svelte 5 frontend
  sidecar/            # Provider runner scripts (compiled to .mjs)
  docs/               # Project documentation
  tests/e2e/          # WebDriverIO E2E tests
```

## Next steps

- [Configuration reference](../config/ref-settings.md) -- all env vars, config
  files, and per-project settings.
- [Provider reference](../providers/ref-providers.md) -- Claude, Codex, Ollama,
  Aider setup.
- [btmsg reference](../agents/ref-btmsg.md) -- inter-agent messaging.
- [bttask reference](../agents/ref-bttask.md) -- kanban task board.
