# gd4ai/obsidian-llm-wiki architecture

> Architecture diagram of the GitHub repository gd4ai/obsidian-llm-wiki, 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/gd4ai/obsidian-llm-wiki
- Repository: https://github.com/gd4ai/obsidian-llm-wiki

## Overview

Karpathy LLM Wiki is an Obsidian plugin that turns vault notes and documents into a linked wiki, then answers conversational questions over that wiki without embeddings. Its primary workflow is user-triggered ingest, source analysis and page generation, followed by graph-based retrieval and an LLM response. Lint/repair, schema management, PDF conversion, settings, and provider authentication are substantial companion capabilities. Edges reflect the sampled calls and the documented retrieval design; unsampled links are omitted where ownership is not established.

Main entry points: [`src/wiki/wiki-engine.ts`](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/wiki-engine.ts) (Wiki engine), [`src/wiki/query-engine/QueryView-class.ts`](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/query-engine/QueryView-class.ts) (Query view), [`src/main.ts`](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/main.ts) (Plugin commands), [`src/llm-sdk/create-llm-client.ts`](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/llm-sdk/create-llm-client.ts) (Provider factory)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_plugin["Obsidian Plugin"]
  node_entry["Plugin commands<br/>[main.ts]"]
  node_ingest["Ingest commands<br/>[ingest-commands.ts]"]
  node_settings["Plugin settings<br/>[settings.ts]"]
  node_history["History and reports<br/>[index.ts]"]
end

subgraph group_wiki["Wiki Creation"]
  node_engine["Wiki engine<br/>[wiki-engine.ts]"]
  node_analysis["Source analysis<br/>[source-analyzer.ts]"]
  node_conversion["Document conversion<br/>[pdf-converter.ts]"]
  node_factory["Page generation<br/>[index.ts]"]
  node_schema["Wiki schema<br/>[schema-manager.ts]"]
  node_index["Wiki index<br/>[index-generator.ts]"]
end

subgraph group_query["Graph Retrieval"]
  node_queryview["Query view<br/>[QueryView-class.ts]"]
  node_seeds["PPR seed selection<br/>[select-seeds.ts]"]
  node_pages["Relevant pages<br/>[load-pages.ts]"]
  node_context["Context assembly"]
  node_answer["LLM answer<br/>[QueryView-class.ts]"]
end

subgraph group_providers["LLM Providers"]
  node_clientfactory["Client factory"]
  node_wrapper["Task settings"]
  node_sdkfactory["Provider factory"]
  node_codex["Codex authentication<br/>[auth-manager.ts]"]
end

subgraph group_maintenance["Wiki Maintenance"]
  node_lint["Lint and repair<br/>[controller.ts]"]
  node_contradictions["Contradiction checks<br/>[contradictions.ts]"]
end

node_user(("Vault user"))
node_obsidian[("Obsidian vault")]
node_provider{{"LLM providers"}}

node_user -->|"invokes"| node_entry
node_entry -->|"dispatches"| node_ingest
node_ingest -->|"starts ingest"| node_engine
node_engine -->|"analyzes source"| node_analysis
node_engine -->|"converts documents"| node_conversion
node_engine -->|"generates pages"| node_factory
node_engine -->|"uses schema"| node_schema
node_engine -->|"generates index"| node_index
node_engine -->|"reads and writes"| node_obsidian
node_user -->|"asks question"| node_queryview
node_queryview -->|"selects seeds"| node_seeds
node_queryview -->|"loads pages"| node_pages
node_queryview -->|"assembles context"| node_context
node_queryview -->|"requests answer"| node_clientfactory
node_queryview -->|"reads wiki"| node_obsidian
node_user -->|"runs maintenance"| node_lint
node_lint -->|"checks contradictions"| node_contradictions
node_lint -->|"repairs pages"| node_obsidian
node_entry -->|"creates client"| node_clientfactory
node_clientfactory -->|"wraps client"| node_wrapper
node_wrapper -->|"creates provider client"| node_sdkfactory
node_sdkfactory -->|"sends model requests"| node_provider
node_sdkfactory -.->|"uses Codex auth"| node_codex
node_user -->|"configures"| node_settings
node_user -->|"views reports"| node_history

click node_entry "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/main.ts"
click node_ingest "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/main-commands/ingest-commands.ts"
click node_engine "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/wiki-engine.ts"
click node_analysis "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/source-analyzer.ts"
click node_conversion "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/core/pdf-converter.ts"
click node_factory "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/page-factory/index.ts"
click node_schema "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/schema/schema-manager.ts"
click node_index "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/engine-internals/index-generator.ts"
click node_queryview "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/query-engine/QueryView-class.ts"
click node_seeds "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/query-engine/pipeline/select-seeds.ts"
click node_pages "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/query-engine/pipeline/load-pages.ts"
click node_context "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/query-engine/pipeline/assemble-context.ts"
click node_answer "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/query-engine/QueryView-class.ts"
click node_lint "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/lint/controller.ts"
click node_contradictions "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/contradictions.ts"
click node_clientfactory "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/core/create-plugin-llm-client.ts"
click node_wrapper "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/llm-client-wrapper.ts"
click node_sdkfactory "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/llm-sdk/create-llm-client.ts"
click node_codex "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/llm-sdk/openai-codex/auth-manager.ts"
click node_settings "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/ui/settings.ts"
click node_history "https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/ui/history-modal/index.ts"

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_entry,node_ingest,node_settings,node_history,node_user toneBlue
class node_engine,node_analysis,node_conversion,node_factory,node_schema,node_index,node_obsidian toneAmber
class node_queryview,node_seeds,node_pages,node_context,node_answer toneMint
class node_clientfactory,node_wrapper,node_sdkfactory,node_codex toneRose
class node_lint,node_contradictions,node_provider toneIndigo
```

## Components

### Obsidian Plugin

- [Plugin commands](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/main.ts): `src/main.ts`
- [Ingest commands](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/main-commands/ingest-commands.ts): `src/main-commands/ingest-commands.ts`
- [Plugin settings](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/ui/settings.ts): `src/ui/settings.ts`
- [History and reports](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/ui/history-modal/index.ts): `src/ui/history-modal/index.ts`

### Wiki Creation

- [Wiki engine](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/wiki-engine.ts): `src/wiki/wiki-engine.ts`
- [Source analysis](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/source-analyzer.ts): `src/wiki/source-analyzer.ts`
- [Document conversion](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/core/pdf-converter.ts): `src/core/pdf-converter.ts`
- [Page generation](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/page-factory/index.ts): `src/wiki/page-factory/index.ts`
- [Wiki schema](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/schema/schema-manager.ts): `src/schema/schema-manager.ts`
- [Wiki index](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/engine-internals/index-generator.ts): `src/wiki/engine-internals/index-generator.ts`

### Graph Retrieval

- [Query view](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/query-engine/QueryView-class.ts): `src/wiki/query-engine/QueryView-class.ts`
- [PPR seed selection](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/query-engine/pipeline/select-seeds.ts): `src/wiki/query-engine/pipeline/select-seeds.ts`
- [Relevant pages](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/query-engine/pipeline/load-pages.ts): `src/wiki/query-engine/pipeline/load-pages.ts`
- [Context assembly](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/query-engine/pipeline/assemble-context.ts): `src/wiki/query-engine/pipeline/assemble-context.ts`
- [LLM answer](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/query-engine/QueryView-class.ts): `src/wiki/query-engine/QueryView-class.ts`

### LLM Providers

- [Client factory](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/core/create-plugin-llm-client.ts): `src/core/create-plugin-llm-client.ts`
- [Task settings](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/llm-client-wrapper.ts): `src/llm-client-wrapper.ts`
- [Provider factory](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/llm-sdk/create-llm-client.ts): `src/llm-sdk/create-llm-client.ts`
- [Codex authentication](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/llm-sdk/openai-codex/auth-manager.ts): `src/llm-sdk/openai-codex/auth-manager.ts`

### Wiki Maintenance

- [Lint and repair](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/lint/controller.ts): `src/wiki/lint/controller.ts`
- [Contradiction checks](https://github.com/gd4ai/obsidian-llm-wiki/blob/main/src/wiki/contradictions.ts): `src/wiki/contradictions.ts`

### Other components

- **Vault user**
- **Obsidian vault**
- **LLM providers**

## Connections

- Vault user → Plugin commands: invokes
- Plugin commands → Ingest commands: dispatches
- Ingest commands → Wiki engine: starts ingest
- Wiki engine → Source analysis: analyzes source
- Wiki engine → Document conversion: converts documents
- Wiki engine → Page generation: generates pages
- Wiki engine → Wiki schema: uses schema
- Wiki engine → Wiki index: generates index
- Wiki engine → Obsidian vault: reads and writes
- Vault user → Query view: asks question
- Query view → PPR seed selection: selects seeds
- Query view → Relevant pages: loads pages
- Query view → Context assembly: assembles context
- Query view → Client factory: requests answer
- Query view → Obsidian vault: reads wiki
- Vault user → Lint and repair: runs maintenance
- Lint and repair → Contradiction checks: checks contradictions
- Lint and repair → Obsidian vault: repairs pages
- Plugin commands → Client factory: creates client
- Client factory → Task settings: wraps client
- Task settings → Provider factory: creates provider client
- Provider factory → LLM providers: sends model requests
- Provider factory → Codex authentication: uses Codex auth
- Vault user → Plugin settings: configures
- Vault user → History and reports: views reports
