{"id":48572146,"url":"https://github.com/pratiyush/llm-wiki","last_synced_at":"2026-04-25T23:01:22.569Z","repository":{"id":349938971,"uuid":"1204361785","full_name":"Pratiyush/llm-wiki","owner":"Pratiyush","description":"LLM-powered knowledge base from your Claude Code, Codex CLI, Copilot, Cursor \u0026 Gemini sessions. Karpathy's LLM Wiki pattern — implemented and shipped.","archived":false,"fork":false,"pushed_at":"2026-04-25T16:55:48.000Z","size":5517,"stargazers_count":162,"open_issues_count":6,"forks_count":23,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-04-25T18:27:27.551Z","etag":null,"topics":["ai","claude-code","cli","codex-cli","copilot","cursor","developer-tools","gemini-cli","karpathy","knowledge-base","llm","llm-wiki","markdown","mcp","obsidian","open-source","python","session-history","static-site","wiki"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Pratiyush.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["Pratiyush"]}},"created_at":"2026-04-08T00:07:14.000Z","updated_at":"2026-04-25T18:00:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Pratiyush/llm-wiki","commit_stats":null,"previous_names":["pratiyush/llm-wiki"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/Pratiyush/llm-wiki","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pratiyush%2Fllm-wiki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pratiyush%2Fllm-wiki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pratiyush%2Fllm-wiki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pratiyush%2Fllm-wiki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Pratiyush","download_url":"https://codeload.github.com/Pratiyush/llm-wiki/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pratiyush%2Fllm-wiki/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32279660,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"ssl_error","status_checked_at":"2026-04-25T18:29:32.149Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","claude-code","cli","codex-cli","copilot","cursor","developer-tools","gemini-cli","karpathy","knowledge-base","llm","llm-wiki","markdown","mcp","obsidian","open-source","python","session-history","static-site","wiki"],"created_at":"2026-04-08T15:00:56.618Z","updated_at":"2026-04-25T23:01:22.547Z","avatar_url":"https://github.com/Pratiyush.png","language":"Python","funding_links":["https://github.com/sponsors/Pratiyush"],"categories":[],"sub_categories":[],"readme":"# llmwiki\n\n\u003e **LLM-powered knowledge base from your Claude Code, Codex CLI, Cursor, Gemini CLI, and Obsidian sessions.**\n\u003e Built on [Andrej Karpathy's LLM Wiki pattern](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f).\n\n## 👉 Live demo: **[pratiyush.github.io/llm-wiki](https://pratiyush.github.io/llm-wiki/)**\n\nRebuilt on every `master` push from the synthetic sessions in [`examples/demo-sessions/`](examples/demo-sessions). No personal data. Shows every feature of the real tool (activity heatmap, tool charts, token usage, model info cards, vs-comparisons, project topics) running against safe reference data.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/)\n[![Version](https://img.shields.io/badge/version-v1.2.3-10B981.svg)](CHANGELOG.md)\n[![Tests](https://img.shields.io/badge/tests-2068%20passing-10B981.svg)](tests/)\n[![CI](https://github.com/Pratiyush/llm-wiki/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/Pratiyush/llm-wiki/actions/workflows/ci.yml)\n[![Link check](https://github.com/Pratiyush/llm-wiki/actions/workflows/link-check.yml/badge.svg?branch=master)](https://github.com/Pratiyush/llm-wiki/actions/workflows/link-check.yml)\n[![Wiki checks](https://github.com/Pratiyush/llm-wiki/actions/workflows/wiki-checks.yml/badge.svg?branch=master)](https://github.com/Pratiyush/llm-wiki/actions/workflows/wiki-checks.yml)\n[![Docker](https://github.com/Pratiyush/llm-wiki/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/Pratiyush/llm-wiki/pkgs/container/llm-wiki)\n[![Works with Claude Code](https://img.shields.io/badge/Claude%20Code-✓-7C3AED.svg)](https://claude.com/claude-code)\n[![Works with Codex CLI](https://img.shields.io/badge/Codex%20CLI-✓-7C3AED.svg)](https://github.com/openai/codex)\n[![Works with Copilot](https://img.shields.io/badge/GitHub%20Copilot-✓-7C3AED.svg)](https://github.com/features/copilot)\n[![Works with Cursor](https://img.shields.io/badge/Cursor-✓-7C3AED.svg)](https://cursor.com)\n[![Works with Gemini CLI](https://img.shields.io/badge/Gemini%20CLI-✓-7C3AED.svg)](https://ai.google.dev/gemini-api)\n[![Works with Obsidian](https://img.shields.io/badge/Obsidian-✓-7C3AED.svg)](https://obsidian.md)\n\n---\n\nEvery Claude Code, Codex CLI, Copilot, Cursor, and Gemini CLI session writes a full transcript to disk. You already have hundreds of them and never look at them again.\n\n**llmwiki** turns that dormant history into a beautiful, searchable, interlinked knowledge base — locally, in two commands. Plus, it produces AI-consumable exports (`llms.txt`, `llms-full.txt`, JSON-LD graph, per-page `.txt` + `.json` siblings) so other AI agents can query your wiki directly.\n\n```bash\n./setup.sh                         # one-time install\n./build.sh \u0026\u0026 ./serve.sh           # build + serve at http://127.0.0.1:8765\n```\n\n\u003c!-- TODO: re-record demo GIF for v1.2 (#248). Removed broken ref to docs/demo.gif. --\u003e\n\n\n**Contributing in one line:** read [`CONTRIBUTING.md`](CONTRIBUTING.md), keep PRs focused (one concern each), use `feat:` / `fix:` / `docs:` / `chore:` / `test:` commit prefixes, never commit real session data (`raw/` is gitignored), no new runtime deps. CI must be green to merge.\n\n## Screenshots\n\nAll screenshots below are from the **public demo site** which is built on every `master` push from the dummy example sessions. Your own wiki will look identical — just with your real work.\n\n### Home — projects overview with activity heatmap\n![llmwiki home page — LLM Wiki header, activity heatmap, and a grid of three demo projects (demo-blog-engine, demo-ml-pipeline, demo-todo-api)](docs/images/home.png)\n\n### All sessions — filterable table across every project\n![llmwiki sessions index — activity timeline above a table of eight demo sessions with project, model, date, message count, and tool-call columns](docs/images/sessions.png)\n\n### Session detail — full conversation + tool calls\n![llmwiki session detail — Rust blog engine scaffolding session showing summary, breadcrumbs, a TOML Cargo.toml block and a Rust main.rs block, both highlighted by highlight.js](docs/images/session-rust.png)\n\n### Changelog — renders `CHANGELOG.md` as a first-class page\n![llmwiki changelog page — keep-a-changelog format with colored headings for Added / Fixed / Changed and auto-linked PR references](docs/images/changelog.png)\n\n### Projects index — freshness badges + per-project stats\n![llmwiki projects index — three demo project cards with green/yellow/red freshness badges showing how recently each project was touched](docs/images/projects.png)\n\n## What you get\n\n### Human-readable\n- **All your sessions**, converted from `.jsonl` to clean, redacted markdown\n- **A Karpathy-style wiki** — `sources/`, `entities/`, `concepts/`, `syntheses/`, `comparisons/`, `questions/` linked with `[[wikilinks]]`\n- **A beautiful static site** you can browse locally or deploy to GitHub Pages\n  - Global search (Cmd+K command palette with fuzzy match over pre-built index)\n  - [highlight.js](https://highlightjs.org/) client-side syntax highlighting (light + dark themes)\n  - Dark mode (system-aware + manual toggle with `data-theme`)\n  - Keyboard shortcuts: `/` search · `g h/p/s` nav · `j/k` rows · `?` help\n  - Collapsible tool-result sections (auto-expand \u003e 500 chars)\n  - Copy-as-markdown + copy-code buttons\n  - Breadcrumbs + reading progress bar\n  - Filter bar on sessions table (project/model/date/text)\n  - Reading time estimates (`X min read`)\n  - Related pages panel at the bottom of every session\n  - Activity heatmap on the home page\n  - Model info cards with structured schema (provider, pricing, benchmarks)\n  - Auto-generated vs-comparison pages between AI models\n  - Append-only changelog timeline with pricing sparkline\n  - Project topic chips (GitHub-style tags on project cards)\n  - Agent labels (colored badges: Claude/Codex/Copilot/Cursor/Gemini)\n  - Recently-updated card on the home page\n  - Dataview-style structured queries in the command palette\n  - Hover-to-preview wikilinks\n  - Deep-link icons next to every heading\n  - Mobile-responsive + print-friendly\n\n### AI-consumable (v0.4)\nEvery HTML page has sibling machine-readable files at the same URL:\n\n- `\u003cpage\u003e.html` — human HTML with schema.org microdata\n- `\u003cpage\u003e.txt` — plain text version (no HTML tags)\n- `\u003cpage\u003e.json` — structured metadata + body\n\nSite-level AI-agent entry points:\n\n| File | What |\n|---|---|\n| [`/llms.txt`](https://llmstxt.org) | Short index per [llmstxt.org spec](https://llmstxt.org) |\n| `/llms-full.txt` | Flattened plain-text dump (~5 MB cap) — paste into any LLM's context |\n| `/graph.jsonld` | Schema.org JSON-LD entity/concept/source graph |\n| `/sitemap.xml` | Standard sitemap with `lastmod` |\n| `/rss.xml` | RSS 2.0 feed of newest sessions |\n| `/robots.txt` | AI-friendly robots with llms.txt reference |\n| `/ai-readme.md` | AI-specific navigation instructions |\n| `/manifest.json` | Build manifest with SHA-256 hashes + perf budget |\n\nEvery page also includes an `\u003c!-- llmwiki:metadata --\u003e` HTML comment that AI agents can parse without fetching the separate `.json` sibling.\n\n### Quality \u0026 governance (v1.0)\n- **4-factor confidence scoring** — source count, source quality, recency, cross-references; with Ebbinghaus-inspired decay per content-type\n- **5-state lifecycle machine** — draft → reviewed → verified → stale → archived with 90-day auto-stale\n- **16 lint rules** — 8 structural (frontmatter, link integrity, orphans, freshness, duplicates, index sync…) + 3 LLM-powered (contradictions, claim verification, summary accuracy) + stale_candidates (#51) + tags_topics_convention (#302) + stale_reference_detection (#303) + frontmatter_count_consistency (#378) + tools_consistency (#378)\n- **Auto Dream** — MEMORY.md consolidation after 24h + 5 sessions: resolve relative dates, prune outdated, 200-line cap\n- **9 navigation files** — CLAUDE.md, AGENTS.md, MEMORY.md, SOUL.md, CRITICAL_FACTS.md, hints.md, hot.md + per-project hot caches\n\n### Obsidian-native experience (v1.0)\n- **`link-obsidian` CLI** — symlinks the whole project into an Obsidian vault; graph view + backlinks + full-text search just work\n- **Dataview dashboard** — 10 ready-to-use queries (recently updated, by confidence, by lifecycle, by project, by entity type, open questions, stale pages)\n- **Templater templates** — 4 templates for source/entity/concept/synthesis pages, seeded with confidence + lifecycle + today's date\n- **Category pages** — tag-based index pages in both Dataview (Obsidian) and static markdown (HTML) modes\n- **Integration guide** — [`docs/obsidian-integration.md`](docs/obsidian-integration.md) covers 6 recommended plugins with per-plugin configs\n\n### Automation\n- **SessionStart hook** — auto-syncs new sessions in the background on every Claude Code launch\n- **Auto-build on sync** — `/wiki-sync` triggers `/wiki-build` (configurable; default on)\n- **One-shot pipeline** — `llmwiki all` runs build → graph → export → lint in a single command (`--strict` for CI)\n- **MCP server** — 12 production tools (query, search, list, read, lint, sync, export, + confidence, lifecycle, dashboard, entity search, category browse) queryable from any MCP client (Claude Desktop, Cline, Cursor, ChatGPT desktop)\n- **Pending ingest queue** — SessionStart hook converts + queues; `/wiki-sync` processes queue\n- **No servers, no database, no npm** — Python stdlib + `markdown`. Syntax highlighting loads from a highlight.js CDN at view time.\n\n## How it works\n\n```\n┌─────────────────────────────────────┐\n│  ~/.claude/projects/*/*.jsonl       │  ← Claude Code sessions\n│  ~/.codex/sessions/**/*.jsonl       │  ← Codex CLI sessions\n│  ~/Library/.../Cursor/workspaceS…   │  ← Cursor\n│  ~/Documents/Obsidian Vault/        │  ← Obsidian\n│  ~/.gemini/                         │  ← Gemini CLI\n└──────────────┬──────────────────────┘\n               │\n               ▼   python3 -m llmwiki sync\n┌─────────────────────────────────────┐\n│  raw/sessions/\u003cproject\u003e/            │  ← immutable markdown (Karpathy layer 1)\n│     2026-04-08-\u003cslug\u003e.md            │\n└──────────────┬──────────────────────┘\n               │\n               ▼   /wiki-ingest  (your coding agent)\n┌─────────────────────────────────────┐\n│  wiki/sources/\u003cslug\u003e.md             │  ← LLM-generated wiki (Karpathy layer 2)\n│  wiki/entities/\u003cName\u003e.md            │\n│  wiki/concepts/\u003cName\u003e.md            │\n│  wiki/syntheses/\u003cName\u003e.md           │\n│  wiki/comparisons/\u003cName\u003e.md         │\n│  wiki/questions/\u003cName\u003e.md           │\n│  wiki/index.md, overview.md, log.md │\n└──────────────┬──────────────────────┘\n               │\n               ▼   python3 -m llmwiki build\n┌─────────────────────────────────────┐\n│  site/                              │  ← static HTML + AI exports\n│  ├── index.html, style.css, ...     │\n│  ├── sessions/\u003cproject\u003e/\u003cslug\u003e.html │\n│  ├── sessions/\u003cproject\u003e/\u003cslug\u003e.txt  │  (AI sibling)\n│  ├── sessions/\u003cproject\u003e/\u003cslug\u003e.json │  (AI sibling)\n│  ├── llms.txt, llms-full.txt        │\n│  ├── graph.jsonld                   │\n│  ├── sitemap.xml, rss.xml           │\n│  ├── robots.txt, ai-readme.md       │\n│  ├── manifest.json                  │\n│  └── search-index.json              │\n└─────────────────────────────────────┘\n```\n\nSee [docs/architecture.md](docs/architecture.md) for the full 3-layer Karpathy + 8-layer build breakdown.\n\n## Documentation\n\nFull production documentation lives under [`docs/`](docs/). The editorial\nhub is **[`docs/index.md`](docs/index.md)** — tutorials, per-agent guides,\nreference, and deployment, all in one place.\n\n**Start here:**\n\n| Goal | Read |\n|---|---|\n| Install and build your first site in 10 minutes | [Tutorial 01 → 02](docs/tutorials/01-installation.md) |\n| Use llmwiki with Claude Code | [Tutorial 03](docs/tutorials/03-use-with-claude-code.md) |\n| Use llmwiki with Codex CLI | [Tutorial 04](docs/tutorials/04-use-with-codex-cli.md) |\n| Query / lint / review your wiki daily | [Tutorial 05](docs/tutorials/05-querying-your-wiki.md) |\n| Point llmwiki at an existing Obsidian / Logseq vault | [Tutorial 06](docs/tutorials/06-bring-your-obsidian-vault.md) |\n| See four real end-to-end workflows | [Tutorial 07](docs/tutorials/07-example-workflows.md) |\n\nContributing to docs? See the **[style guide](docs/style-guide.md)**.\n\n## Install\n\n### macOS / Linux\n\n```bash\ngit clone https://github.com/Pratiyush/llm-wiki.git\ncd llm-wiki\n./setup.sh\n```\n\n### Windows\n\n```cmd\ngit clone https://github.com/Pratiyush/llm-wiki.git\ncd llm-wiki\nsetup.bat\n```\n\n### With pip (v0.3+)\n\n```bash\npip install -e .                # basic — everything you need\npip install -e '.[pdf]'         # + PDF ingestion\npip install -e '.[dev]'         # + pytest + ruff\npip install -e '.[all]'         # all of the above\n```\n\nSyntax highlighting is now powered by [highlight.js](https://highlightjs.org/), loaded from a CDN at view time — no optional deps required.\n\n### What setup does\n\n1. Creates `raw/`, `wiki/`, `site/` data directories\n2. Installs the `llmwiki` Python package in-place\n3. Detects your coding agents and enables matching adapters\n4. Optionally offers to install the `SessionStart` hook into `~/.claude/settings.json` for auto-sync\n5. Runs a first sync so you see output immediately\n\n## For maintainers\n\nRunning the project? The governance scaffold lives under [`docs/maintainers/`](docs/maintainers) and is loaded by a dedicated skill:\n\n| File | What it's for |\n|---|---|\n| [`CONTRIBUTING.md`](CONTRIBUTING.md) | Short rules for contributors — read this first |\n| [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md) | Contributor Covenant 2.1 |\n| [`SECURITY.md`](SECURITY.md) | Disclosure process for redaction bugs, XSS, data leaks |\n| [`docs/maintainers/ARCHITECTURE.md`](docs/maintainers/ARCHITECTURE.md) | One-page system diagram + layer boundaries + what NOT to add |\n| [`docs/maintainers/REVIEW_CHECKLIST.md`](docs/maintainers/REVIEW_CHECKLIST.md) | Canonical code-review criteria |\n| [`docs/maintainers/RELEASE_PROCESS.md`](docs/maintainers/RELEASE_PROCESS.md) | Version bump → CHANGELOG → tag → build → publish |\n| [`docs/maintainers/TRIAGE.md`](docs/maintainers/TRIAGE.md) | Label taxonomy + stale-issue policy |\n| [`docs/maintainers/ROADMAP.md`](docs/maintainers/ROADMAP.md) | Near-term plan + release themes |\n| [`docs/maintainers/DECLINED.md`](docs/maintainers/DECLINED.md) | Graveyard of declined ideas with reasons |\n\nFour Claude Code slash commands automate the common ops:\n\n- `/review-pr \u003cN\u003e` — apply the REVIEW_CHECKLIST to a PR and post findings\n- `/triage-issue \u003cN\u003e` — label + milestone + priority a new issue\n- `/release \u003cversion\u003e` — walk the release process step by step\n- `/maintainer` — meta-skill that loads every governance doc as context\n\n## Running E2E tests\n\nThe unit suite (`pytest tests/` — 472 tests) runs in milliseconds and\ncovers every module. The **end-to-end suite** under `tests/e2e/` is\nseparate: it builds a minimal demo site, serves it on a random port,\ndrives a real browser via [Playwright](https://playwright.dev/python),\nand runs scenarios written in [Gherkin](https://cucumber.io/docs/gherkin/)\nvia [pytest-bdd](https://pytest-bdd.readthedocs.io/).\n\nWhy both? Unit tests lock the contract at the module boundary;\nE2E locks the contract at the **user's browser**. A diff that passes\nunit tests but breaks the Cmd+K palette will fail E2E.\n\nInstall the extras (one-time, ~300 MB for Chromium):\n\n```bash\npip install -e '.[e2e]'\npython -m playwright install chromium\n```\n\nRun the suite:\n\n```bash\npytest tests/e2e/ --browser=chromium\n```\n\nRun a single feature:\n\n```bash\npytest tests/e2e/test_command_palette.py --browser=chromium -v\n```\n\nThe E2E suite is **excluded from the default `pytest tests/` run**\n(see the `--ignore=tests/e2e` addopt in `pyproject.toml`) so you\ncan iterate on the unit suite without waiting for browser installs.\nCI runs the E2E job as a separate workflow (`.github/workflows/e2e.yml`)\nthat only fires on PRs touching `build.py`, the viz modules, or\n`tests/e2e/**`.\n\nFeature files live under `tests/e2e/features/` — one per UI area\n(homepage, session page, command palette, keyboard nav, mobile nav,\ntheme toggle, copy-as-markdown, **responsive breakpoints**, **edge\ncases**, **accessibility**, **visual regression**). Step definitions\nare all in `tests/e2e/steps/ui_steps.py`. Adding a new scenario is\nusually a 2-line change to a `.feature` file plus maybe one new step.\n\nRun locally with an HTML report:\n\n```bash\npytest tests/e2e/ --browser=chromium \\\n  --html=e2e-report/index.html --self-contained-html\nopen e2e-report/index.html     # macOS — opens the browseable report\n```\n\n**Where to see test reports:**\n\n| What | Where |\n|---|---|\n| Unit test results | GitHub Actions → `ci.yml` → latest run → `lint-and-test` job logs |\n| E2E HTML report | GitHub Actions → `e2e.yml` → latest run → Artifacts → `e2e-html-report` (14-day retention) |\n| Visual regression screenshots | Same run → Artifacts → `e2e-screenshots` |\n| Playwright traces (failed runs only) | Same run → Artifacts → `playwright-traces` (open with `playwright show-trace \u003czip\u003e`) |\n| Demo site deploy status | GitHub Actions → `pages.yml` → latest run |\n\nLocally, the HTML report is one file (`e2e-report/index.html`) that\nyou can open in any browser — pass/fail per scenario, duration,\nstdout/stderr, screenshot on failure.\n\n## Scheduled sync\n\nFor a daily / weekly cron-style sync, schedule `llmwiki sync` directly via your OS's native job runner (`launchd` on macOS, `systemd` on Linux, Task Scheduler on Windows). Paths and adapter selection come from `examples/sessions_config.json`.\n\n## CLI reference\n\n```bash\nllmwiki init                    # scaffold raw/ wiki/ site/ + seed nav files\nllmwiki sync                    # convert .jsonl → markdown (auto-build + auto-lint if configured)\nllmwiki build                   # compile static HTML + AI exports\nllmwiki serve                   # local HTTP server on 127.0.0.1:8765\nllmwiki adapters                # list available adapters + configured state (v1.0)\nllmwiki graph                   # build knowledge graph (v0.2)\nllmwiki watch                   # file watcher with debounce (v0.2)\nllmwiki export-obsidian         # write wiki to Obsidian vault (v0.2)\nllmwiki lint                    # 16-rule wiki lint (v1.2)\nllmwiki export \u003cformat\u003e         # AI-consumable exports (v0.4)\nllmwiki synthesize              # auto-ingest synthesis pipeline (v0.5)\nllmwiki all                     # build → graph → export → lint in one shot (v1.2)\nllmwiki version\n```\n\nEach subcommand has its own `--help`. All commands are also wrapped in one-click shell/batch scripts: `sync.sh`/`.bat`, `build.sh`/`.bat`, `serve.sh`/`.bat`, `upgrade.sh`/`.bat`.\n\n## Works with\n\n| Agent | Adapter | Status | Added in |\n|---|---|---|---|\n| [Claude Code](https://claude.com/claude-code) | `llmwiki.adapters.claude_code` | ✅ Production | v0.1 |\n| [Obsidian](https://obsidian.md) (input) | `llmwiki.adapters.obsidian` | ✅ Production | v0.1 |\n| [Obsidian](https://obsidian.md) (output) | `llmwiki.obsidian_output` | ✅ Production | v0.2 |\n| [Codex CLI](https://github.com/openai/codex) | `llmwiki.adapters.codex_cli` | ✅ Production | v0.3 |\n| [Cursor](https://cursor.com) | `llmwiki.adapters.cursor` | ✅ Production | v0.5 |\n| [Gemini CLI](https://ai.google.dev/gemini-api) | `llmwiki.adapters.gemini_cli` | ✅ Production | v0.5 |\n| PDF files | `llmwiki.adapters.pdf` | ✅ Production | v0.5 |\n| [Copilot Chat](https://github.com/features/copilot) | `llmwiki.adapters.copilot_chat` | ✅ Production | v0.9 |\n| [Copilot CLI](https://github.com/features/copilot) | `llmwiki.adapters.copilot_cli` | ✅ Production | v0.9 |\n| OpenCode / OpenClaw | — | ⏸ Deferred | — |\n\nAdding a new agent is [one small file](docs/framework.md) — subclass `BaseAdapter`, declare `SUPPORTED_SCHEMA_VERSIONS`, ship a fixture + snapshot test.\n\n## MCP server\n\nllmwiki ships its own MCP server (stdio transport, no SDK dependency) so any MCP client can query your wiki directly.\n\n```bash\npython3 -m llmwiki.mcp   # runs on stdin/stdout\n```\n\nTwelve production tools (7 core + 5 added in v1.0 `#159`):\n\n| Tool | What |\n|---|---|\n| `wiki_query(question, max_pages)` | Keyword search + page content (no LLM synthesis) |\n| `wiki_search(term, include_raw)` | Raw grep over wiki/ (+ optional raw/) |\n| `wiki_list_sources(project)` | List raw source files with metadata |\n| `wiki_read_page(path)` | Read one page (path-traversal guarded) |\n| `wiki_lint()` | Orphans + broken-wikilinks report |\n| `wiki_sync(dry_run)` | Trigger the converter |\n| `wiki_export(format)` | Return any AI-consumable export (llms.txt, jsonld, sitemap, rss, manifest) |\n| `wiki_confidence(min, max)` | Pages by confidence range (v1.0) |\n| `wiki_lifecycle(state)` | Pages by draft/reviewed/verified/stale/archived (v1.0) |\n| `wiki_dashboard()` | Health summary: counts by type, lifecycle, confidence (v1.0) |\n| `wiki_entity_search(name, entity_type)` | Search entities by name substring or type (v1.0) |\n| `wiki_category_browse(tag)` | Browse tags with counts, drill into specific tag (v1.0) |\n\nRegister in your MCP client's config — e.g. for Claude Desktop, add to `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"llmwiki\": {\n      \"command\": \"python3\",\n      \"args\": [\"-m\", \"llmwiki.mcp\"]\n    }\n  }\n}\n```\n\n## Configuration\n\nSingle JSON config at `examples/sessions_config.json`. Copy to `config.json` and edit:\n\n```json\n{\n  \"filters\": {\n    \"live_session_minutes\": 60,\n    \"exclude_projects\": []\n  },\n  \"redaction\": {\n    \"real_username\": \"YOUR_USERNAME\",\n    \"replacement_username\": \"USER\",\n    \"extra_patterns\": [\n      \"(?i)(api[_-]?key|secret|token|bearer|password)...\",\n      \"sk-[A-Za-z0-9]{20,}\"\n    ]\n  },\n  \"truncation\": {\n    \"tool_result_chars\": 500,\n    \"bash_stdout_lines\": 5\n  },\n  \"adapters\": {\n    \"obsidian\": {\n      \"vault_paths\": [\"~/Documents/Obsidian Vault\"]\n    }\n  }\n}\n```\n\nAll paths, regexes, truncation limits, and per-adapter settings are tunable. See [docs/configuration.md](docs/configuration.md).\n\n## `.llmwikiignore`\n\nGitignore-style pattern file at the repo root. Skip entire projects, dates, or specific sessions without touching config:\n\n```\n# Skip a whole project\nconfidential-client/\n# Skip anything before a date\n*2025-*\n# Keep exception\n!confidential-client/public-*\n```\n\n## Karpathy's LLM Wiki pattern\n\nThis project follows the three-layer structure described in [Karpathy's gist](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f):\n\n1. **Raw sources** (`raw/`) — immutable. Session transcripts converted from `.jsonl`.\n2. **The wiki** (`wiki/`) — LLM-generated. One page per entity, concept, source. Interlinked via `[[wikilinks]]`.\n3. **The schema** (`CLAUDE.md`, `AGENTS.md`) — tells your agent how to ingest and query.\n\nSee [docs/architecture.md](docs/architecture.md) for the full breakdown and how it maps to the file tree.\n\n## Design principles\n\n- **Stdlib first** — only mandatory runtime dep is `markdown`. `pypdf` is an optional extra for PDF ingestion.\n- **Works offline** — no Google fonts, no external CSS. Syntax highlighting loads from a highlight.js CDN but degrades gracefully without it.\n- **Redact by default** — username, API keys, tokens, emails all get redacted before entering the wiki.\n- **Idempotent everything** — re-running any command is safe and cheap.\n- **Agent-agnostic core** — the converter doesn't know which agent produced the `.jsonl`; adapters translate.\n- **Privacy by default** — localhost-only binding, no telemetry, no cloud calls.\n- **Dual-format output (v0.4)** — every page ships both for humans (HTML) and AI agents (TXT + JSON + JSON-LD + sitemap + llms.txt).\n\n## Docs\n\n- [Getting started](docs/getting-started.md) — 5-minute quickstart\n- **[Setup guide](docs/tutorials/setup-guide.md)** — 15-minute end-to-end tutorial: local setup → deploy to GitHub Pages → customization (v1.0)\n- [Obsidian integration](docs/obsidian-integration.md) — 5-minute setup, 6 recommended plugins, config recipes (v1.0)\n- [Architecture](docs/architecture.md) — Karpathy 3-layer + 8-layer build breakdown\n- [Configuration](docs/configuration.md) — every tuning knob\n- [Privacy](docs/privacy.md) — redaction rules + `.llmwikiignore` + localhost binding\n- [Windows setup](docs/windows-setup.md) — Windows-specific gotchas\n- [Framework](docs/framework.md) — Open Source Framework v4.1 adapted for agent-native dev tools\n- [Research](docs/research.md) — Phase 1.25 analysis of 15 prior LLM Wiki implementations\n- [Feature matrix](docs/feature-matrix.md) — all 161 features across 16 categories\n- [Roadmap](docs/roadmap.md) — Phase × Layer × Item MoSCoW table\n- **Translations**: [i18n/zh-CN](docs/i18n/zh-CN/), [i18n/ja](docs/i18n/ja/), [i18n/es](docs/i18n/es/)\n\nPer-adapter docs:\n- [Claude Code adapter](docs/adapters/claude-code.md)\n- [Codex CLI adapter](docs/adapters/codex-cli.md)\n- [Cursor adapter](docs/adapters/cursor.md)\n- [Gemini CLI adapter](docs/adapters/gemini-cli.md)\n- [Obsidian adapter](docs/adapters/obsidian.md)\n- [Copilot adapter (Chat + CLI)](docs/adapters/copilot.md)\n\n## Releases\n\n| Version | Focus | Tag |\n|---|---|---|\n| [v0.1.0](https://github.com/Pratiyush/llm-wiki/releases/tag/v0.1.0) | Core release — Claude Code adapter, god-level HTML UI, schema, CI, plugin scaffolding | `v0.1.0` |\n| [v0.2.0](https://github.com/Pratiyush/llm-wiki/releases/tag/v0.2.0) | Extensions — 3 new slash commands, 3 new adapters, Obsidian bidirectional, full MCP server | `v0.2.0` |\n| [v0.3.0](https://github.com/Pratiyush/llm-wiki/releases/tag/v0.3.0) | PyPI packaging, eval framework, i18n scaffold | `v0.3.0` |\n| [v0.4.0](https://github.com/Pratiyush/llm-wiki/releases/tag/v0.4.0) | AI + human dual format — per-page .txt/.json siblings, llms.txt, JSON-LD graph, sitemap, RSS, schema.org microdata, reading time, related pages, activity heatmap, deep-link anchors, build manifest, link checker, `wiki_export` MCP tool | `v0.4.0` |\n| v0.5.0 – v0.9.0 | Internal sprint milestones — features (`_context.md`, auto-ingest, qmd export, model-profile schema, activity heatmap, Copilot adapters, etc.) shipped consolidated under the v0.9.x line. No standalone tags were published. | — |\n| [v0.9.1](https://github.com/Pratiyush/llm-wiki/releases/tag/v0.9.1) | Sprint 1 \u0026 2 foundation — link-obsidian CLI, 4-factor confidence scoring, 5-state lifecycle machine, llmbook-reference skill, 7 entity types, flat raw/ naming, pending ingest queue, `_context.md` stubs, meeting + Jira adapters, configurable Web Clipper intake, rich log format | `v0.9.1` |\n| [v0.9.2](https://github.com/Pratiyush/llm-wiki/releases/tag/v0.9.2) | Sprint 3 quality — 11 lint rules (8 basic + 3 LLM-powered), Auto Dream MEMORY.md consolidation, Dataview dashboard template, category pages (Dataview + static), auto-build on sync + configurable lint schedule | `v0.9.2` |\n| [v0.9.3](https://github.com/Pratiyush/llm-wiki/releases/tag/v0.9.3) | Sprint 3 polish — Obsidian Templater templates, integration guide, two-way editing tests, MCP server 7→12 tools, adapter config validation, pipeline fix (sigstore, PyPI gate) | `v0.9.3` |\n| [v0.9.4](https://github.com/Pratiyush/llm-wiki/releases/tag/v0.9.4) | Session C1 (Sprint 4) — multi-agent skill installer, enhanced search with facets, configurable scheduled sync (launchd/systemd/Task Scheduler), CI wiki-checks workflow | `v0.9.4` |\n| [v0.9.5](https://github.com/Pratiyush/llm-wiki/releases/tag/v0.9.5) | Docs polish + consistency audit before v1.0.0 | `v0.9.5` |\n| [v1.0.0](https://github.com/Pratiyush/llm-wiki/releases/tag/v1.0.0) | Production-ready Obsidian integration — full v1.0 scope | `v1.0.0` |\n| [v1.1.0-rc1](https://github.com/Pratiyush/llm-wiki/releases/tag/v1.1.0-rc1) | Solo quick-win sprint — candidates workflow, Ollama scaffold, prompt-cache scaffold | `v1.1.0-rc1` |\n| [v1.1.0-rc2](https://github.com/Pratiyush/llm-wiki/releases/tag/v1.1.0-rc2) | Session E — interactive graph viewer + remaining code-only v1.1 work | `v1.1.0-rc2` |\n| [v1.1.0-rc3](https://github.com/Pratiyush/llm-wiki/releases/tag/v1.1.0-rc3) | Gap-sweep bundle — state portability, quarantine, sync --status, log CLI, synthesize --estimate breakdown, tag family, stale references, graph context menu, raw immutability, AI-sessions default | `v1.1.0-rc3` |\n| [v1.1.0-rc4](https://github.com/Pratiyush/llm-wiki/releases/tag/v1.1.0-rc4) | Navigation + quality — graph `site_url` resolver (99.7% → 0% dead clicks), `llmwiki backlinks` CLI (95% → 0% orphan pages), source-code → GitHub link rewriter (471 → 100 broken), verify-before-fixing contribution rule | `v1.1.0-rc4` |\n| [v1.1.0-rc5](https://github.com/Pratiyush/llm-wiki/releases/tag/v1.1.0-rc5) | Site audit + 5 closed batches — session-local ref stripping (351 → 247 broken), cheatsheet, README/CONTRIBUTING compile, expanded E2E, slash-CLI parity test, 4 adapter docs, Ollama tutorial, dual-mode docs skeleton, `/wiki-synthesize` slash | `v1.1.0-rc5` |\n| [v1.1.0-rc6](https://github.com/Pratiyush/llm-wiki/releases/tag/v1.1.0-rc6) | rc6 batch — fixed adapter tag hardcoded to `claude-code` for every adapter (#346), tutorial UX polish with in-page TOC + prev/next + edit-on-GitHub (#282), command palette now indexes 107 doc pages + 17 slash commands (#277), content-hash cache for `md_to_html` (#283) | `v1.1.0-rc6` |\n| [v1.1.0-rc7](https://github.com/Pratiyush/llm-wiki/releases/tag/v1.1.0-rc7) | rc7 batch — automatic AI-suggested tags during synthesis (#351), link-checker config fix (#348, #350, #353) | `v1.1.0-rc7` |\n| [v1.1.0-rc8](https://github.com/Pratiyush/llm-wiki/releases/tag/v1.1.0-rc8) | rc8 batch — complete Mode B agent-delegate backend (#316): new `llmwiki synthesize --list-pending` + `--complete \u003cuuid\u003e` CLI subcommands, `/wiki-sync` step 6 auto-detects pending prompts, Mode B ships end-to-end without an API key | `v1.1.0-rc8` |\n| [**v1.2.0**](https://github.com/Pratiyush/llm-wiki/releases/tag/v1.2.0) | **First stable on the 1.x line** — `llmwiki all` one-shot pipeline runner, Playwright + axe-core E2E suite (#384), project-stub auto-seeding, 2 new lint rules, critical export-fidelity + sync-collision fixes, 10 UX-critique items (#387). PyPI distribution name: `llm-notebook`. | `v1.2.0` |\n\n## Roadmap\n\nShipped milestones:\n\n- **v0.5.0** — Folder-level `_context.md`, auto-ingest, adapter graduations, lazy search index, scheduled sync, WCAG, E2E tests ([milestone](https://github.com/Pratiyush/llm-wiki/milestone/4))\n- **v0.6.0** — qmd export, GitLab Pages CI, PyPI release automation, maintainer governance scaffold ([milestone](https://github.com/Pratiyush/llm-wiki/milestone/5))\n- **v0.7.0** — Structured model-profile schema, vs-comparison pages, append-only changelog timeline ([milestone](https://github.com/Pratiyush/llm-wiki/milestone/7))\n- **v0.8.0** — 365-day activity heatmap, tool-calling bar chart, token usage card, session metrics frontmatter ([milestone](https://github.com/Pratiyush/llm-wiki/milestone/8))\n- **v0.9.0** — Project topics, agent labels, Copilot adapters, image pipeline, highlight.js, public demo deployment\n- **v0.9.x** — Sprint 1-4 foundation for v1.0.0 Obsidian integration: confidence scoring, lifecycle state machine, 9 navigation files, 11 lint rules, Auto Dream, Dataview dashboard, multi-agent skills, 12-tool MCP server, meeting + Jira adapters\n\nActive milestones:\n\n| Milestone | Focus | Tracking |\n|---|---|---|\n| **v1.0.0** | Final docs polish + PyPI trusted publisher + release | [Milestone](https://github.com/Pratiyush/llm-wiki/milestone/9) |\n| **v1.1.0** | Ollama backend, prompt caching, interactive graph viewer, Homebrew tap | [Milestone](https://github.com/Pratiyush/llm-wiki/milestone/10) |\n| **v1.2.0** | ChatGPT + OpenCode adapters, vault-overlay mode, tree-aware search, cache tiers | [Milestone](https://github.com/Pratiyush/llm-wiki/milestone/11) |\n\n### Deployment targets\n\n- **GitHub Pages** — shipped in v0.1 via `.github/workflows/pages.yml` (triggers on push to master). See [`docs/deploy/github-pages.md`](docs/deploy/github-pages.md).\n- **Docker / GHCR** — pull and run: `docker compose pull \u0026\u0026 docker compose up -d`. Image published to `ghcr.io/pratiyush/llm-wiki` on every tag push. See [`docs/deploy/docker.md`](docs/deploy/docker.md).\n- **GitLab Pages** — copy [`.gitlab-ci.yml.example`](.gitlab-ci.yml.example) → `.gitlab-ci.yml`. See [`docs/deploy/gitlab-pages.md`](docs/deploy/gitlab-pages.md).\n- **Vercel / Netlify** — static deploy after `llmwiki build`. See [`docs/deploy/vercel-netlify.md`](docs/deploy/vercel-netlify.md).\n- **Any static host** — `llmwiki build` writes to `site/`, which you can `rsync`/`scp` anywhere.\n\n## Acknowledgements\n\n- [Andrej Karpathy](https://twitter.com/karpathy) for [the LLM Wiki idea](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f)\n- [SamurAIGPT/llm-wiki-agent](https://github.com/SamurAIGPT/llm-wiki-agent), [lucasastorian/llmwiki](https://github.com/lucasastorian/llmwiki), [xoai/sage-wiki](https://github.com/xoai/sage-wiki), and [bashiraziz/llm-wiki-template](https://github.com/bashiraziz/llm-wiki-template) — prior art that shaped this.\n- [Python Markdown](https://python-markdown.github.io/) for the rendering pipeline, and [highlight.js](https://highlightjs.org/) for client-side syntax highlighting.\n- [llmstxt.org](https://llmstxt.org) for the llms.txt spec used in v0.4.\n\n## License\n\n[MIT](LICENSE) © Pratiyush\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpratiyush%2Fllm-wiki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpratiyush%2Fllm-wiki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpratiyush%2Fllm-wiki/lists"}