llm-wiki
A headless wiki engine for agents. 24 MCP tools. One Rust binary. No LLM inside.
Build knowledge that compounds — not answers that evaporate.
A git-backed Markdown wiki — searchable, typed, graph-linked. Accessible from the command line, from any MCP-compatible agent, or from any IDE via ACP.

The problem with RAG
Most AI knowledge tools retrieve and generate on every query. Each answer is disposable — nothing is learned, nothing is kept. Ask the same question twice and the LLM reasons from scratch.
llm-wiki implements a different pattern — the Dynamic Knowledge Repository (DKR), introduced by Andrej Karpathy:
Process sources at ingest time, not query time. The LLM integrates each source into the wiki — updating concept pages, creating source summaries, flagging contradictions — and commits the result. Knowledge compounds with every addition.
How it works
The engine is pure infrastructure. It manages files, git, full-text search, and graph structure. The LLM is always external — it calls the engine's tools via MCP, reads pages, writes pages, and commits knowledge. Intelligence flows through skills, not the binary.
LLM agent
│
├── wiki_list(format: "llms") → all pages grouped by type
├── wiki_search("mixture of experts") → ranked results + facets
├── wiki_content_read("concepts/moe") → full page + backlinks
├── wiki_graph(root: "concepts/moe") → typed graph in Mermaid/DOT
├── wiki_suggest("concepts/moe") → pages worth linking
├── wiki_content_new("concepts/new-page") → scaffold + returns local path
├── [write directly to path] → no MCP round-trip
└── wiki_ingest(path: "concepts/") → validate, index, commit
A wiki page is a plain Markdown file with typed frontmatter:
---
type: concept
title: Mixture of Experts
status: active
confidence: 0.9
tags: [routing, scaling, efficiency]
sources:
- sources/switch-transformer-2021
- sources/mixtral-2024
concepts:
- concepts/sparse-routing
- concepts/scaling-laws
---
Sparse routing of tokens to expert subnetworks...
The engine validates frontmatter against a JSON Schema, extracts typed graph
edges from sources and concepts, and indexes everything in tantivy. The
graph is live the moment a page is committed.
Install
# Homebrew (macOS / Linux) — recommended
brew tap geronimo-iia/tap
brew install llm-wiki
# macOS / Linux — curl installer
curl -fsSL https://raw.githubusercontent.com/geronimo-iia/llm-wiki/main/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/geronimo-iia/llm-wiki/main/install.ps1 | iex
# Cargo
cargo install llm-wiki
Quick start
# Create a wiki space
llm-wiki spaces create ~/wikis/research --name research
# Start the MCP server
llm-wiki serve
Connect your agent or editor — VS Code, Cursor, Windsurf, Zed, Claude Code — via the MCP config. The 24 tools are immediately available.
→ Getting started guide · IDE integration
MCP configuration
Add to your agent or IDE's MCP config:
{
"mcpServers": {
"llm-wiki": {
"command": "llm-wiki",
"args": ["serve"]
}
}
}
Works with Claude Code, VS Code (Copilot), Cursor, Windsurf, and any MCP-compatible client. For Zed (ACP over stdio), see the IDE integration guide.
IDE integration via ACP
In addition to MCP, llm-wiki speaks ACP (Agent Client Protocol) — a session-oriented streaming protocol over stdio. Connect from Zed or any ACP-compatible editor and trigger built-in workflows directly from the IDE panel:
Start with --acp alongside --http to give ACP exclusive stdio:
llm-wiki serve --acp --http :18765
→ IDE integration guide · ACP configuration
What agents can do
Full tool reference: docs/specifications/tools/
Skills
The engine exposes tools. Skills tell agents how to use them.
llm-wiki-skills is a Claude Code plugin that ships ready-to-use workflows:
Skills are plain Markdown files — readable by the LLM, replaceable, forkable. Write your own for your own workflows.
Architecture
llm-wiki-engine pure Rust binary — tools, git, index, graph
llm-wiki-skills Claude Code plugin — workflow skills (Markdown)
llm-wiki-hugo-cms Hugo scaffold — render the wiki as a website
The engine has no opinions about workflows, LLM providers, or interfaces. Every LLM call happens outside the binary. Every workflow lives in a skill. The separation means skills ship independently, the engine stays stable, and nothing is coupled to a specific AI provider.
Technology
The file format is Markdown. The history store is git. Both predate llm-wiki and will outlive it — your wiki is readable, diffable, and portable with zero dependency on this tool. The engine itself is a single Rust binary with no runtime, no database, and nothing to keep running between sessions.
Single Rust binary. No runtime, no database, no Docker.
Documentation
Related Projects
Why I built this
Like many of you, I've been exploring agents, LLMs, and all that comes with it. This project started after Andrej Karpathy's post — he put into words something I was already practicing: plain Markdown files with structured frontmatter as a practical knowledge base, for work and for the messier explorations.
The technical direction reflects years of SRE-minded practice: minimize dependencies, use proven tools, keep the binary dumb. Written in Rust with Claude as a pair programmer — a language I enjoy exploring more and more.
I have "a few" years of experience, but if you spot bad practices, call them out — I'm doing this to learn together too. And if you're using it, personally or at work, I'd love to hear about it :)
Acknowledgments
- Andrej Karpathy — for the LLM Wiki gist that defined the Dynamic Knowledge Repository pattern.
- vanillaflava — for llm-wiki-claude-skills, which turned the pattern into a practical skill architecture.
llm-wiki is a continuation of agent-foundation.
Contributing
Contributing guide · Code of conduct · Security policy
License
MIT OR Apache-2.0