# zleap-ai/sag-wiki architecture

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

- Interactive diagram: https://gitdiagram.com/zleap-ai/sag-wiki
- Repository: https://github.com/zleap-ai/sag-wiki

## Overview

SAG-Wiki is a local-files knowledge base with a desktop interface and agent/CLI access. Its main workflow is to add folders, index and convert documents locally, search for evidence, and optionally ask a configured model questions whose answers cite source passages. The architecture also includes document exploration, notes, MCP access, and browser clipping. The graph emphasizes relationships established by the README and shown imports; implementation details of unsampled subsystems are represented at their enclosing paths, with uncertain links omitted.

Main entry points: [`core/src/service.rs`](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/service.rs) (Application service), [`src/App.svelte`](https://github.com/zleap-ai/sag-wiki/blob/main/src/App.svelte) (Desktop interface), [`core/src/conversion.rs`](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/conversion.rs) (Document conversion), [`core/src/models.rs`](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/models.rs) (Model services)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop experience"]
  node_desktop["Desktop interface<br/>[App.svelte]"]
  node_quicksearch["Quick Search<br/>[QuickSearch.svelte]"]
  node_exploreui["Relationship explorer<br/>[ExploreView.svelte]"]
  node_tauri["Desktop bridge<br/>[lib.rs]"]
  node_desktopapi["Desktop commands<br/>[cli_commands.rs]"]
end

subgraph group_engine["Knowledge engine"]
  node_indexing["Folder indexing<br/>[indexer.rs]"]
  node_conversion["Document conversion<br/>[conversion.rs]"]
  node_docling["Docling conversion<br/>[docling.rs]"]
  node_mineru["MinerU conversion<br/>[mineru.rs]"]
  node_retrieval["SAG2 retrieval<br/>[sag2_v10.rs]"]
  node_models["Model services<br/>[models.rs]"]
  node_store[("Local library store<br/>[store.rs]")]
  node_notes["Notes<br/>[notes.rs]"]
  node_exploration["Document exploration<br/>[explore.rs]"]
  node_service["Application service<br/>[service.rs]"]
end

subgraph group_access["Agent and capture access"]
  node_mcp["MCP tools<br/>[mcp.rs]"]
  node_sagmcp["SAG MCP interface<br/>[sag_mcp.rs]"]
  node_server["SAG request server<br/>[server.rs]"]
  node_cli["CLI<br/>[main.rs]"]
  node_clipper["Browser clipper<br/>[background.js]"]
end

subgraph group_integrations["External services"]
  node_answerprovider["Answer model"]
  node_jev["Jev service"]
end

node_person(("Person"))

node_person -->|"uses"| node_desktop
node_desktop -.->|"invokes commands"| node_tauri
node_tauri -->|"registers commands"| node_desktopapi
node_desktop -->|"opens popup"| node_quicksearch
node_desktop -->|"offers exploration"| node_exploreui
node_exploreui -->|"requests graph data"| node_exploration
node_person -->|"adds folders"| node_indexing
node_service -->|"indexes files"| node_indexing
node_service -->|"converts documents"| node_conversion
node_conversion -->|"uses converter"| node_docling
node_conversion -.->|"uses optionally"| node_mineru
node_service -->|"reads and writes"| node_store
node_service -->|"retrieves evidence"| node_retrieval
node_service -->|"requests answers"| node_models
node_models -->|"scores evidence"| node_jev
node_models -.->|"generates answers"| node_answerprovider
node_service -->|"serves exploration"| node_exploration
node_service -->|"creates notes"| node_notes
node_person -->|"searches terminal"| node_cli
node_cli -.->|"sends requests"| node_server
node_server -->|"dispatches operations"| node_service
node_server -.->|"accesses library"| node_store
node_service -->|"uses MCP tools"| node_mcp
node_service -->|"serves SAG tools"| node_sagmcp
node_person -.->|"clips web pages"| node_clipper

click node_desktop "https://github.com/zleap-ai/sag-wiki/blob/main/src/App.svelte"
click node_quicksearch "https://github.com/zleap-ai/sag-wiki/blob/main/src/QuickSearch.svelte"
click node_exploreui "https://github.com/zleap-ai/sag-wiki/blob/main/src/components/ExploreView.svelte"
click node_tauri "https://github.com/zleap-ai/sag-wiki/blob/main/src-tauri/src/lib.rs"
click node_desktopapi "https://github.com/zleap-ai/sag-wiki/blob/main/src-tauri/src/cli_commands.rs"
click node_indexing "https://github.com/zleap-ai/sag-wiki/blob/main/core/src/indexer.rs"
click node_conversion "https://github.com/zleap-ai/sag-wiki/blob/main/core/src/conversion.rs"
click node_docling "https://github.com/zleap-ai/sag-wiki/blob/main/core/src/docling.rs"
click node_mineru "https://github.com/zleap-ai/sag-wiki/blob/main/core/src/mineru.rs"
click node_retrieval "https://github.com/zleap-ai/sag-wiki/blob/main/core/src/sag2_v10.rs"
click node_models "https://github.com/zleap-ai/sag-wiki/blob/main/core/src/models.rs"
click node_store "https://github.com/zleap-ai/sag-wiki/blob/main/core/src/store.rs"
click node_notes "https://github.com/zleap-ai/sag-wiki/blob/main/core/src/notes.rs"
click node_exploration "https://github.com/zleap-ai/sag-wiki/blob/main/core/src/explore.rs"
click node_service "https://github.com/zleap-ai/sag-wiki/blob/main/core/src/service.rs"
click node_mcp "https://github.com/zleap-ai/sag-wiki/blob/main/core/src/mcp.rs"
click node_sagmcp "https://github.com/zleap-ai/sag-wiki/blob/main/core/src/sag_mcp.rs"
click node_server "https://github.com/zleap-ai/sag-wiki/blob/main/core/src/server.rs"
click node_cli "https://github.com/zleap-ai/sag-wiki/blob/main/cli/src/main.rs"
click node_clipper "https://github.com/zleap-ai/sag-wiki/blob/main/browser-extension/src/background.js"

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_desktop,node_quicksearch,node_exploreui,node_tauri,node_desktopapi toneBlue
class node_indexing,node_conversion,node_docling,node_mineru,node_retrieval,node_models,node_store,node_notes,node_exploration,node_service toneAmber
class node_mcp,node_sagmcp,node_server,node_cli,node_clipper toneMint
class node_answerprovider,node_jev toneRose
class node_person toneIndigo
```

## Components

### Desktop experience

- [Desktop interface](https://github.com/zleap-ai/sag-wiki/blob/main/src/App.svelte): `src/App.svelte`
- [Quick Search](https://github.com/zleap-ai/sag-wiki/blob/main/src/QuickSearch.svelte): `src/QuickSearch.svelte`
- [Relationship explorer](https://github.com/zleap-ai/sag-wiki/blob/main/src/components/ExploreView.svelte): `src/components/ExploreView.svelte`
- [Desktop bridge](https://github.com/zleap-ai/sag-wiki/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`
- [Desktop commands](https://github.com/zleap-ai/sag-wiki/blob/main/src-tauri/src/cli_commands.rs): `src-tauri/src/cli_commands.rs`

### Knowledge engine

- [Folder indexing](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/indexer.rs): `core/src/indexer.rs`
- [Document conversion](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/conversion.rs): `core/src/conversion.rs`
- [Docling conversion](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/docling.rs): `core/src/docling.rs`
- [MinerU conversion](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/mineru.rs): `core/src/mineru.rs`
- [SAG2 retrieval](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/sag2_v10.rs): `core/src/sag2_v10.rs`
- [Model services](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/models.rs): `core/src/models.rs`
- [Local library store](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/store.rs): `core/src/store.rs`
- [Notes](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/notes.rs): `core/src/notes.rs`
- [Document exploration](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/explore.rs): `core/src/explore.rs`
- [Application service](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/service.rs): `core/src/service.rs`

### Agent and capture access

- [MCP tools](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/mcp.rs): `core/src/mcp.rs`
- [SAG MCP interface](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/sag_mcp.rs): `core/src/sag_mcp.rs`
- [SAG request server](https://github.com/zleap-ai/sag-wiki/blob/main/core/src/server.rs): `core/src/server.rs`
- [CLI](https://github.com/zleap-ai/sag-wiki/blob/main/cli/src/main.rs): `cli/src/main.rs`
- [Browser clipper](https://github.com/zleap-ai/sag-wiki/blob/main/browser-extension/src/background.js): `browser-extension/src/background.js`

### External services

- **Answer model**
- **Jev service**

### Other components

- **Person**

## Connections

- Person → Desktop interface: uses (evidence: `README.md`)
- Desktop interface → Desktop bridge: invokes commands
- Desktop bridge → Desktop commands: registers commands (evidence: `src-tauri/src/lib.rs`)
- Desktop interface → Quick Search: opens popup (evidence: `src/App.svelte`)
- Desktop interface → Relationship explorer: offers exploration (evidence: `src/App.svelte`)
- Relationship explorer → Document exploration: requests graph data (evidence: `src/components/ExploreView.svelte`)
- Person → Folder indexing: adds folders (evidence: `README.md`)
- Application service → Folder indexing: indexes files (evidence: `core/src/service.rs`)
- Application service → Document conversion: converts documents (evidence: `core/src/service.rs`)
- Document conversion → Docling conversion: uses converter (evidence: `core/src/docling.rs`)
- Document conversion → MinerU conversion: uses optionally
- Application service → Local library store: reads and writes (evidence: `core/src/service.rs`)
- Application service → SAG2 retrieval: retrieves evidence (evidence: `core/src/service.rs`)
- Application service → Model services: requests answers (evidence: `core/src/service.rs`)
- Model services → Jev service: scores evidence (evidence: `core/src/models.rs`)
- Model services → Answer model: generates answers
- Application service → Document exploration: serves exploration (evidence: `core/src/service.rs`)
- Application service → Notes: creates notes (evidence: `core/src/service.rs`)
- Person → CLI: searches terminal (evidence: `README.md`)
- CLI → SAG request server: sends requests
- SAG request server → Application service: dispatches operations (evidence: `core/src/server.rs`)
- SAG request server → Local library store: accesses library
- Application service → MCP tools: uses MCP tools (evidence: `core/src/service.rs`)
- Application service → SAG MCP interface: serves SAG tools (evidence: `core/src/service.rs`)
- Person → Browser clipper: clips web pages
