# fwdai/reticle architecture

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

- Interactive diagram: https://gitdiagram.com/fwdai/reticle
- Repository: https://github.com/fwdai/reticle

## Overview

Reticle is a local-first desktop workbench for designing, running, evaluating, and inspecting LLM scenarios and agents. Engineers configure a scenario or agent, execute it against provider models (and tools, where configured), inspect outputs and traces, and retain run history locally; eval datasets and assertions support repeatable checks. The graph preserves the README’s major product areas. Some links are based on documented capabilities and the file tree because their implementation was not sampled.

Main entry points: [`src/App.tsx`](https://github.com/fwdai/reticle/blob/main/src/App.tsx) (App shell), [`src/lib/storage`](https://github.com/fwdai/reticle/tree/main/src/lib/storage) (Storage API), [`src/features/Scenarios`](https://github.com/fwdai/reticle/tree/main/src/features/Scenarios) (Scenarios), [`src/features/Agents`](https://github.com/fwdai/reticle/tree/main/src/features/Agents) (Agents)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Workspace"]
  node_app["App shell<br/>[App.tsx]"]
  node_home["Dashboard"]
  node_settings["Settings"]
end

subgraph group_design["Design and execution"]
  node_scenarios["Scenarios"]
  node_scenario_actions["Scenario actions<br/>[scenarioActions.ts]"]
  node_agents["Agents"]
  node_agent_actions["Agent actions<br/>[agentActions.ts]"]
  node_agent_runtime["Agent runtime"]
  node_human_input["Human input<br/>[agentHumanInput.ts]"]
  node_tools["Tools"]
  node_templates["Templates"]
end

subgraph group_evaluation["Evaluation and inspection"]
  node_evals["Eval engine"]
  node_eval_ui["Eval controls"]
  node_runs["Run history"]
  node_visualizers["Trace visualizers"]
end

subgraph group_runtime["Runtime integrations"]
  node_tool_execution["Tool execution"]
  node_gateway["Provider gateway"]
  node_proxy["Local proxy<br/>[server.rs]"]
  node_runner["Code runner"]
end

subgraph group_persistence["Local services"]
  node_storage_api["Storage API"]
  node_database[("SQLite database<br/>[database.rs]")]
end

node_engineer(("Engineer"))
node_providers{{"Model providers"}}

node_engineer -->|"uses"| node_app
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_scenarios
node_app -->|"routes to"| node_agents
node_app -->|"routes to"| node_tools
node_app -->|"routes to"| node_runs
node_app -->|"routes to"| node_settings
node_app -->|"routes to"| node_templates
node_scenarios -->|"invokes"| node_scenario_actions
node_scenario_actions -->|"runs model requests"| node_gateway
node_agents -->|"invokes"| node_agent_actions
node_agent_actions -->|"runs agent"| node_agent_runtime
node_agent_runtime -->|"requests model"| node_gateway
node_agent_actions -->|"handles prompts"| node_human_input
node_tools -->|"tests code tools"| node_tool_execution
node_tool_execution -->|"spawns scripts"| node_runner
node_eval_ui -->|"runs assertions"| node_evals
node_runs -->|"renders traces"| node_visualizers
node_gateway -->|"sends requests"| node_proxy
node_proxy -->|"forwards requests"| node_providers
node_proxy -->|"reads API keys"| node_database
node_settings -->|"manages settings"| node_storage_api
node_home -->|"loads summaries"| node_storage_api
node_scenarios -->|"stores scenarios"| node_storage_api
node_agents -->|"stores agents"| node_storage_api
node_tools -->|"stores tools"| node_storage_api
node_templates -->|"stores templates"| node_storage_api
node_runs -->|"loads history"| node_storage_api
node_evals -->|"stores eval data"| node_storage_api
node_storage_api -->|"reads and writes"| node_database

click node_app "https://github.com/fwdai/reticle/blob/main/src/App.tsx"
click node_home "https://github.com/fwdai/reticle/tree/main/src/features/Home"
click node_scenarios "https://github.com/fwdai/reticle/tree/main/src/features/Scenarios"
click node_scenario_actions "https://github.com/fwdai/reticle/blob/main/src/actions/scenarioActions.ts"
click node_agents "https://github.com/fwdai/reticle/tree/main/src/features/Agents"
click node_agent_actions "https://github.com/fwdai/reticle/blob/main/src/actions/agentActions.ts"
click node_agent_runtime "https://github.com/fwdai/reticle/tree/main/src/lib/agent"
click node_human_input "https://github.com/fwdai/reticle/blob/main/src/actions/agentHumanInput.ts"
click node_tools "https://github.com/fwdai/reticle/tree/main/src/features/Tools"
click node_tool_execution "https://github.com/fwdai/reticle/blob/main/src/components/Tools/Detail/Code/useToolExecution.ts"
click node_templates "https://github.com/fwdai/reticle/tree/main/src/features/Templates"
click node_evals "https://github.com/fwdai/reticle/tree/main/src/lib/evals"
click node_eval_ui "https://github.com/fwdai/reticle/tree/main/src/components/evals"
click node_runs "https://github.com/fwdai/reticle/tree/main/src/features/Runs"
click node_visualizers "https://github.com/fwdai/reticle/tree/main/src/features/Runs/MainContent/RunDetail"
click node_settings "https://github.com/fwdai/reticle/tree/main/src/features/Settings"
click node_gateway "https://github.com/fwdai/reticle/tree/main/src/lib/gateway"
click node_proxy "https://github.com/fwdai/reticle/blob/main/src-tauri/src/server.rs"
click node_runner "https://github.com/fwdai/reticle/tree/main/src/lib/runner"
click node_storage_api "https://github.com/fwdai/reticle/tree/main/src/lib/storage"
click node_database "https://github.com/fwdai/reticle/blob/main/src-tauri/src/database.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_app,node_home,node_settings toneBlue
class node_scenarios,node_scenario_actions,node_agents,node_agent_actions,node_agent_runtime,node_human_input,node_tools,node_templates toneAmber
class node_evals,node_eval_ui,node_runs,node_visualizers toneMint
class node_tool_execution,node_gateway,node_proxy,node_runner toneRose
class node_storage_api,node_database,node_engineer,node_providers toneIndigo
```

## Components

### Workspace

- [App shell](https://github.com/fwdai/reticle/blob/main/src/App.tsx): `src/App.tsx`
- [Dashboard](https://github.com/fwdai/reticle/tree/main/src/features/Home): `src/features/Home`
- [Settings](https://github.com/fwdai/reticle/tree/main/src/features/Settings): `src/features/Settings`

### Design and execution

- [Scenarios](https://github.com/fwdai/reticle/tree/main/src/features/Scenarios): `src/features/Scenarios`
- [Scenario actions](https://github.com/fwdai/reticle/blob/main/src/actions/scenarioActions.ts): `src/actions/scenarioActions.ts`
- [Agents](https://github.com/fwdai/reticle/tree/main/src/features/Agents): `src/features/Agents`
- [Agent actions](https://github.com/fwdai/reticle/blob/main/src/actions/agentActions.ts): `src/actions/agentActions.ts`
- [Agent runtime](https://github.com/fwdai/reticle/tree/main/src/lib/agent): `src/lib/agent`
- [Human input](https://github.com/fwdai/reticle/blob/main/src/actions/agentHumanInput.ts): `src/actions/agentHumanInput.ts`
- [Tools](https://github.com/fwdai/reticle/tree/main/src/features/Tools): `src/features/Tools`
- [Templates](https://github.com/fwdai/reticle/tree/main/src/features/Templates): `src/features/Templates`

### Evaluation and inspection

- [Eval engine](https://github.com/fwdai/reticle/tree/main/src/lib/evals): `src/lib/evals`
- [Eval controls](https://github.com/fwdai/reticle/tree/main/src/components/evals): `src/components/evals`
- [Run history](https://github.com/fwdai/reticle/tree/main/src/features/Runs): `src/features/Runs`
- [Trace visualizers](https://github.com/fwdai/reticle/tree/main/src/features/Runs/MainContent/RunDetail): `src/features/Runs/MainContent/RunDetail`

### Runtime integrations

- [Tool execution](https://github.com/fwdai/reticle/blob/main/src/components/Tools/Detail/Code/useToolExecution.ts): `src/components/Tools/Detail/Code/useToolExecution.ts`
- [Provider gateway](https://github.com/fwdai/reticle/tree/main/src/lib/gateway): `src/lib/gateway`
- [Local proxy](https://github.com/fwdai/reticle/blob/main/src-tauri/src/server.rs): `src-tauri/src/server.rs`
- [Code runner](https://github.com/fwdai/reticle/tree/main/src/lib/runner): `src/lib/runner`

### Local services

- [Storage API](https://github.com/fwdai/reticle/tree/main/src/lib/storage): `src/lib/storage`
- [SQLite database](https://github.com/fwdai/reticle/blob/main/src-tauri/src/database.rs): `src-tauri/src/database.rs`

### Other components

- **Engineer**
- **Model providers**

## Connections

- Engineer → App shell: uses
- App shell → Dashboard: routes to
- App shell → Scenarios: routes to
- App shell → Agents: routes to
- App shell → Tools: routes to
- App shell → Run history: routes to
- App shell → Settings: routes to
- App shell → Templates: routes to
- Scenarios → Scenario actions: invokes
- Scenario actions → Provider gateway: runs model requests
- Agents → Agent actions: invokes
- Agent actions → Agent runtime: runs agent
- Agent runtime → Provider gateway: requests model
- Agent actions → Human input: handles prompts
- Tools → Tool execution: tests code tools
- Tool execution → Code runner: spawns scripts
- Eval controls → Eval engine: runs assertions
- Run history → Trace visualizers: renders traces
- Provider gateway → Local proxy: sends requests
- Local proxy → Model providers: forwards requests
- Local proxy → SQLite database: reads API keys
- Settings → Storage API: manages settings
- Dashboard → Storage API: loads summaries
- Scenarios → Storage API: stores scenarios
- Agents → Storage API: stores agents
- Tools → Storage API: stores tools
- Templates → Storage API: stores templates
- Run history → Storage API: loads history
- Eval engine → Storage API: stores eval data
- Storage API → SQLite database: reads and writes
