# manuel-alvarez-alvarez/ariadne architecture

> Architecture diagram of the GitHub repository manuel-alvarez-alvarez/ariadne, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/manuel-alvarez-alvarez/ariadne
- Repository: https://github.com/manuel-alvarez-alvarez/ariadne

## Overview

Ariadne orchestrates AI coding agents through goal planning, task workflows, isolated worktrees and ACP sessions, with users able to monitor and intervene through the CLI or desktop. The daemon exposes REST/SSE and persists operational state; forge automation and permissions are additional product branches. README statements establish the main runtime flows; sampled files confirm CLI startup, task endpoint storage calls and desktop provider wiring. Many domain modules are unsampled, so their internal links are omitted or marked unverified.

Main entry points: [`crates/ariadne-daemon/src/http/mod.rs`](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/http/mod.rs) (REST and streams), [`crates/ariadne-cli/src/commands/mod.rs`](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-cli/src/commands/mod.rs) (CLI commands), [`ui/src/App.tsx`](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/ui/src/App.tsx) (Desktop app), [`crates/ariadne-daemon/src/scheduler/tasks.rs`](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/scheduler/tasks.rs) (Task workflows)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User interfaces"]
  node_cli["CLI commands<br/>[mod.rs]"]
  node_desktop["Desktop app<br/>[App.tsx]"]
  node_console["Agent console<br/>[mod.rs]"]
end

subgraph group_daemon["Daemon services"]
  node_daemon_http["REST and streams<br/>[mod.rs]"]
end

subgraph group_execution["Agent execution"]
  node_goal_planning["Goal planning<br/>[goals.rs]"]
  node_task_scheduler["Task workflows<br/>[tasks.rs]"]
  node_worktrees["Task worktrees<br/>[launcher.rs]"]
  node_acp["ACP sessions<br/>[acp.rs]"]
end

subgraph group_state["State and integrations"]
  node_store[("Persistent state<br/>[tasks.rs]")]
  node_forge["Forge automation<br/>[mod.rs]"]
  node_webhooks["Webhook intake<br/>[webhooks.rs]"]
  node_permissions["AI permissions<br/>[server.rs]"]
end

subgraph group_shared["Shared protocol"]
  node_client["HTTP client<br/>[lib.rs]"]
  node_api["API contracts<br/>[lib.rs]"]
end

node_user(("User"))
node_agent(("ACP agent"))
node_github["GitHub forge"]

node_user -->|"issues commands"| node_cli
node_user -->|"uses"| node_desktop
node_cli -->|"sends requests"| node_client
node_client -->|"calls REST"| node_daemon_http
node_desktop -->|"uses REST/SSE"| node_daemon_http
node_daemon_http -.->|"serves contracts"| node_api
node_daemon_http -->|"reads and writes"| node_store
node_goal_planning -.->|"creates tasks"| node_task_scheduler
node_task_scheduler -->|"launches tasks"| node_worktrees
node_task_scheduler -.->|"runs workflow steps"| node_acp
node_worktrees -->|"isolates checkout"| node_agent
node_acp -->|"speaks ACP"| node_agent
node_agent -->|"reports events"| node_acp
node_desktop -.->|"renders session console"| node_console
node_cli -->|"attaches inline"| node_console
node_daemon_http -.->|"exposes forge actions"| node_forge
node_forge -->|"reads and updates"| node_github
node_github -->|"delivers signed events"| node_webhooks
node_webhooks -.->|"wakes daemon"| node_daemon_http
node_daemon_http -.->|"serves permission APIs"| node_permissions
node_permissions -.->|"persists settings"| node_store

click node_cli "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-cli/src/commands/mod.rs"
click node_desktop "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/ui/src/App.tsx"
click node_client "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-client/src/lib.rs"
click node_api "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-api/src/lib.rs"
click node_daemon_http "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/http/mod.rs"
click node_goal_planning "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/scheduler/goals.rs"
click node_task_scheduler "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/scheduler/tasks.rs"
click node_worktrees "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/launcher.rs"
click node_acp "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/acp.rs"
click node_console "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-console/src/tui/mod.rs"
click node_store "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-store/src/tasks.rs"
click node_forge "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/forge/mod.rs"
click node_webhooks "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/webhooks.rs"
click node_permissions "https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/ai_permissions/server.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_desktop,node_console,node_user toneBlue
class node_daemon_http toneAmber
class node_goal_planning,node_task_scheduler,node_worktrees,node_acp toneMint
class node_store,node_forge,node_webhooks,node_permissions toneRose
class node_client,node_api,node_agent,node_github toneIndigo
```

## Components

### User interfaces

- [CLI commands](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-cli/src/commands/mod.rs): `crates/ariadne-cli/src/commands/mod.rs`
- [Desktop app](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/ui/src/App.tsx): `ui/src/App.tsx`
- [Agent console](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-console/src/tui/mod.rs): `crates/ariadne-console/src/tui/mod.rs`

### Daemon services

- [REST and streams](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/http/mod.rs): `crates/ariadne-daemon/src/http/mod.rs`

### Agent execution

- [Goal planning](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/scheduler/goals.rs): `crates/ariadne-daemon/src/scheduler/goals.rs`
- [Task workflows](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/scheduler/tasks.rs): `crates/ariadne-daemon/src/scheduler/tasks.rs`
- [Task worktrees](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/launcher.rs): `crates/ariadne-daemon/src/launcher.rs`
- [ACP sessions](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/acp.rs): `crates/ariadne-daemon/src/acp.rs`

### State and integrations

- [Persistent state](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-store/src/tasks.rs): `crates/ariadne-store/src/tasks.rs`
- [Forge automation](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/forge/mod.rs): `crates/ariadne-daemon/src/forge/mod.rs`
- [Webhook intake](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/webhooks.rs): `crates/ariadne-daemon/src/webhooks.rs`
- [AI permissions](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-daemon/src/ai_permissions/server.rs): `crates/ariadne-daemon/src/ai_permissions/server.rs`

### Shared protocol

- [HTTP client](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-client/src/lib.rs): `crates/ariadne-client/src/lib.rs`
- [API contracts](https://github.com/manuel-alvarez-alvarez/ariadne/blob/main/crates/ariadne-api/src/lib.rs): `crates/ariadne-api/src/lib.rs`

### Other components

- **User**
- **ACP agent**
- **GitHub forge**

## Connections

- User → CLI commands: issues commands (evidence: `README.md`)
- User → Desktop app: uses (evidence: `README.md`)
- CLI commands → HTTP client: sends requests
- HTTP client → REST and streams: calls REST (evidence: `README.md`)
- Desktop app → REST and streams: uses REST/SSE (evidence: `README.md`)
- REST and streams → API contracts: serves contracts
- REST and streams → Persistent state: reads and writes
- Goal planning → Task workflows: creates tasks
- Task workflows → Task worktrees: launches tasks (evidence: `crates/ariadne-daemon/src/scheduler/tasks.rs`)
- Task workflows → ACP sessions: runs workflow steps
- Task worktrees → ACP agent: isolates checkout (evidence: `README.md`)
- ACP sessions → ACP agent: speaks ACP (evidence: `README.md`)
- ACP agent → ACP sessions: reports events (evidence: `README.md`)
- Desktop app → Agent console: renders session console
- CLI commands → Agent console: attaches inline (evidence: `README.md`)
- REST and streams → Forge automation: exposes forge actions
- Forge automation → GitHub forge: reads and updates (evidence: `README.md`)
- GitHub forge → Webhook intake: delivers signed events (evidence: `README.md`)
- Webhook intake → REST and streams: wakes daemon
- REST and streams → AI permissions: serves permission APIs
- AI permissions → Persistent state: persists settings
