Karpathy LLM Wiki

by Greener-Dalii
5
4
3
2
1
Score: 62/100

Description

The Karpathy LLM Wiki plugin turns notes into an interlinked wiki and lets you query that graph from a side panel inside the editor. It extracts entities and concepts into separate pages, adds aliases, builds bidirectional wiki links and maintains an index, while keeping source notes unchanged. Retrieval uses a five stage cascade with lexical matching, LLM generated keywords, local substring scanning, fallback reseeding and Personalized PageRank over wiki links instead of embeddings or a vector database. The plugin also includes linting, duplicate and contradiction checks, smart repair flows, batch ingestion, PDF ingestion with provider specific and local OCR paths and support for many cloud and local model providers. Query answers link back into the wiki and PDF markdown can be cached under .obsidian/plugins/karpathywiki/pdf-cache/.

Reviews

No reviews yet.

Stats

486
stars
37,529
downloads
62
forks
80
days
56
days
60
days
290
total PRs
8
open PRs
26
closed PRs
256
merged PRs
192
total issues
28
open issues
164
closed issues
1,042
commits

RequirementsExperimental

  • A configured LLM provider, such as OpenAI, Anthropic, Ollama, LM Studio or another compatible endpoint

Latest Version

2 months ago

Changelog

🌟 Karpathy LLM Wiki v1.26.4

Highlights

A PATCH release that closes six silent-bug-class fixes that surfaced under v1.26.x — most of them invisible to the user until a vault grew past 2,000 pages or a wire-shape changed. The biggest single win: the prompt cache finally lands on the user-message block that Anthropic's render order iterates (not the system block that fell below the 1024-token cache floor). One PATCH-only release train (v1.26.3 → v1.26.4) with 20 merge commits / 3434 tests / +3786 / −1816. No breaking changes, no new required settings, no migration.

  • cache_control finally lands on the user-message prefix that Anthropic's prompt-caching render order actually iterates — Issue #449 (PR #464). Anthropic prompt caching renders tools → system → messages and matches by prefix. DocTpoint's blocking review correctly identified that the v1.26.0 wiring put the marker on the system block (a few KB — below Anthropic's 1024-token cache floor); the 75K-char user-message prefix that staticPrefix.length actually points at fell after the marker and was never cached. Fix: cacheBreakpoint now splits the first user message's text content at source-analyzer.ts:404's staticPrefix.length and emits [prefix + cache_control, suffix] as two text parts — Anthropic sees the marker on the block the offset points at, the prefix cache hits on the next call in the batch. The system block is left as a plain string (truthy-check drops system: '' from the wire, eliminating the latent "empty system block consumes one of the four cache breakpoints" risk). Measured on Anthropic Claude Sonnet 4 (cache_control tier): cache-hit rate on the 75K-char user-message prefix went from 0% (marker on wrong block) to >95% on calls 2..N of the batch. Branch D fix included: system ? { system } : {} truthy-check drops the empty-system block from the wire entirely. 5 Issue #449 tests rewritten + 1 new Branch D test added.

  • Per-note extraction prompt's slug-list block stops re-sorting on every note — Issue #452 (PR #483). The per-note extraction prompt carries a ~24.5K-token page-list block that lists every slug the run has touched so far. As the run progressed, every new note triggered a full re-sort of this list (a single fresh slug could bubble to the top, invalidating Anthropic's prompt cache for every subsequent note in the batch). Fix: freeze the slug catalog at run start. The list only grows at the end (first-seen order) instead of re-sorting on every note. Measured on the LM Studio (gemma-4-26b-a4b-qat, 2844 slugs) benchmark: 23.50s → 4.39s (4.4×) when new slugs sort into the list; 0.69s when unchanged (cache hit preserved across the batch). Companion to #449: the catalog is now prefix-stable, so the cache_control marker that #449 introduces lands on a block that actually has a stable prefix to cache. Closes #452.

  • LintReportModal stops dragging the LLM analysis section into the modal body — Issue #473 (PR #494). analysis-phase.ts:118 was reading the full wiki/index.md (whose size tracks the vault) on every modal open. The LLM analysis section was supposed to live in the Query UI reasoning panel — not the modal — but the import path put the entire file content into the modal's additionalContext payload. Fix: remove the analysis-section import from the modal entirely; restore the Query UI reasoning render path. Modal no longer grows with vault size (a 5,000-page vault was triggering a 12s modal-open hitch). Closes #473.

  • Per-step output mode + thinking policy — Issue #481 (PR #490). On an openai-compatible wire the two are not independent: a response_format on the request sets reasoning_tokens to 0 regardless of reasoning_effort, disableThinking, or the server's own switch. "Let this step think" is therefore not a flag but a decision about the output mode, and it can only be made per step — the pipeline's schema callers (extract, lemma-classify, merge-triage, the dedup pair) and its prose callers (page-generate, source-page, merge-body, related-page, complementary, pdf-convert) want opposite things from the same setting. Fix: task-policy.ts exposes task=mode[:thinking] parsing and a resolveTaskPolicy(map, task) lookup that returns {outputMode, thinking}. Default = 'default' on both axes, which means the OutputModeProber picks the mode exactly as before and the call site's own enableThinking argument passes through untouched. Per-call policy (PR #411 F5-B): source-analyzer parent (source-analyzer.ts:386) honors; JSON-repair (source-analyzer.ts:417) does NOT honor — repair needs reasoning budget to understand broken-JSON semantics, disabling produces structurally-valid-but-wrong content. The axis independence lets future comparison runs compare output mode + thinking as a single arm instead of O(3 modes × 4 thinkings) of separate rebuilds. Closes #481.

  • Ingest payload stops growing with vault size — Issue #482 (PR #484, Stages 1+2). Stages 1 (source analysis) and 2 (extraction) were rebuilding the per-page context from the full vault history on every note. The payload grew linearly with vault size and dominated the per-note ingest budget past ~2,000 pages. Fix: Stages 1+2 now trim the per-page context to a stable prefix; later stages no longer rebuild the full vault history. The LLM sees the same per-note content but the request shape is bounded by the static prefix + a per-batch variable suffix (slug catalog + granularity + batchSize + lang hints) — exactly the shape cacheBreakpoint (#449) expects. Closes #482.

  • Contradiction clamping restores withheld content to the user-visible page — Issue #492 (PR #492). clampPageSections was discarding the wholly-withheld sections (when the contradiction record exceeded the 3000-char budget, the tail was silently dropped). Fix: the clamp now uses the section list to keep logical order while still honouring the budget — withheld content is restored to the user-visible page in its original position rather than disappearing from the report. Closes #492.

What's in this release

Fixed

  • cache_control marker landed on the wrong block (Issue #449, PR #464). See Highlights. Anthropic prompt cache hit rate on the 75K-char user-message prefix went from 0% (marker on system block, below 1024-token floor) to >95% on calls 2..N. Branch D fix: empty system: '' no longer consumes an Anthropic cache breakpoint. 5 Issue #449 tests rewritten + 1 new Branch D test. Closes #449.
  • Per-note slug catalog re-sorted on every note (Issue #452, PR #483). See Highlights. LM Studio 2844-slug benchmark: 23.50s → 4.39s (4.4×) when new slugs sort in; 0.69s when unchanged. Companion to #449 — the catalog is now prefix-stable, the cache_control marker that #449 introduces lands on a block with a stable prefix. Closes #452.
  • LintReportModal grew with vault size via full wiki/index.md import (Issue #473, PR #494). See Highlights. analysis-phase.ts:118 read the full index; modal-open hitches hit 12s on a 5,000-page vault. Import path removed; Query UI reasoning restored. Closes #473.
  • openai-compat providers silently set reasoning_tokens: 0 when response_format was on the wire (Issue #481, PR #490). See Highlights. Per-step task=mode[:thinking] policy replaces the global enable-thinking setting. Default = 'default' = today's behaviour, opt-in. JSON-repair (source-analyzer.ts:417) intentionally does NOT honor — repair needs reasoning budget, disabling produces structurally-valid-but-wrong content. Closes #481.
  • Ingest payload grew linearly with vault size (Issue #482, PR #484 Stages 1+2). See Highlights. Per-page context trimmed to stable prefix; LLM sees the same per-note content but the request shape is bounded. Companion to #449 — the request shape matches what cacheBreakpoint expects. Closes #482.
  • Contradiction clamp discarded wholly-withheld sections (Issue #492, PR #492). See Highlights. clampPageSections now uses the section list to keep logical order while honouring the 3000-char budget. Closes #492.

Added

  • src/core/task-policy.ts — per-step output mode + thinking policy. Parse task=mode[:thinking] (e.g. extract=text:on, merge-triage=text:on, page-generate=-:off, *=text:on for run baseline). resolveTaskPolicy(map, task) returns {outputMode, thinking} (lookup order: specific → wildcard → default). thinkingEffort enum distinguishes bounded levels (low/medium/high) from unbounded (on) — measured on gemma-4-26b, unbounded thinking at the extraction step consumed all 16000 tokens of the batch budget and returned nothing, twice. Round-trips through formatTaskPolicyMap for run-manifest stamping.
  • src/llm-sdk/finish-reason.ts — extractReasoningText(reasoning) helper. Centralises the SDK's result.reasoning shape handling (string vs array of {text} parts — Anthropic's shape) across all four SDK clients (anthropic / openai / openai-compat / openai-codex). 7 sites consolidated: anthropic-sdk-client.ts × 2, openai-codex-sdk-client.ts × 1, openai-compat-sdk-client.ts × 4.
  • Three-layer repair for DeepSeek reasoning-model ingest (Issue #474, PR #486). Layer 1: prependReasoningForParse drops prose reasoning_content when visible text is non-empty (fixes the "balanced-JSON finder walks into English text" crash class). Layer 2: case-insensitive \b[Tt]hinking\s*\n regex on the bare Thinking…Response form (fixes LM Studio / DeepSeek capital-T variants). Layer 3: existing reasoning-only guard from PR #488 (#470 follow-up).

Changed

  • extractThinkingBlocks regex is now case-insensitive on the bare Thinking…Response form (post-merge CODE Gate cleanup). LM Studio / DeepSeek reasoning models route chain-of-thought into the visible content channel wrapped in the bare Thinking\n…\nResponse delimiter; capital-T variants were silently missed before. \b[Tt]hinking + \n\s*[Rr]esponse regex now matches Thinking, THINKING, Response, etc.
  • parseTaskPolicySpec rejects empty task names (post-merge CODE Gate cleanup). =mode:thinking (an empty task name with eq === 0) silently passed through before; now throws task policy: empty task name in "<entry>".
  • src/llm-sdk/finish-reason.ts extracted (post-merge CODE Gate cleanup). See Added.

Internal

  • Five-Gate order fix in CI (PR #487). .github/workflows/pr-ci.yml now runs pnpm build BEFORE pnpm test (the test suite contains build-artifact verifications — src/__tests__/llm-sdk/openai-codex-loopback-flow.test.ts:39 reads main.js to assert the esbuild bundle shape). The v1.26.4 PATCH CI caught the order issue on the first PR-487 run.
  • data.json settings key preservation under split-model persistence (Issue #456, PR #462). SettingsTab.hide() per-task model fields (textGenModel / embeddingModel / chatModel) no longer cleared when the commit happens during the same Tick that the user toggles the per-task model switch.
  • Advanced settings propagate to createMessageStream (Issue #451, PR #465). The streaming wrapper (src/llm-client-wrapper.ts:createMessageStream) now inherits advanced-settings injection from createMessage — temperature / top_p / repetitionPenalty / seed no longer dropped on the streaming path (Query Wiki, streaming UI).
  • SourceAnalysis wire schema requires entities + concepts (Issue #463, PR #476). Stops accepting the empty {} shape some providers were emitting under json_schema mode.
  • Lint prompt tag vocab deferral to runtime (PR #460). fillEmptyPage no longer hardcodes a tag constraint that contradicts the runtime vocabulary; the constraint is now read from the same source the runtime uses.

Upgrading from v1.26.3

No migration needed. Replace main.js, manifest.json, and styles.css in your vault's .obsidian/plugins/karpathywiki/ directory. Existing wikis are not touched on upgrade.

What's accepted (and why)

The Obsidian Bot pre-review of the v1.26.4 baseline returned 0 new Error / Warning on touched code (src/). The pre-existing structural warnings on tools/llm-wiki-cli/src/ (static node:* imports, console.log × 48, globalThis shim, .obsidian literal) remain accepted-structural and documented in CLAUDE.md "Bot compliance invariant" per the v1.26.2 baseline.

Installation

  1. From Community Plugins: Obsidian Settings → Community Plugins → Browse → search "Karpathy LLM Wiki"
  2. From Community Plugin Website: community.obsidian.md/plugins/karpathywiki
  3. Manual: Download main.js, manifest.json, styles.css from the release assets

Tests

3434 tests passing (235 files). Up from v1.26.3's 3290 / 230 — +144 tests across the 17 merged PRs (#449 cache_control split, #452 slug catalog stability, #473 modal-import, #481 task-policy, #482 stages 1+2, #492 contradiction clamp, plus 5 UX / setting / lint / CI fixes).

Contributors

  • @green-dalii — Maintainer. PR #462 (Issue #456 data.json per-task model persistence under split-model commit), #464 (Issue #449 cache_control on user-message prefix), #465 (Issue #451 advanced-settings → createMessageStream propagation), #475 (CLAUDE.md slim to process-only), #476 (Issue #463 SourceAnalysis wire schema requires entities + concepts), #486 (Issue #474 three-layer repair for DeepSeek reasoning-model ingest), #487 (Five-Gate CI order fix), #494 (Issue #473 LintReportModal LLM-analysis-section removal), #495 (v1.26.4 release commit).
  • @DocTpoint — Architect-level contributor. PR #460 (lint prompt tag vocab deferral to runtime), #471 (lint dedup ambiguous designator resolver + cross-type filter), #478 (path-resolution ambiguous-fallback alias-latch removal), #483 (Issue #452 slug catalog frozen at run start), #484 (Issue #482 Stages 1+2 ingest payload bounded growth), #488 (Issue #470 reasoning-only guard restoration post-AI-SDK-migration), #490 (Issue #481 per-step output mode + thinking policy), #492 (Issue #492 contradiction clamp restores withheld content).
  • @jameses-cyber — Two diagnostic Issue reports in this cycle: #456 (split-model persistence — SettingsTab.hide() commit-time race cleared per-task model fields) and #473 (LintReportModal grows with vault size via full wiki/index.md import — provided the vault-size repro + the 12s modal-open hitch measurement that pinpointed analysis-phase.ts:118 as the root cause). (Closed by PR #462 and PR #494 respectively.)
  • @JayYa — Reported Issue #474 (DeepSeek reasoning model produces network errors on longer content). The PR #486 three-layer repair (prose reasoning_content drop on visible text, case-insensitive Thinking…Response regex, reasoning-only guard restoration) is a direct response to that report. (Closed by PR #486.)

Full Changelog

https://github.com/green-dalii/obsidian-llm-wiki/compare/1.26.3...1.26.4

README file from

Github

Karpathy LLM Wiki plugin banner — a network of interconnected wiki pages built from your Obsidian notes

🧠 Karpathy LLM Wiki Plugin for Obsidian

An Obsidian plugin that turns your notes into a connected, queryable knowledge base — the Karpathy LLM Wiki idea, built into the editor where you already write.

Obsidian Review Perfect Score • Zero-embedding graph retrieval • 11-language native • Native PDF + images + Office ingest • Works with every provider • Local-first • No backend • GDPR-Friendly

Version License Obsidian Languages Providers Maintenance Build Status Author GitHub Stars Downloads Release Obsidian plugin Ask DeepWiki

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Deutsch | Français | Español | Português | Italiano | Русский

Official Site | Obsidian Marketplace | Blog | Discussions

🤔 Why this plugin? | 🚀 Quick Start | ✨ Features | 🌐 Ecosystem | 🛠️ Headless CLI | 🔍 How Retrieval Works | 🤖 Models | ❓ FAQ

ko-fi ← If this plugin has helped you, feel free to buy me a coffee♥️ or drop a star🌟↗


🤔 Why this plugin?

You write notes. They sit in folders. Finding what relates to what means remembering threads you forgot months ago.

Other open-source reimplementations of Karpathy's LLM Wiki idea exist — but none ships as a one-click Obsidian plugin. Most are CLI tools, Claude Code skills, or separate desktop apps; this one runs inside Obsidian — Graph View, ribbons, command palette included.

How we compare

Karpathy LLM Wiki (this plugin) nashsu / llm_wiki SamurAIGPT / llm-wiki-agent atomicstrata / llm-wiki-compiler
Delivery ✅ One-click Obsidian plugin 🟡 Tauri desktop app 🟡 Claude Code / Codex / OpenCode / Gemini CLI skill 🟡 TypeScript CLI pipeline
Dependencies ✅ None — plugin only 🟡 Python runtime + sqlite 🟡 Claude Code / Codex / OpenCode runtime ❌ Embedding model + vector DB (per their docs)
i18n (UI + wiki output) ✅ 11 languages 🟡 EN / 中文 ❌ EN only ❌ EN only
LLM providers ✅ 16+ (Anthropic, OpenAI, Bedrock, Gemini, DeepSeek, Qwen, Grok, Kimi, GLM, MiniMax, Step, Hunyuan, MiMo, Gemma, Codex OAuth, Ollama, LM Studio, OpenRouter, Anthropic-Compatible, …) 🟡 OpenAI-compatible 🟡 Subscription via Claude Code / Codex 🟡 OpenAI-compatible
Retrieval & query pipeline ✅ PPR + Monte Carlo over [[wiki-link]] graph 🟡 2-hop decay (4-signal heuristic) 🟡 Louvain community detection 🟡 BM25 + semantic over chunks
Graph visualization ✅ Obsidian's native Graph View (built in, zero extra size) 🟡 Custom sigma.js + graphology in desktop app 🟡 vis.js graph.html (separate file) ❌ Read-only browser viewer
Ingest formats ✅ Markdown + PDF + images + Office (DOCX/PPTX/XLSX) — one switch flips between native PDF (Anthropic / OpenAI / Bedrock / Gemini) and the built-in MinerU multi-format backend 🟡 Markdown + PDF 🟡 Markdown / code files only 🟡 Markdown only

Three we left off the table: sdyckjq/llm-wiki-skill was a Codex skill that 404s today (deleted by author); atomicstrata is included even though its retrieval is chunk-based because it's the most active TypeScript alternative; nashsu ships the largest user base of the three (10k+ stars, others 2k+) but is a Tauri desktop app, not an Obsidian plugin.

Three things we chose on purpose, not by accident

  • 🪟 Obsidian is the runtime. No terminal, no separate app, no Docker, no Python. Install from Community Plugins, click Ingest, the wiki lives in your vault from the first second. Obsidian's native Graph View renders your [[wiki-link]] graph — built in, zero extra bundle size.
  • 🧭 Clean and self-contained. Zero dependencies. No embedding model, no vector database, no pip package — a single plugin that reads your notes, talks to an LLM, and writes wiki pages. Everything lives inside Obsidian.
  • 🔌 Any model you already pay for. Anthropic, Bedrock, OpenAI, ChatGPT Plan (Codex OAuth), Gemini, DeepSeek, Qwen, Grok, Kimi, GLM, MiniMax, Step, Hunyuan, MiMo, Gemma, Ollama, LM Studio, OpenRouter, Anthropic-compatible, custom endpoint — sixteen-plus providers, none of them required to have an embedding endpoint.

🎯 Is it for me?

✅ Yes, if you:

  • Want a 5-minute setup, not a 5-hour project. Install from Community Plugins → pick a provider → Ingest one note. No CLI, no Python, no separate runtime, no vector DB. You see wiki pages in wiki/ within seconds.
  • Want something clean and self-contained. The plugin has exactly zero external dependencies: no embedding model, no vector database, no pip package, no Docker container. It's a single Obsidian plugin that reads your notes, talks to an LLM, and writes wiki pages into your vault. Everything lives inside Obsidian.
  • Want a queryable chat that answers from your notes — not the internet — with every answer carrying [[wiki-links]] back into your knowledge graph.
  • Care about data sovereignty — runs fully local with Ollama or LM Studio, never touching the internet.
  • Write in or read from any of 10 supported languages — the UI and wiki output language are independent (your wiki can be in Chinese while the interface is in English).
  • Maintain the graph by writing [[wiki-links]] — every link you write already enriches retrieval; no separate tagging/embedding/indexing step.
  • Want one-click maintenance — Lint health scan + Smart Fix All keep duplicates, dead links, and orphan pages in check without you hand-curating.

❌ No, if you:

  • Want a general-purpose ChatGPT replacement — answers come from your vault only, not the internet.
  • Need RAG over large external corpora (Confluence, Notion, arXiv, scraped web pages) — the plugin ingests your vault plus standalone PDF/Office files; bulk external-corpus RAG is out of scope by design.
  • Want a hosted SaaS with team collaboration — there's no backend, no server, no shared state; everything runs locally inside your Obsidian.

🚀 Quick Start

  1. Install. Obsidian → Settings → Community plugins → Browse → search "Karpathy LLM Wiki" → Install → Enable. Or visit the Community Plugin page and click Add to Obsidian.

  2. Configure a provider. Open Settings → Karpathy LLM Wiki → pick a provider (OpenAI, Anthropic, Ollama, ChatGPT Plan (Codex OAuth), etc.) → enter API key (not needed for local) → click Test Connection → Save.

  3. Ingest one note. Two ways:

    • ⌨️ Keyboard: Cmd+P/Ctrl+P → "Ingest single source" → pick any Markdown (or PDF, v1.25.0+) file.
    • 🖱️ Toolbar icon: Click the sticker icon in Obsidian's left ribbon to instantly ingest the currently-open note — no menu hunting.

    Your first wiki pages appear in wiki/sources/, wiki/entities/, wiki/concepts/ within seconds.

  4. Query your wiki. Two ways:

    • ⌨️ Keyboard: Cmd+P/Ctrl+P → "Query wiki".
    • 🖱️ Toolbar icon: Click the message-circle icon in Obsidian's left ribbon.

    A right-docked side panel opens (Copilot-style) where you can chat with your wiki. Answers carry [[wiki-links]] back into your knowledge graph.

Right-docked Query Wiki side panel in Obsidian showing a chat interface with wiki-link answers back to your knowledge graph

That's it. The plugin modifies nothing in your original notes — only creates new pages under wiki/. Both Ingest and Query wiki are pinned to the left ribbon for one-click access anytime. (Cmd on macOS, Ctrl on Windows/Linux.)

Core commands

Command What it does
📥 Ingest single source Cmd+P/Ctrl+P → "Ingest single source" — pick a Markdown or PDF (v1.25.0+) file, get entity/concept/wiki pages. Also: 🖱️ ribbon sticker icon on the active note.
📂 Ingest from folder Cmd+P/Ctrl+P → "Ingest from folder" — batch-ingest every note in a folder, with smart batch skip
📑 Ingest multiple files Cmd+P/Ctrl+P → "Ingest multiple files" — pick a subset via a two-pane file tree (with live queue + per-file cancel)
🔍 Query wiki Cmd+P/Ctrl+P → "Query wiki" — chat with your wiki in a right-docked side panel; answers carry [[wiki-links]]. Also: 🖱️ ribbon message-circle icon.
🛠️ Lint wiki Cmd+P/Ctrl+P → "Lint wiki" — full health scan: duplicates, dead links, empty pages, orphans, missing aliases, contradictions
⚡ Smart Fix All inside Lint Modal — one-click causal-order repair with per-phase report
📋 Regenerate index Cmd+P/Ctrl+P → "Regenerate index" — rebuild wiki/index.md with current pages and aliases
⏹ Cancel Cmd+P/Ctrl+P → "Cancel current ingestion" or click the status bar — stops cleanly at the next batch boundary
📊 Ingestion history Cmd+P/Ctrl+P → "View operation history" — searchable UI for past ingestions, lint reports, maintenance runs

Command panel — all LLM Wiki commands live in Obsidian's command palette

Before After
notes/machine-learning.md (a flat file) wiki/concepts/supervised-learning.md with [[bidirectional links]], aliases, source attribution, and an entry in wiki/index.md

📖 Walkthroughs in GitHub Discussions → Guides. Found it useful? Star the repo to follow releases.


✨ Features

📚 Knowledge quality

  • 🔍 Entity & concept extraction — LLM extracts entities (people, orgs, products, events) and concepts (theories, methods, terms) into standalone pages. Granularity is configurable (Minimal → Fine, plus Custom) so you trade cost vs. depth.
  • 🏷️ Mandatory aliases — every page ships with at least one alias (translation, abbreviation, variant) so cross-language duplicate detection works.
  • 🔄 Tiered duplicate detection — Tier 1 (direct name match: cross-language, abbreviation, high-similarity titles) is always verified; Tier 2 (shared links, medium similarity) fills remaining token budget.
  • 🧩 Smart merge & contradiction state — duplicates merge while preserving aliases; contradictions are flagged with source attribution; reviewed: true pages are protected from overwrite.
  • 🎨 One tag vocabulary, yours — the tags a page may carry come from three places you control: the nested tags of your notes, the nested tags already on wiki pages, and the list in Settings → Wiki → Tag Vocabulary → Custom (the place for a term no note carries yet). Prompt, write gate, lint and retag all read this one list, so what the model is offered is exactly what lands on disk; a value outside it is dropped, never written. Source pages carry it too, next to their form tag. Small/local models still drift (about one in ten returns the model's built-in taxonomy) — the gate catches it, and Lint reports a page left without tags. Design anchor: Issue #328.

📄 Document / PDF / Image ingest

Five on-ramps, switchable per ingest:

  1. 🆕 Built-in MinerU backend (v1.27.0, #404) — Settings → Wiki Configuration → Markdown Conversion Backend → MinerU. PDF + images (PNG/JPG/JPEG/JP2/WebP/GIF/BMP) + Office (DOC/DOCX/PPT/PPTX/XLS/XLSX) through MinerU's Precise parser. Token in Obsidian SecretStorage. Best path for scientific papers, scanned documents, and Office files where layout preservation matters. Server caps: 200 MB / 200 pages per PDF, 256 MB / 10,000 files per archive.
  2. ☁️ Cloud providers with native PDF — Anthropic, OpenAI, Google Gemini, and AWS Bedrock (Anthropic + OpenAI variants) read PDFs as file parts out of the box. No setup beyond provider selection.
  3. 🖥️ Local OCR on Apple Silicon — oMLX bundles Microsoft Markitdown as a built-in PDF→Markdown backend. Enable Markitdown in oMLX, load Baidu Unlimited-OCR (3B / 570M-active, open-sourced 2026-06) as the vision model, point the plugin at oMLX as a Custom OpenAI-Compatible provider, turn on Force PDF Support, pick the multimodal model oMLX is serving. The PDF never leaves your machine.
  4. 🛠️ Third-party extractor (MinerU online UI) — use the MinerU Extractor online service for a quick manual UI when you don't want to wire up an API token. Download the converted .md, drop it in your vault outside the wiki folder, and ingest as a regular Markdown note.
  5. 🔌 Force PDF Support — for any other OpenAI/Anthropic-compatible endpoint that accepts file parts, the plugin attempts the call (Settings → LLM Configuration → Advanced). The endpoint decides; failures surface as a localized Notice.
  6. 🖼️ Embedded Markdown images — turn on Analyze embedded images during Markdown ingestion in Advanced settings to analyze every eligible local ![[image.png]] and ![alt](https://raw.githubusercontent.com/green-dalii/obsidian-llm-wiki/HEAD/image.png) embed. Each image is analyzed with its nearest Markdown paragraphs, sent in 20 MiB visual-evidence packages, and capped at 10 MiB; remote URLs are never downloaded. For testable per-image output, optionally enable Save embedded image visual evidence to source page to add a collapsible audit section to the generated source page.

Caveat for Office formats: Obsidian does not natively render .docx / .xlsx / .pptx (file-formats), so the practical workflow for Office files is: MinerU converts to .md, the plugin ingests that .md into wiki pages, and the original Office file is kept around for reference. Use a community plugin like Pandoc Plugin / Docxer / Md Importer / Office Reader if you need to inline-preview Office files.

Plumbing shared across all paths:

  • 🗄️ Bounded cache — .obsidian/plugins/karpathywiki/pdf-cache/ stores converted Markdown keyed by content hash + model + converter version; 100 MB total / 1000 entries / 10 MB single-entry caps with LRU-by-mtime eviction.
  • 📝 Optional vault sidecar — Settings → Wiki Configuration → Wiki Folder → Write PDF Markdown to Vault writes <basename>.pdf.md next to the source PDF (off by default — cache-only is the default).
  • 🛡️ Verbatim transcriber prompt — OCR-style conversion with [illegible] / [figure: ...] anti-hallucination markers; markdown-fence-wrapping from small local models is auto-cleaned before cache write.
  • 🔁 Source-page verbatim quotes (v1.27.0, #496) — every generated sources/<slug>.md page now carries a Mentions in Source section built from the same verbatim quotes the extraction captured per entity/concept (the prose the model already proved it could see), so the underlying document is the one wiki page with a real, grounded trail back to its source text.

📖 Full setup walkthroughs for all paths (cloud providers, oMLX hardware tiers, MinerU installation, cache housekeeping) → docs/PDF-OCR-GUIDE.md

💬 Query & maintenance

  • 🧭 5-stage PPR cascade — see How retrieval works. Personalized PageRank over [[wiki-link]] gives graph-aware multi-hop context.
  • 🪟 Right-docked side panel — Query Wiki opens in a Copilot-style right sidebar leaf (v1.22.1+) instead of a centered modal.
  • 🔍 Lint health scan — single command catches: duplicates, dead links, empty pages, orphans, missing aliases, contradictions.
  • ⚡ Smart Fix All — one-click causal-order repair: fill aliases → merge duplicates → fix dead links → link orphans → expand empty pages, with per-phase report.
  • 🆕 Fix Dead Links leave-it outcome (v1.27.0, #485) — Settings → Advanced → Create Stubs for Unresolvable Links (default ON) lets you opt out of empty placeholder pages: when off, the dead link stays visible in every lint report until a real source defines it, and ingest creates pages through normal channels. The never-LLM-expand gate from #197 is unchanged — the new control only governs whether the stub page is written at all.
  • 📊 Operation history panel — searchable, filterable UI for past ingestions, lint reports, and maintenance runs.
  • 🛡️ Pre-ingest gate — empty / whitespace / frontmatter-only notes are rejected before any LLM call; content-hash dedup catches identical files across paths.
  • 🆕 Ingest candidate gate (v1.27.0, #514 / PR #521) — opt-in toggle (skipMentionOnlyCandidates, default off, Settings → Advanced). For sources whose language has a measured profile (de measured; en/fr/es/pt/nl/ko estimated with pinned edge cases; zh/ja character-script thresholds unmeasured), candidates named only inside parentheses / enumerations / short list items are pruned before they cost a page plus dedup and generation calls. Cross-language notes are not gated; wiki languages without a profile report once per ingest and never silently skip.
  • 🆕 Per-step task policies (v1.27.0, #525 / #490) — LLM Advanced → Task Policies field; override the per-step text-mode/thinking setting without code changes. Built-in baseline stays intact for steps you don't list.

🔒 Privacy

  • 🚫 No backend, no tracking, no analytics. Runs entirely inside Obsidian. Network is used only to communicate with the LLM provider you configure.
  • 📁 Source files are read-only. The plugin never modifies your original vault notes — only creates new pages under wiki/.
  • 🦙 Full local mode. Ollama, LM Studio, or any local OpenAI-compatible endpoint → your notes never leave your machine.
  • 🔐 Minimal permissions. Vault file access for wiki management. Clipboard access only when you click the "Copy" button in the Query modal.

🦙 Local-first

  • 🖥️ Ollama, LM Studio, OpenRouter, custom endpoint — out-of-the-box. Local models work for query (smaller context windows); ingest on a 2,000-page vault usually needs a long-context cloud model.
  • 📄 PDF OCR path is fully local on Apple Silicon — see Document / PDF / Image ingest above.
  • 🔐 ChatGPT Plan (Codex OAuth) — desktop loopback or mobile device-code; credentials live only in Obsidian SecretStorage. (See Anthropic vs OpenAI vs Codex OAuth below for the full provider-boundary explanation.)

🌐 Language

  • 🌍 11 UI languages — English, 简体中文, 繁體中文, 日本語, 한국어, Deutsch, Français, Español, Português, Italiano, Русский. UI and wiki-output language are independent — your wiki can be Chinese while the interface is English.
  • 📚 11 wiki-output languages — same set; pick in Settings → Wiki Configuration. Custom input option for ad-hoc prompts.
  • All UI strings translated per locale — every label, modal, and notice. Adding a 12th language is contributor-driven (PR #159 pattern).
  • 🖼 Embedded image analysis during Markdown ingest — opt-in (Analyze embedded images during Markdown ingestion, off by default). Every eligible local ![[…]] / ![…](https://raw.githubusercontent.com/green-dalii/obsidian-llm-wiki/HEAD/…) embed in a note is resolved through Obsidian and analysed together with its neighbouring paragraphs, in 20 MiB packages; each image is capped at 10 MiB, GIFs send a static first frame, and remote URLs are never downloaded.
  • 🔧 Custom Headers per provider — a free-text field directly below the API Base URL. One Name: value per line, sent with every request. Ships with an OpenCode preset and a (Responses) variant for endpoints that speak /v1/responses.
  • 📡 A stream that survives a blocked origin — when a cross-origin request is refused, the stream is retried over a desktop node:https transport instead of degrading to a buffered answer, and a failed fallback is recorded rather than swallowed.

🌐 Ecosystem

The plugin composes with the rest of your Obsidian stack — each tool below plugs into the [[wiki-link]] graph without code changes.

  • 📄 MinerU multi-format backend (built-in since v1.27.0) — what used to be a separate CLI/UI step is now a plugin switch; see Document / PDF / Image ingest for the full path table. The MinerU online service remains available for users who prefer a quick UI over an API token; self-host MinerU is also an option.
  • 🕸️ Obsidian Graph View — open the native graph on any wiki page; every [[wiki-link]] becomes a node, every back-link an edge. Built in, zero extra bundle size.
  • ✂️ Obsidian Web Clipper — official browser extension. Save web pages (articles, blog posts, Reddit threads, Hacker News, recipes, research papers, YouTube transcripts via Interpreter) into any folder of your vault, then run the plugin's Ingest from folder command to batch-extract entities and concepts.
  • 📊 Dataview — query the wiki like a database with DQL (LIST FROM "wiki/entities" WHERE contains(tags, "person")) or JS API. The plugin writes standard frontmatter (tags:, type:, aliases:) on every page, so Dataview queries work out of the box.
  • 🌿 Git — version your vault (any Git client). The plugin never rewrites your source files; only creates new pages under wiki/, so git diff cleanly separates your edits from LLM-generated content.
  • 🎞️ Marp Slides — turn any Obsidian note into slide decks via Marp frontmatter (marp: true). Wiki pages are pure Markdown, so they render as slides without extra conversion.
  • 🖼️ Canvas — Obsidian's native infinite canvas. Drag wiki cards onto a Canvas to assemble study guides, mind maps, or research overviews from [[wiki-links]] without leaving the vault.
  • 🎤 Obsidian Nous — companion plugin for local voice memo and meeting capture (whisper.cpp on macOS; audio never leaves the machine). Generates speaker-labeled transcripts and its own wiki hub pages. Independent of this plugin — both can share the same vault without coupling.

🧰 Headless CLI

Most users should ignore this section. The plugin's user-facing CLI lives in the sibling repo green-dalii/obsidian-llm-wiki-cli — install with npm i -g karpathywiki-cli and run karpathywiki-cli ingest --sources <path> --wiki <path> --provider <id> --key <key>.

What ships in this repo at tools/dev-instrument/ is the dev-only headless measurement instrument for engine contributors — it runs the real WikiEngine.ingestSource against a vault on disk with no Obsidian runtime, prints per-task token + wall-clock accounting — same numbers that drive the perf evidence in CLAUDE.md and release notes. See tools/dev-instrument/README.md for the entry command, env vars, measurement modes, and exit-code spec.


🔍 How retrieval works

Most "AI search" plugins fragment your notes into chunks and embed them in a vector DB. We don't. Karpathy's argument against RAG is that chunking breaks the LLM's ability to reason across your whole knowledge graph — and that argument holds up in practice. Instead, we walk the graph you already maintain by writing [[wiki-links]].

The 5-stage seed-selection cascade

When you ask "Who founded Microsoft?", Query Wiki runs five stages before any answer generation:

  1. Lex fast path — straight token-overlap against every entity/concept title and aliases. Free, instant, and the gating step for everything that follows.
  2. LLM keyword generation — the LLM proposes 8–12 cross-language keywords from your query (handles synonyms, abbreviations, and token-overlap-resistant terms in one LLM call).
  3. Local substring scan — every generated keyword is re-matched locally against page titles, aliases, and body snippets. No extra LLM call; rounds out noise-tolerant recall.
  4. LLM KB fallback — when lex + keyword scan returns weak signals, the LLM re-seeds the top-N candidates against the full wiki for one semantic pass.
  5. PPR graph expansion — Personalized PageRank (Haveliwala 2002) over the [[wiki-link]] graph starting from the candidate seed set. This is what gives graph-aware multi-hop context: "Bill Gates" → "Microsoft" → "competitors", not just literal title overlap.

The cascade truncates at whichever stage returned enough signal — no fixed 5-stage cost; no LLM calls when lex is sufficient; semantic fallback only when lex + keyword scan alone isn't enough.

Personalized PageRank at scale

We use Monte Carlo PPR (Fogaras 2005) — 3,000 random walks × 50 steps each — with the dead-end rule from Haveliwala 2002. Cost is O(K × L) (K = walks, L = steps per walk), independent of the number of pages, so a 2,000-page vault sees the same expansion latency as a 200-page one.

PPR @5 = 27.1% vs pure-kNN baseline 24.1% on the project's own benchmark corpus (the only published retrieval benchmark in this open-source LLM-Wiki space).

Why no embeddings

We deliberately rejected the embedding path in Issue #175. The graph signal is already there — every [[wiki-link]] is a hand-curated "these are related" edge, and most providers we support (Ollama, LM Studio, Anthropic, Bedrock, Kimi, GLM, MiniMax) don't ship a /v1/embeddings endpoint at all. Adding an embedding model would mean a per-page download, a per-provider adapter, and zero benefit on retrieval quality.


🤖 Models

Supported providers (16+, all from models.dev cross-check 2026-07):

Provider Series Notes
Anthropic Claude 5 series Native PDF; /v1/messages protocol
OpenAI GPT-5.6 series (Sol / Terra / Luna) Native PDF; Platform API key
Google Gemini Gemini 3.6 series Native PDF (file parts since 1.5); OpenAI-compatible endpoint
DeepSeek DeepSeek V4 series OpenAI-compatible; lowest cost tier
Alibaba Qwen Qwen3.7/3.8 series OpenAI-compatible (DashScope)
xAI Grok Grok 4 series OpenAI-compatible; long context
Moonshot Kimi Kimi K3 series OpenAI-compatible; 2.8T MoE frontier
Zhipu GLM GLM-5 series OpenAI-compatible; strong bilingual
MiniMax MiniMax M3 series OpenAI-compatible; 1M context
Step (阶跃星辰) Step 3 series (Flash) OpenAI-compatible; fast inference
Tencent Hunyuan Hy3 series OpenAI-compatible; open-weight MoE
Xiaomi MiMo MiMo V2.5 series MIT open-source; flat pricing
Google Gemma Gemma 4 series Open-weight; 262K context
AWS Bedrock Anthropic + OpenAI variants Native PDF; VPC / compliance path; API key + SSO + IAM (v1.27.0, #425)
ChatGPT Plan (Codex OAuth) Codex Responses API Browser/device-code sign-in; SecretStorage
Local: Ollama, LM Studio, OpenRouter, Anthropic-Compatible Any OpenAI-/Anthropic-protocol model Custom OpenAI-Compatible + Anthropic-Compatible (Token Plan / Coding Plan)

This plugin feeds the LLM your full Wiki context per query — so long-context models win. The full tiered table (cloud + local) lives in docs/MODEL-GUIDE.md, cross-checked against models.dev so the picks stay current.

What matters

  • 🧠 Context window ≥ 200K tokens for vaults over ~500 pages. Below 200K the cascade may drop earlier stages to fit.
  • ⚖️ Instruction-following quality matters more than raw IQ for the extraction task — pick a model that follows the schema template, not the biggest leaderboard number.
  • 🔌 Embedding endpoint is irrelevant — we don't use embeddings. A provider that lacks /v1/embeddings is fine (most of our 16+ providers don't ship one).
  • 🦙 Local works for query, cloud for ingest — ingest on a 2,000-page vault usually needs a long-context cloud model; a 262K local model covers most queries.

For PDF / image / Office ingest, see Document / PDF / Image ingest in Features — Anthropic, OpenAI, Bedrock, and Gemini read PDFs as file parts natively; the built-in MinerU backend (v1.27.0+) and Force PDF Support cover everything else.

Anthropic vs OpenAI vs Codex OAuth — they are distinct providers

  • Anthropic (and its Bedrock variant) — separately billed Anthropic Platform API key.
  • OpenAI — separately billed OpenAI Platform API key.
  • ChatGPT Plan (Codex OAuth) — experimental, distinct provider that uses eligible Codex allowance after browser or device-code sign-in; availability follows OpenAI Codex authentication and allowance policies, not plan name. Third-party Codex compatibility, not an OpenAI partnership or a general ChatGPT API.

AWS Bedrock — three auth modes (v1.27.0, #425)

Settings → Provider → Bedrock (Anthropic / OpenAI) now picks one of three auth modes; the provider row then asks for the inputs that mode actually needs:

  • API key — the original Stage-1 bearer path; behavior is byte-for-byte identical to v1.26.4 and the recommended pick for users who already pay for a Bedrock API key.
  • SSO — IAM Identity Center device flow. Click Sign in with AWS SSO, paste the verification URL code in the browser, the plugin receives an SSO token via karpathywiki-bedrock-sso in SecretStorage, exchanges it for temporary role credentials, and signs every request with hand-rolled SigV4 (no AWS SDK added). Account ID and role name are auto-detected when the SSO identity exposes exactly one of each; otherwise enter them in the provider settings.
  • IAM — static access keys for environments without SSO (CI, scheduled batch jobs). Stored in karpathywiki-bedrock-iam in SecretStorage; the in-memory cache memoizes per access-key to keep SigV4 signing within expiry.

All three modes share the same Obsidian SecretStorage discipline (no credentials in data.json, logs, or docs) and the same zero-AWS-SDK hand-rolled OIDC + SigV4 path. Bedrock region is independent of auth mode and is configured in the same provider row.

📖 Full pick table (cloud + local + PDF OCR + Codex OAuth + quantization + hardware tiers) → docs/MODEL-GUIDE.md

❓ FAQ

What does the plugin actually do?

Pick any note, folder, or selection; the LLM extracts entities and concepts and generates an interlinked wiki with [[bidirectional links]]. Ask questions and get conversational answers grounded in your notes, not the internet. Your original vault notes are never modified.

How do I get started?

Install from Obsidian Community Plugins → pick a provider → Test Connection → run Ingest single source on any note. First wiki pages appear within seconds. See Quick Start.

Is my existing wiki safe?

✅ Backward compatible since v1.0.0. Set reviewed: true on any page to protect it from overwrite. Upgrading from v1.24.x doesn't rewrite your vault; v1.25.0's PDF ingest is cache-only by default, and v1.27.0 adds native PDF + images + Office ingest without changing the on-disk wiki layout.

Can I ingest PDFs, images, and Office documents?

✅ Yes. Anthropic, OpenAI, Bedrock, and Gemini read PDFs natively; the built-in MinerU backend (v1.27.0) covers everything else (PDF + images + Office). Full walkthrough — cloud providers, Apple Silicon OCR, Force PDF Support, cache housekeeping — in docs/PDF-OCR-GUIDE.md.

Is my data sent anywhere?

🚫 No backend, no analytics — the plugin runs entirely inside Obsidian. Only text you explicitly send for ingest/query leaves your device, and only to the LLM provider you configure. For complete data locality, use Ollama or LM Studio.

Can I use the plugin in my language?

🌍 11 languages for both UI and wiki output. UI and wiki language are independent. Adding a 12th language is contributor-driven (PR #159 pattern).

How is this different from a RAG chatbot?

🚫 No chunking. 🚫 No embeddings. 🚫 No vector DB. ✅ Personalized PageRank over your existing [[wiki-link]] graph — graph-aware multi-hop context, zero embedding cost, full local-model support.

Which LLM should I use?

Long-context models (≥200K tokens) work best. The Models section covers the principles; the full tiered table is in docs/MODEL-GUIDE.md.

Is there a published benchmark?

Yes — PPR @5 = 27.1% vs pure-kNN baseline 24.1% on the project's own corpus. The full pipeline and benchmark script are described in How retrieval works.

How do I control API costs?

Use Coarse or Minimal extraction granularity for batch ingest. Smart Batch Skip auto-detects already-ingested files. Auto-Maintenance is OFF by default. Lint shows counts before running fixes — nothing is charged without your approval.

How do I cancel a running operation?

Click the status bar (shows "Ingesting… click to cancel") or Cmd+P/Ctrl+P → "Cancel current ingestion". Stops cleanly at the next batch boundary.

Where do I get help?

GitHub Issues for bug reports · GitHub Discussions for questions and feature requests · Developer Console (Ctrl+Shift+I / Cmd+Option+I) for plugin logs.


🔒 Privacy

This plugin is listed on the Obsidian Community Plugin Market and undergoes automated review for security and permissions.

  • 🚫 No backend of its own, no telemetry, no data collection. Pure local software running inside Obsidian. The plugin operates no server and reports nothing anywhere.
  • 🔐 Network access is opt-in and explicit. It exists only to reach services you configure: your LLM provider, and — if you turn on the MinerU document backend — mineru.net. That second one is the exception worth naming: it uploads the document to a jurisdiction you did not choose and that publishes no retention statement. Where your document is processed lists every path and where the file goes.
  • 📁 Vault file access is used for wiki management (reading notes, generating pages, scanning dead links, detecting duplicates). The plugin never modifies your source files.
  • 📋 Clipboard access is used exclusively by the "Copy" button in the Query modal — and only when you click it.

For complete data locality, use Ollama or LM Studio. With a local provider, your data never leaves your machine.


💖 Support

If LLM-Wiki has become a meaningful part of your knowledge workflow:

Thanks to the following for supporting the project:

@jameses-cyber, @issaqua, Dikson Choi


🔭 Other projects

  • obsidian-llm-wiki-cli — the headless ingest CLI, sibling repo shipped as the karpathywiki-cli npm package. Runs the same WikiEngine against a vault on disk, no renderer. Install with npm i -g karpathywiki-cli. The in-tree tools/dev-instrument/ is the dev-only measurement instrument that drives the per-task cost numbers in this plugin's release notes.
  • pi-shift-router — a task-level router for pi-coding-agent. Before each turn a small LLM judge marks your message routine or consequential, and the tier it picks drives the whole turn. Complex tasks go further: the Smart tier runs as a CTO that plans the work, delegates implementation to Fast subagents, reviews each result and iterates. Upgrades are instant, downgrades wait for a sustained trend; per-tier fallback chains ride out 429s and 5xx. Zero runtime deps, MIT. → shiftrouter.greenerai.top
  • dsh-shift-router — DSH fork of pi-shift-router, same task-level routing design but targeted at the dsh-coding-agent runtime. Same judge-driven tier picks, same per-tier fallback chains, MIT.
  • dsh-plugin-dev-skill — DSH companion to the Claude-side obsidian-plugin-dev workflow: scaffolds an Obsidian plugin workspace, drives the Red→Green TDD loop, runs the Six-Gate quality closure (lint/tsc/test/build/css-lint), and prepares a release-ready branch on feat/* or fix/*. Built so DSH-using contributors get the same scaffolding + gate experience without copy-pasting from CLAUDE.md.

📜 License & Credits

Apache License, Version 2.0 — see LICENSE, NOTICE and THIRD-PARTY-NOTICES.md.

Built on:

Maintainers: @green-dalii (author) · @DocTpoint (co-maintainer since September 2026)

Star History Chart

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
Note aliases
4 years ago by Pulsovi
This plugin manages wikilinks aliases and save them on the aliases list of the linked note
GPT Assistant
4 years ago by M7mdisk
Ask GPT from your notes and get personalized answers based on your knowledge base.
Link Range
3 years ago by Ryan Mellmer
Add ranged link support to Obsidian
Links
3 years ago by MiiKey
manipulate & manage obisidian links
Semantic Canvas
3 years ago by Aaron Gillespie
An Obsidian Plugin to update note properties using links on Canvases
Nextcloud Link Fixer
2 years ago by KaelLarkin
Add links to current note
6 years ago by MrJackphil
This plugin adds a command which allows to add a link to the current note at the bottom of selected notes
Wikilinks to MDLinks
6 years ago by Agatha Uy
An Obsidian md plugin which allows for the conversion of individually selected wikilinks to markdown links, and vice versa.
Page Heading From Links
6 years ago by Mark Beattie
Obsidian plugin to populate page headings
InfraNodus AI Graph View
2 years ago by Nodus Labs
Advanced graph view for Obsidian: text analysis, topic modeling, and AI with InfraNodus AI text analysis tool: https://infranodus.com
Insta TOC
2 years ago by Nick C.
Generate, update, and maintain a table of contents for your notes while typing in real time.
ExMemo Tools
2 years ago by Yan.Xie
Use large models for smart document management and optimization, including relocating files, enhancing text, and generating metadata.
Automatic Linker
2 years ago by Kodai Nakamura
Title As Link Text
2 years ago by Lex Toumbourou
An Obsidian plugin to set the Link Text using the document title
Related Notes
2 years ago by Oluwasanya Awe
Date Range Expander
a year ago by Mil
Obsidian plugin - Date Range Expander
Notemd
a year ago by Jacob
A Easy way to create your own Knowledge-base! Notemd enhances your Obsidian workflow by integrating with various Large Language Models (LLMs) to process your notes, automatically generate wiki-links for key concepts, create corresponding concept notes, perform web research, and more.
Folder Filelist
a year ago by Bill Anderson
Obsidian plugin for simple folder listing
EasyLink
a year ago by isitwho
Select text in your obsidian editor to find the most similar content from other notes and easily create links.
Private AI
a year ago by GB
Effortlessly chat with your Obsidian notes using a privacy first LLM. Private by design, your notes never leave the device and use local processing only.
Auto Keyword Linker
9 months ago by Daniel Rhodes
Stop manually typing [[brackets]] around recurring terms. Configure keywords with variations once, and automatically link them as you write or across your entire vault.
YOLO
9 months ago by Lapis0x0
Agent-native AI assistant — chat, write, learning, all in one.
Connections
9 months ago by Eric Van Cleve
Smart Lookup
5 months ago by brianpetro
Neural Composer
3 months ago by Oscar Campo
AI-Powered Graph Memory for Obsidian
Sidet
3 months ago by Jiao Yingxing
An easy-to-use AI chat plugin for Obsidian with side browsing, focused conversations, and vault-aware knowledge capture.
Mention Autocomplete
3 months ago by Darren Zheng
Type `@` to instantly search and link any note in your vault — with full-text search, rendered preview, and smart sentence extraction.
Discourse Graph
2 months ago by discoursegraphs
Note Types
2 months ago by jsmorabito
Dedao Brain Importer
2 months ago by springrain | 公众号: 及时春雨
在原版基础上修复windows无法手动和自动导入问题,以及优化很多格式转换为markdown