# correspond9/claurst architecture

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

- Interactive diagram: https://gitdiagram.com/correspond9/claurst
- Repository: https://github.com/correspond9/claurst

## Overview

Claurst is a Rust terminal coding agent for interactive and one-shot coding conversations, with multiple model providers, tools, persistent sessions, plugins, MCP integrations, and memory features. The principal workflow is a user prompt entering through the CLI/TUI, being handled as a query, and using provider responses and tools to produce an answer or code changes. The graph also captures documented product branches. Source excerpts are partial, so uncertain internal call wiring is omitted; several subsystem paths identify the existing module directory where implementation was not sampled.

Main entry points: [`src-rust/crates/cli/src/main.rs`](https://github.com/correspond9/claurst/blob/main/src-rust/crates/cli/src/main.rs) (CLI entry), [`src-rust/crates/tui/src/app.rs`](https://github.com/correspond9/claurst/blob/main/src-rust/crates/tui/src/app.rs) (Terminal UI), [`src-rust/crates/query/src/coordinator.rs`](https://github.com/correspond9/claurst/blob/main/src-rust/crates/query/src/coordinator.rs) (Query coordinator), [`src-rust/crates/api/src/lib.rs`](https://github.com/correspond9/claurst/blob/main/src-rust/crates/api/src/lib.rs) (Provider API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User experience"]
  node_cli["CLI entry<br/>[main.rs]"]
  node_commands["Slash commands<br/>[lib.rs]"]
end

subgraph group_agent["Agent runtime"]
  node_query["Query coordinator<br/>[coordinator.rs]"]
  node_tools["Agent tools<br/>[lib.rs]"]
  node_tasktools["Task tools<br/>[tasks.rs]"]
end

subgraph group_integrations["Providers and extensions"]
  node_api["Provider API<br/>[lib.rs]"]
  node_providers["Provider adapters"]
  node_mcp["MCP connections"]
  node_plugins["Plugin system"]
end

subgraph group_state["Session and memory"]
  node_transcript[("Transcript store<br/>[session_storage.rs]")]
  node_sqlite[("SQLite sessions<br/>[sqlite_storage.rs]")]
  node_memory["Session memory<br/>[session_memory.rs]"]
end

subgraph group_interface["Terminal interface"]
  node_tui["Terminal UI<br/>[app.rs]"]
  node_input["Prompt input<br/>[prompt_input.rs]"]
  node_tasksview["Task overlay<br/>[tasks_overlay.rs]"]
end

node_user(("User"))
node_modelservice{{"AI model services"}}
node_mcpservers{{"MCP servers"}}
node_projectmemory["Project memory files"]

node_user -->|"starts"| node_cli
node_cli -->|"interactive mode"| node_tui
node_cli -->|"runs query"| node_query
node_user -->|"enters prompt"| node_input
node_input -->|"updates input"| node_tui
node_tui -->|"submits prompt"| node_query
node_tui -->|"dispatches command"| node_commands
node_query -->|"requests completion"| node_api
node_api -->|"selects adapter"| node_providers
node_providers -->|"sends request"| node_modelservice
node_query -->|"invokes tools"| node_tools
node_tools -->|"includes task tools"| node_tasktools
node_tui -->|"persists conversation"| node_transcript
node_cli -->|"loads resumed session"| node_transcript
node_cli -.->|"optional session storage"| node_sqlite
node_memory -->|"extracts memories"| node_api
node_memory -->|"persists memories"| node_projectmemory
node_cli -->|"configures connections"| node_mcp
node_mcp -->|"connects"| node_mcpservers
node_cli -->|"loads extensions"| node_plugins
node_tui -->|"shows task status"| node_tasksview

click node_cli "https://github.com/correspond9/claurst/blob/main/src-rust/crates/cli/src/main.rs"
click node_commands "https://github.com/correspond9/claurst/blob/main/src-rust/crates/commands/src/lib.rs"
click node_query "https://github.com/correspond9/claurst/blob/main/src-rust/crates/query/src/coordinator.rs"
click node_tools "https://github.com/correspond9/claurst/blob/main/src-rust/crates/tools/src/lib.rs"
click node_tasktools "https://github.com/correspond9/claurst/blob/main/src-rust/crates/tools/src/tasks.rs"
click node_api "https://github.com/correspond9/claurst/blob/main/src-rust/crates/api/src/lib.rs"
click node_providers "https://github.com/correspond9/claurst/tree/main/src-rust/crates/api/src/providers"
click node_mcp "https://github.com/correspond9/claurst/blob/main/src-rust/crates/mcp/src/connection_manager.rs"
click node_plugins "https://github.com/correspond9/claurst/tree/main/src-rust/crates/plugins/src"
click node_tui "https://github.com/correspond9/claurst/blob/main/src-rust/crates/tui/src/app.rs"
click node_input "https://github.com/correspond9/claurst/blob/main/src-rust/crates/tui/src/prompt_input.rs"
click node_transcript "https://github.com/correspond9/claurst/blob/main/src-rust/crates/core/src/session_storage.rs"
click node_sqlite "https://github.com/correspond9/claurst/blob/main/src-rust/crates/core/src/sqlite_storage.rs"
click node_memory "https://github.com/correspond9/claurst/blob/main/src-rust/crates/query/src/session_memory.rs"
click node_tasksview "https://github.com/correspond9/claurst/blob/main/src-rust/crates/tui/src/tasks_overlay.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_commands,node_user toneBlue
class node_query,node_tools,node_tasktools toneAmber
class node_api,node_providers,node_mcp,node_plugins,node_mcpservers toneMint
class node_transcript,node_sqlite,node_memory toneRose
class node_tui,node_input,node_tasksview,node_modelservice,node_projectmemory toneIndigo
```

## Components

### User experience

- [CLI entry](https://github.com/correspond9/claurst/blob/main/src-rust/crates/cli/src/main.rs): `src-rust/crates/cli/src/main.rs`
- [Slash commands](https://github.com/correspond9/claurst/blob/main/src-rust/crates/commands/src/lib.rs): `src-rust/crates/commands/src/lib.rs`

### Agent runtime

- [Query coordinator](https://github.com/correspond9/claurst/blob/main/src-rust/crates/query/src/coordinator.rs): `src-rust/crates/query/src/coordinator.rs`
- [Agent tools](https://github.com/correspond9/claurst/blob/main/src-rust/crates/tools/src/lib.rs): `src-rust/crates/tools/src/lib.rs`
- [Task tools](https://github.com/correspond9/claurst/blob/main/src-rust/crates/tools/src/tasks.rs): `src-rust/crates/tools/src/tasks.rs`

### Providers and extensions

- [Provider API](https://github.com/correspond9/claurst/blob/main/src-rust/crates/api/src/lib.rs): `src-rust/crates/api/src/lib.rs`
- [Provider adapters](https://github.com/correspond9/claurst/tree/main/src-rust/crates/api/src/providers): `src-rust/crates/api/src/providers`
- [MCP connections](https://github.com/correspond9/claurst/blob/main/src-rust/crates/mcp/src/connection_manager.rs): `src-rust/crates/mcp/src/connection_manager.rs`
- [Plugin system](https://github.com/correspond9/claurst/tree/main/src-rust/crates/plugins/src): `src-rust/crates/plugins/src`

### Session and memory

- [Transcript store](https://github.com/correspond9/claurst/blob/main/src-rust/crates/core/src/session_storage.rs): `src-rust/crates/core/src/session_storage.rs`
- [SQLite sessions](https://github.com/correspond9/claurst/blob/main/src-rust/crates/core/src/sqlite_storage.rs): `src-rust/crates/core/src/sqlite_storage.rs`
- [Session memory](https://github.com/correspond9/claurst/blob/main/src-rust/crates/query/src/session_memory.rs): `src-rust/crates/query/src/session_memory.rs`

### Terminal interface

- [Terminal UI](https://github.com/correspond9/claurst/blob/main/src-rust/crates/tui/src/app.rs): `src-rust/crates/tui/src/app.rs`
- [Prompt input](https://github.com/correspond9/claurst/blob/main/src-rust/crates/tui/src/prompt_input.rs): `src-rust/crates/tui/src/prompt_input.rs`
- [Task overlay](https://github.com/correspond9/claurst/blob/main/src-rust/crates/tui/src/tasks_overlay.rs): `src-rust/crates/tui/src/tasks_overlay.rs`

### Other components

- **User**
- **AI model services**
- **MCP servers**
- **Project memory files**

## Connections

- User → CLI entry: starts
- CLI entry → Terminal UI: interactive mode
- CLI entry → Query coordinator: runs query
- User → Prompt input: enters prompt
- Prompt input → Terminal UI: updates input
- Terminal UI → Query coordinator: submits prompt
- Terminal UI → Slash commands: dispatches command
- Query coordinator → Provider API: requests completion
- Provider API → Provider adapters: selects adapter
- Provider adapters → AI model services: sends request
- Query coordinator → Agent tools: invokes tools
- Agent tools → Task tools: includes task tools
- Terminal UI → Transcript store: persists conversation
- CLI entry → Transcript store: loads resumed session
- CLI entry → SQLite sessions: optional session storage
- Session memory → Provider API: extracts memories
- Session memory → Project memory files: persists memories
- CLI entry → MCP connections: configures connections
- MCP connections → MCP servers: connects
- CLI entry → Plugin system: loads extensions
- Terminal UI → Task overlay: shows task status
