Your coding-agent sessions, compiled into a local wiki you can search, graph, and open as plain files.
Live demo · Karpathy's LLM Wiki pattern
llmwiki turns transcripts from Claude Code, Codex, Cursor, OpenClaw and others into redacted markdown, then builds a static site: session browser, topic graph, candidate review, MCP tools. Your data stays in a vault outside git. Nothing has to be running to read the site — open site/index.html.
What you get
- A searchable static site — sessions, projects, topics, graph, analytics. Dark mode, Cmd+K search, syntax highlighting. Open the files; there is no server.
- A knowledge layer —
synthwrites source summaries and harvests entity/concept candidates. You review those on/candidates.htmland apply decisions withllmwiki candidates apply. That review is a real gate, not an optional extra. - Exports agents can read —
llms.txt,llms-full.txt, JSON-LD, sitemap, RSS, plus an MCP server. - Your data never lands in git. Transcripts, wiki pages and the built site live in a vault directory you choose. This repository is code plus a public demo.
Page kinds and where each field comes from: docs/reference/page-kinds.md. Every screen: docs/reference/ui.md.
Install
Requires Python ≥ 3.12 (CI verifies 3.12 only; newer interpreters are installable but not matrix-tested). Runtime dependency is markdown only.
pip install llm-wiki-plus
# or: brew install AlexanderMakarov/tap/llmwiki
llmwiki init --vault ~/llmwiki-vault
Point a gitignored config.json at the vault so later commands need no --vault:
{
"vault": { "default_path": "/home/USER/llmwiki-vault" }
}
From a clone, ./setup.sh installs the package and reports which agents it can see. The clone itself is not a vault — bare llmwiki init / sync / build against this repository are refused; name --vault or demo.
Agent commands (slash commands and skills) ship inside the package. After install:
llmwiki install-agent-kit --dest ~/.claude
That is what a Homebrew or pip user runs so /wiki-sync and friends work from their project, not from this repository. See docs/reference/cli.md.
The install also drops a small .llmwiki-agent-kit.json manifest in --dest, recording which files it wrote and their checksums. It is safe — and useful — to commit alongside .claude/commands/: it is what lets a later upgrade recognise its own files and remove ones it has retired, while leaving anything you wrote or edited alone.
The loop
sync / add → synth → review candidates → build → open site/index.html
llmwiki sync # new transcripts → vault/raw/sessions/
llmwiki add notes.md # optional: drop a document into raw/docs/
llmwiki synth # source pages + harvest candidates
# open vault/site/candidates.html, set decisions, paste the printed command
llmwiki build # vault/wiki/ → vault/site/
synth does not rebuild the site. build does. candidates apply rebuilds after a successful batch so /candidates.html matches the wiki (--no-rebuild skips that). Candidate review is the human gate: a row starts with no decision, Apply assembles llmwiki candidates apply --vault … --actions '…', and only that command writes the wiki.
One-shot: llmwiki all --graph-engine builtin runs the whole loop — sync → synth → build → graph → lint. Opt out of a stage with --no-sync, --no-synth, --skip-graph, or --skip-lint.
Agents
One row per agent. Supplies sessions = llmwiki sync can read its transcript store. Reads the wiki = slash commands / MCP after install-agent-kit (any MCP client can also call python3 -m llmwiki.mcp). Core adapters run on a default sync when their store exists; contrib adapters need --adapter <name> or adapters.<name>.enabled in config.
| Agent | Supplies sessions | Reads the wiki | Core or contrib |
|---|---|---|---|
| Claude Code | ~/.claude/projects/*/*.jsonl |
slash commands, MCP | core (claude_code) |
| Codex CLI | ~/.codex/sessions/ |
AGENTS.md workflow, MCP |
core (codex_cli) |
| ChatGPT | contrib store | MCP | contrib (chatgpt) |
| Copilot Chat | VS Code workspaceStorage | MCP | contrib (copilot_chat) |
| Copilot CLI | ~/.copilot/session-state/ |
MCP | contrib (copilot_cli) |
| Cursor IDE | workspaceStorage | MCP | contrib (cursor) |
| Cursor CLI | ~/.cursor/chats/ |
MCP | contrib (cursor_cli) |
| Gemini CLI | ~/.gemini/ |
MCP | contrib (gemini_cli) |
| Obsidian | markdown vault intake | wikilinks in the vault | contrib (obsidian) |
| OpenCode | shared OpenClaw schema | MCP | contrib (opencode) |
| OpenClaw | ~/.openclaw/agents/*/sessions/ |
MCP | contrib (openclaw) |
llmwiki adapters --wide
llmwiki sync --adapter openclaw
Configuration
Shipped defaults: examples/sessions_config.json. Personal overrides: gitignored config.json at the clone root, merged on top. Full keys: docs/configuration.md.
Skip projects or dates with a .llmwikiignore next to the vault (one path or glob per line).
Documentation
| Topic | Link |
|---|---|
| Hub | docs/index.md |
| Install + first vault | docs/getting-started.md |
| Page kinds | docs/reference/page-kinds.md |
| CLI | docs/reference/cli.md |
| Site UI | docs/reference/ui.md |
| Architecture | docs/architecture.md |
| Upgrading | docs/UPGRADING.md |
| GitHub Pages | docs/deploy/github-pages.md |
This repository's CLAUDE.md and AGENTS.md are for people changing llmwiki itself. Vault workflows for users live in the installed agent kit.
Acknowledgements
- Andrej Karpathy — LLM Wiki idea
- Pratiyush — original llm-wiki project this repository builds on
License
MIT © Alexander Makarov; originally based on Pratiyush/llm-wiki