Andrej Karpathy described an “LLM wiki”: you collect sources, and an LLM turns them into a wiki of linked pages, answers questions from it and keeps it tidy. People are good at choosing what to read and bad at the upkeep a wiki needs: cross-references, updating ten pages when one new source arrives, noticing contradictions. In this pattern, that upkeep becomes the assistant’s job.
Most setups build this on Obsidian and plain Markdown files. Trilium already has the pieces they build by hand, so I built mine on Trilium:
trilium-llm-wiki is a Claude Code plugin that builds and maintains an LLM wiki in your Trilium, using Trilium’s built-in MCP server.

My wiki after a few weeks, as Trilium’s note map: hubs in violet, concepts green, entities orange, source summaries blue.
Why Trilium fits so well
| The pattern needs | Trilium has |
|---|---|
| metadata on every page | labels and promoted attributes, set by templates |
| a graph of linked pages | internal links and relations, and the note map to look at it |
| pages of a few kinds | templates (hub, concept, entity, source summary) |
| “what still needs work?” | saved searches: pending sources, stubs, drafts, orphans |
| a log of what changed | the journal’s day note |
| raw sources that stay untouched | a #readOnly Sources subtree |
How it works
- One request sets it up: a Schema note, read-only Sources, the Wiki, four templates, saved-search views, two note maps and a lock folder.
- The rules live in your Trilium: the schema note says how pages are written, linked and reviewed. Claude reads it before every write, and you change the wiki’s conventions by editing that note.
- Workflows:
- ingest a source: Claude writes a summary, updates the concept and entity pages it touches, creates placeholder pages for new topics, and logs the change in the day note;
- query the wiki;
- lint it;
- adopt a finding from a work session.
- You stay the editor: Claude writes drafts marked AI-assisted, and only you set a page to reviewed.
- Safe with several sessions: a small write lock (a queue of claim notes) stops two Claude sessions from overwriting each other’s changes.
What goes in
- Articles and links. I save them to Karakeep. A small sync job I wrote, karakeep-trilium-sync, puts them under Sources, and “ingest” does the rest.
- My own chats with Claude. At the end of a session I just say “put this in the wiki”. Claude summarizes what we figured out or decided and files it into the pages it belongs to, so a fix, a decision or a “this is how it actually behaves” doesn’t get lost when the chat ends.
Finding things again
A wiki is only useful if the assistant actually looks things up. That’s what trilium-recall is for (my post about it): it gives Claude the relevant wiki pages before it answers, and the wiki’s structure helps it rank them, with wiki pages first and sources shown as their summaries. It works on any Trilium, so it has its own post.
Try it
You need Trilium 0.106+ with the MCP server switched on (Options → AI / LLM → MCP server). Connect it with an ETAPI token or through trilium-mcp-proxy (see discussion #12310).
/plugin marketplace add Marceltov/trilium-llm-wiki
/plugin install trilium-llm-wiki
Then ask Claude to “set up the LLM wiki”, drop an article under Sources and say “ingest”.
For everyday note work without a wiki (search, create, move, tag, journal, export) there’s trilium-plugin; both plugins share one connection.
Feedback is welcome, especially from anyone who runs something similar: how do you structure yours?
Discussion on GitHub: TriliumNext discussion #12317.