Distill AI coding sessions into weekly reports, ADRs and a knowledge graph - self-hosted
io.github.johnnywuj81/tokenknows MCP Server
This MCP server, io.github.johnnywuj81/tokenknows, is a self-hosted tool that distills AI coding sessions into living knowledge, including weekly reports, ADRs, incident reviews, books, agent skills, and a knowledge graph. It targets developer workflows across tools and editors.
๐ ๏ธ Key Features
Self-hosted knowledge distillation from AI coding sessions
TokenKnows demo: capture an AI coding session, distill it into a weekly report and knowledge graph
What is TokenKnows?
You spend hours pair-programming with Claude Code, Codex, and Cursor. The decisions, bug hunts, and design trade-offs from those sessions evaporate the moment the terminal closes. TokenKnows captures them automatically and distills them into structured, evidence-linked knowledge assets:
๐ก Captures everything โ Claude Code, Codex, Cursor, VS Code, GitHub PRs/commits/issues, and local docs, all via local file watchers and API polling. No webhooks, no tunnels.
๐ Evidence-linked โ every paragraph traces back to the original PR / conversation / commit, ranked by cosine ร trust ร recency across โฅ2 sources.
๐ Local-first, zero egress by default โ a three-layer LLM egress gate (instance โง project โง task) with full audit logging. Pair it with Ollama and run the whole pipeline with zero cloud keys.
Prerequisite: the TokenKnows backend at http://localhost:8001and the web UI at http://localhost:5173 (see Quick start), plus uv (the plugin pulls the MCP server from PyPI via uvx). All plugin env vars have working local defaults โ export TOKENKNOWS_API_BASE / TOKENKNOWS_API_TOKEN / TOKENKNOWS_DEFAULT_PROJECT / TOKENKNOWS_WEB_BASE only for non-default setups. Register/login in the web UI and create an API token under Project Settings โ MCP ๆฅๅ ฅ when your backend requires auth.
Platform
How
Claude Code
/plugin marketplace add johnnywuj81/tokenknows โ /plugin install tokenknows@tokenknows โ full walkthrough in tokenknows-plugin/README.md (5-minute quickstart)
Codex
codex plugin marketplace add johnnywuj81/tokenknows โ codex plugin add tokenknows@tokenknows (loads skills, commands and the MCP server; local-clone alternative in codex-plugin/README.md)
Download the .vsix from Releases โ code --install-extension tokenknows-vscode-*.vsix
The plugin gives your AI tool MCP tools (submit_session_events, distill_document, list_assets, get_asset, get_asset_chapters, search_entity) plus slash commands like /tokenknows:weekly and /tokenknows:adr.
Quick start
bash
# 1. (Optional but recommended) Ollama โ fully local inference, zero cloud keys
ollama serve &
ollama pull minimax-m2:cloud # or gpt-oss:20b, qwen2.5, ...# 2. Backend (FastAPI + SQLite persistence + 3-layer LLM egress gate)cd code/tokenknows-api
python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"cp .env.local.example .env.local # defaults to Ollama; edit to add cloud providers
.venv/bin/uvicorn app.main:app --host 127.0.0.1 --port 8001
# 3. Frontend (React 19 + Vite)cd code/tokenknows-web
npm install
npm run dev
# open http://localhost:5173 โ talks to the real backend (mocks are opt-in via ?msw=1)# (Optional) seed demo data
./engineering_handoff/demo-seed.sh
Platform support: macOS โ full experience (collectors auto-start via launchd). Linux โ backend, frontend, and collectors all run manually (python3 plugins/<x>/sync.py --watch); the launchd scripts don't apply. Windows โ untested; WSL2 recommended.
Data collectors
All local โ no ngrok, no public webhooks. On macOS they restart on crash and on reboot (launchd).
Collector
Source
Mode
claude-code
~/.claude/projects/*.jsonl
30s polling, incremental offsets
codex
~/.codex/sessions/**/rollout-*.jsonl
30s polling, incremental offsets
cursor
Cursor's state.vscdb (read-only SQLite)
60s polling
github
GitHub REST API ยท PRs / issues / commits
5min polling (gh auth token)
vscode
VS Code extension onDidSaveTextDocument
buffered, 10s flush
local-docs
~/Documents.md.txt.pdf (watchdog)
realtime, 2s debounce
bash
./scripts/launchd/install.sh # macOS: install all 5 Python collectors as LaunchAgents
launchctl list | grep com.tokenknows
tail -f ~/Library/Logs/tokenknows/*.log
Every event carries a trust score (0.6 ร source_authority + 0.4 ร extraction_confidence); the evidence stage ranks citations by 0.6 ร cosine + 0.25 ร trust + 0.15 ร recency and enforces โฅ2 distinct sources.
Architecture
Collectors feed an event store (SQLite). A five-stage pipeline (collect โ outline โ content โ evidence โ assess) turns events into assets. The LLM Gateway unifies four providers (Anthropic / OpenAI / MiniMax / Ollama) with per-task routing and fallback chains โ and refuses any cloud call unless all three egress switches are on.
Most in-depth docs are in Chinese (the project's working language). Code comments are predominantly Chinese too; issues and PRs in English or Chinese are both welcome.
API token (tkk_...) or JWT bearer for the backend; create one in the web UI under Project Settings - MCP Access (optional for default local deployments)
TOKENKNOWS_DEFAULT_PROJECTdefault proj-demo-001
Default project_id for event submission and distill
TOKENKNOWS_WEB_BASEdefault http://127.0.0.1:5173
Web UI base URL used to build view_url links returned by distill/list tools (login required to open them)