Purpose
obsidian-wiki solves the pain point of "solving the same problem repeatedly": you solved a difficult problem on Tuesday, and three months later you solve it again from scratch in another repository—because the answer was left in a chat log you can no longer find. This framework lets you compile what an AI agent learns into interconnected Markdown notes that you own. Its pattern comes from Andrej Karpathy's LLM Wiki gist: knowledge is compiled once and kept up to date, rather than forever asking the LLM the same questions or rerunning RAG every time.
Main capabilities
- Feed it: supports any form of text content, including documents, PDFs, chat exports, meeting transcripts, screenshots, URLs.
- Ask it: answers come with [[wikilink]] citations rather than being generated out of thin air.
- Find: helps you find that session whose name you cannot quite recall.
- Keep it honest: the repository will become messy on its own; these capabilities are used to clean it up. The project claims a total of 39 skills.
- Graph view: open the repository in Obsidian and use the graph view (Cmd/Ctrl+P → "Open graph view"). Say "color my graph" to color nodes by tag, category, or visibility.
- Export: the entire graph can be exported as graph.json, GraphML (Gephi/yEd), Neo4j Cypher, Postgres SQL, or a self-contained interactive graph.html.
- Example repository: examples/demo-vault/ is an 18-page example repository about building reliable LLM agents, already colored by folder.
- Python usage: provides a Python API with no API key, embedding model, vector store, or network required.
- Memory across sessions: at the start of a session, repository memory is already in context (who you are, what unfinished threads there are, what has changed recently); before the session ends, capture anything reusable.
How to use
After installation, open any project and tell the agent "set up my wiki". If you do not want to touch the terminal, you can give the repository instructions to the agent and it will complete the entire setup. You can also install it with uv or pipx:uv tool install obsidian-wiki and pipx install obsidian-wiki have the same effect (note: not uvx). When using Claude Code, it can be installed as a plugin without Python; plugin skills are namespaced (/obsidian-wiki:wiki-ingest), and only skills are included—no session hooks or obsidian-wiki CLI. During installation, two session hooks are registered so that each new session begins with "who you are and what unfinished matters there are" and captures reusable content at the end; use --no-hooks Can be skipped. For other installation paths (git clone, Claude Code plugin, Skills CLI, multi-repo), see Installation.
Use cases
- Reuse previously solved problems and experience across repos and sessions.
- Compile scattered materials such as documents, PDFs, chat logs, and meeting transcripts into a searchable knowledge base.
- A personal or team knowledge base that is readable, greppable, diffable, and version-controllable.
- Use it in an existing work environment (a single .skills/ directory, symlinked into each agent you use).
Design philosophy and limitations
- It compiles rather than accumulates: new knowledge is merged into existing pages, contradictions are flagged, and no duplicates are produced.
- Only changed content is read: a manifest tracks every source already ingested, so the second run processes only the delta.
- It can distinguish knowledge from guesswork: every claim is marked as extracted, ^[inferred], or ^[ambiguous], and lint flags pages that drift into speculation.
- Query cost stays low as scale grows: read titles, tags, and summaries first, then the body; 20 pages or 2000 pages cost roughly the same.
- Your data belongs to you: plain Markdown in a folder, pushable to a private repo, openable in Obsidian, greppable, deletable; no service, no lock-in, data never leaves your machine.
- Context carries across sessions: the owner profile, unfinished threads, and a run snapshot are injected at session start.
- Parallel writes are safe: index.md, log.md, hot.md, and the owner profile and to-do index under _meta/ all go through a single writer with locking and atomic writes, so parallel agents do not lose each other's updates.
- user_id isolates each person's memory while knowledge remains shared.
- The official description states the project is at an early stage; the skill is usable, but there is still room for improvement in cross-referencing, deduplication, larger repositories, and new ingestion sources.
- The documentation mentions a small-scale comparative study (Claude Sonnet, headless mode, a real 38-page repository, n=2); the accuracy and timing figures given are described officially as indicative rather than conclusive; the full data and per-run logs are in PR #175.