llmwiki
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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file llm_wiki_plus-2.3.0.tar.gz.
File metadata
- Download URL: llm_wiki_plus-2.3.0.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d38a545c546446517d9663f41d8ef47d305f4fb78ac2a5a87844981966b9968
|
|
| MD5 |
aee0345c300b37daa7b14882a737ce39
|
|
| BLAKE2b-256 |
bf16c4a5706d00f6389718da8dbc2f7737927c495cb51c3e079eb801bfad9b0c
|
Provenance
The following attestation bundles were made for llm_wiki_plus-2.3.0.tar.gz:
Publisher:
release.yml on AlexanderMakarov/llm-wiki
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llm_wiki_plus-2.3.0.tar.gz -
Subject digest:
0d38a545c546446517d9663f41d8ef47d305f4fb78ac2a5a87844981966b9968 - Sigstore transparency entry: 2757668932
- Sigstore integration time:
-
Permalink:
AlexanderMakarov/llm-wiki@0c87174ef6d8fe9dc48e407ab3b420d0a60216c8 -
Branch / Tag:
refs/tags/v2.3.0 - Owner: https://github.com/AlexanderMakarov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0c87174ef6d8fe9dc48e407ab3b420d0a60216c8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file llm_wiki_plus-2.3.0-py3-none-any.whl.
File metadata
- Download URL: llm_wiki_plus-2.3.0-py3-none-any.whl
- Upload date:
- Size: 875.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
842634154ffece60ac716fcb5bccedafd154c26de26906a0fccbfd05f3f0bf6b
|
|
| MD5 |
1017e1d9c9c27a98d7bc62cb8a920695
|
|
| BLAKE2b-256 |
b7b4a73d0956496a37f15eb4b63d390653e4340cf7f421df0c2c5978a11216ab
|
Provenance
The following attestation bundles were made for llm_wiki_plus-2.3.0-py3-none-any.whl:
Publisher:
release.yml on AlexanderMakarov/llm-wiki
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llm_wiki_plus-2.3.0-py3-none-any.whl -
Subject digest:
842634154ffece60ac716fcb5bccedafd154c26de26906a0fccbfd05f3f0bf6b - Sigstore transparency entry: 2757669160
- Sigstore integration time:
-
Permalink:
AlexanderMakarov/llm-wiki@0c87174ef6d8fe9dc48e407ab3b420d0a60216c8 -
Branch / Tag:
refs/tags/v2.3.0 - Owner: https://github.com/AlexanderMakarov
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0c87174ef6d8fe9dc48e407ab3b420d0a60216c8 -
Trigger Event:
push
-
Statement type: