# f8fvwgzc/token-reasoner architecture

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

- Interactive diagram: https://gitdiagram.com/f8fvwgzc/token-reasoner
- Repository: https://github.com/f8fvwgzc/token-reasoner

## Overview

token-reasoner (`lge`) is a local coding-agent proxy that indexes repositories into a code graph, retrieves compact task-specific evidence, and exposes graph tools through MCP and CLI. The principal workflow is agent request → local proxy/session rewriting → graph context retrieval → upstream model; a separate repository workflow scans and parses code, resolves relationships, and stores the graph. The README documents dashboards, memory, usage reporting, and output filtering as additional capabilities. Some subsystem links are documented rather than evidenced by sampled implementation excerpts.

Main entry points: [`crates/lge-proxy/src/server.rs`](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-proxy/src/server.rs) (Local daemon), [`crates/lge-cli/src/main.rs`](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-cli/src/main.rs) (lge CLI), [`crates/lge-retrieve/src/pipeline.rs`](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-retrieve/src/pipeline.rs) (Index pipeline), [`crates/lge-proxy/src/responses.rs`](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-proxy/src/responses.rs) (Responses proxy)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User entry points"]
  node_cli["lge CLI<br/>[main.rs]"]
end

subgraph group_proxy["Proxy and sessions"]
  node_daemon["Local daemon<br/>[server.rs]"]
  node_responses["Responses proxy<br/>[responses.rs]"]
  node_session["Session rewriting<br/>[session.rs]"]
  node_filter["Tool output filter<br/>[run.rs]"]
end

subgraph group_graph["Code graph"]
  node_index_pipeline["Index pipeline<br/>[pipeline.rs]"]
  node_extract["Language extraction<br/>[lib.rs]"]
  node_resolve["Relationship resolver<br/>[lib.rs]"]
  node_store[("Graph database<br/>[lib.rs]")]
  node_search["Graph search<br/>[search.rs]"]
end

subgraph group_assist["Agent assistance"]
  node_retrieve["Evidence packs<br/>[pack.rs]"]
  node_mcp["MCP graph tools<br/>[lib.rs]"]
end

subgraph group_observability["Memory and usage"]
  node_memory["Project memory<br/>[recall.rs]"]
  node_usage["Usage reporting<br/>[report.rs]"]
  node_dashboard["Session dashboard<br/>[pages.rs]"]
end

node_agent(("Coding agent"))
node_developer(("Developer"))
node_upstream(("Model provider"))

node_developer -->|"runs commands"| node_cli
node_agent -->|"sends requests"| node_daemon
node_daemon -->|"routes requests"| node_responses
node_responses -->|"uses session"| node_session
node_session -->|"builds context"| node_retrieve
node_responses -->|"forwards requests"| node_upstream
node_daemon -.->|"shortens output"| node_filter
node_cli -->|"indexes repositories"| node_index_pipeline
node_index_pipeline -->|"scans and parses"| node_extract
node_index_pipeline -->|"resolves relationships"| node_resolve
node_index_pipeline -->|"writes graph"| node_store
node_retrieve -.->|"reads graph"| node_store
node_search -->|"queries symbols"| node_store
node_cli -->|"prints evidence pack"| node_retrieve
node_cli -.->|"traces impact"| node_resolve
node_agent -->|"calls graph tools"| node_mcp
node_daemon -->|"serves MCP"| node_mcp
node_daemon -->|"ingests history"| node_memory
node_cli -->|"recalls memory"| node_memory
node_daemon -.->|"reports tokens"| node_usage
node_developer -->|"views sessions"| node_dashboard

click node_cli "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-cli/src/main.rs"
click node_daemon "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-proxy/src/server.rs"
click node_responses "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-proxy/src/responses.rs"
click node_session "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-proxy/src/session.rs"
click node_filter "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-filter/src/run.rs"
click node_index_pipeline "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-retrieve/src/pipeline.rs"
click node_extract "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-index/src/lib.rs"
click node_resolve "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-resolve/src/lib.rs"
click node_store "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-store/src/lib.rs"
click node_search "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-store/src/search.rs"
click node_retrieve "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-retrieve/src/pack.rs"
click node_mcp "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-mcp/src/lib.rs"
click node_memory "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-memory/src/recall.rs"
click node_usage "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-usage/src/report.rs"
click node_dashboard "https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-memory/src/pages.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 toneBlue
class node_daemon,node_responses,node_session,node_filter toneAmber
class node_index_pipeline,node_extract,node_resolve,node_store,node_search toneMint
class node_retrieve,node_mcp toneRose
class node_memory,node_usage,node_dashboard,node_agent,node_developer,node_upstream toneIndigo
```

## Components

### User entry points

- [lge CLI](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-cli/src/main.rs): `crates/lge-cli/src/main.rs`

### Proxy and sessions

- [Local daemon](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-proxy/src/server.rs): `crates/lge-proxy/src/server.rs`
- [Responses proxy](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-proxy/src/responses.rs): `crates/lge-proxy/src/responses.rs`
- [Session rewriting](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-proxy/src/session.rs): `crates/lge-proxy/src/session.rs`
- [Tool output filter](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-filter/src/run.rs): `crates/lge-filter/src/run.rs`

### Code graph

- [Index pipeline](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-retrieve/src/pipeline.rs): `crates/lge-retrieve/src/pipeline.rs`
- [Language extraction](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-index/src/lib.rs): `crates/lge-index/src/lib.rs`
- [Relationship resolver](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-resolve/src/lib.rs): `crates/lge-resolve/src/lib.rs`
- [Graph database](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-store/src/lib.rs): `crates/lge-store/src/lib.rs`
- [Graph search](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-store/src/search.rs): `crates/lge-store/src/search.rs`

### Agent assistance

- [Evidence packs](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-retrieve/src/pack.rs): `crates/lge-retrieve/src/pack.rs`
- [MCP graph tools](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-mcp/src/lib.rs): `crates/lge-mcp/src/lib.rs`

### Memory and usage

- [Project memory](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-memory/src/recall.rs): `crates/lge-memory/src/recall.rs`
- [Usage reporting](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-usage/src/report.rs): `crates/lge-usage/src/report.rs`
- [Session dashboard](https://github.com/f8fvwgzc/token-reasoner/blob/main/crates/lge-memory/src/pages.rs): `crates/lge-memory/src/pages.rs`

### Other components

- **Coding agent**
- **Developer**
- **Model provider**

## Connections

- Developer → lge CLI: runs commands (evidence: `README.md`)
- Coding agent → Local daemon: sends requests (evidence: `README.md`)
- Local daemon → Responses proxy: routes requests (evidence: `crates/lge-proxy/src/server.rs`)
- Responses proxy → Session rewriting: uses session (evidence: `crates/lge-proxy/src/responses.rs`)
- Session rewriting → Evidence packs: builds context (evidence: `crates/lge-proxy/src/session.rs`)
- Responses proxy → Model provider: forwards requests (evidence: `README.md`)
- Local daemon → Tool output filter: shortens output
- lge CLI → Index pipeline: indexes repositories (evidence: `README.md`)
- Index pipeline → Language extraction: scans and parses (evidence: `crates/lge-retrieve/src/pipeline.rs`)
- Index pipeline → Relationship resolver: resolves relationships (evidence: `crates/lge-retrieve/src/pipeline.rs`)
- Index pipeline → Graph database: writes graph (evidence: `crates/lge-retrieve/src/pipeline.rs`)
- Evidence packs → Graph database: reads graph
- Graph search → Graph database: queries symbols (evidence: `crates/lge-store/src/search.rs`)
- lge CLI → Evidence packs: prints evidence pack (evidence: `README.md`)
- lge CLI → Relationship resolver: traces impact (evidence: `README.md`)
- Coding agent → MCP graph tools: calls graph tools (evidence: `README.md`)
- Local daemon → MCP graph tools: serves MCP (evidence: `README.md`)
- Local daemon → Project memory: ingests history (evidence: `crates/lge-proxy/src/server.rs`)
- lge CLI → Project memory: recalls memory (evidence: `README.md`)
- Local daemon → Usage reporting: reports tokens
- Developer → Session dashboard: views sessions (evidence: `README.md`)
