README

The public README of llmwiki, rendered from `README.md`.

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

License: MIT Python 3.12+ Version CI Link check Wiki checks

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 layersynth writes source summaries and harvests entity/concept candidates. You review those on /candidates.html and apply decisions with llmwiki candidates apply. That review is a real gate, not an optional extra.
  • Exports agents can readllms.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

License

MIT © Alexander Makarov; originally based on Pratiyush/llm-wiki

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date