Wikifier
A zero-dependency codebase wiki for AI agents — token-efficient maps so LLMs look things up instead of re-reading full sources.
Wikifier is an agent-to-agent tool: it builds a living map of a project (health matrix, dependency graph, short file summaries) and agents keep that map current as they work. Humans can peek via a small dashboard; the product is the agent loop, not a general docs site or IDE.
Works from small scripts to large monorepos (Python + JavaScript/TypeScript imports, barrels, cycles, incremental updates).
Why
Context windows are finite. Re-reading a large file to answer “what is this and who depends on it?” wastes tokens.
Wikifier keeps a small set of artifacts agents can query:
| Artifact | Role |
|---|---|
file_health.md |
🟢 / 🟡 / 🔴 matrix — what to trust, what to fix first |
library.md |
File tree, Mermaid dependency map, import tables, cycles + confidence |
*.wiki.md |
Short per-file “what this is for” notes (agent-maintained) |
journal/ |
Semantic why trail from record-change |
Lookup beats re-ingest. That’s the whole idea.
Quick start
pip install wikifier # pure Python stdlib core — no runtime deps
pip install wikifier[mcp] # optional Model Context Protocol (MCP) server
cd /path/to/your/project
wikifier init
wikifier update-maps # dependency graph + library.md
wikifier check-changes
wikifier health --summary
Always set an explicit root for external trees:
WIKIFIER_PROJECT_ROOT=/abs/path/to/project wikifier check-changes
Agent loop
Full protocol: skills/run.md.
wikifier check-changes
# prioritize 🔴 then 🟡 in file_health.md / pending_updates.md
# ... edit source ...
wikifier record-change "path/file.py" "why this changed" # required
# ... refresh that file’s wiki summary ...
wikifier mark-green "path/file.py"
wikifier update-maps # if imports/structure changed
record-change logs intent a git diff can’t reconstruct for the next agent (or human).
What you get
- Import analysis — Python + JS/TS (ESM, CommonJS, dynamic imports, path aliases, package exports); per-edge confidence; name-routed barrel expansion (precise leaves, not edge explosion)
- Incremental pipeline — pure-Python
update-maps: dirty parse → import cache → reverse deps → cycles →library.md - Scale — reverse index + barrel invalidation so one edit doesn’t re-scan the monorepo
- MCP tools — optional server for Claude, Cursor, Cline, and other MCP clients (
get_project_status,get_dependencies,get_file_wiki,record_change, …) - Zero core dependencies — stdlib only; forks can add their own stack on top
Performance (measured)
| Project | Scale | Full update-maps |
|---|---|---|
| llama_index | ~3.8k Python files | ~8.5s |
| Babylon.js | ~3.9k TS files, barrel-heavy | ~4.5 min (scoped re-runs ~80s) |
| Large trees (e.g. LLVM-scale) | tens of thousands of files | candidate scan in seconds |
Tests: python -m unittest discover tests (stdlib only).
Commands
| Command | Purpose |
|---|---|
wikifier init [--target DIR] |
Bootstrap project + human index.html |
wikifier check-changes |
Incremental scan → health / pending |
wikifier record-change <file> "reason" |
Log why (required after edits) |
wikifier mark-green <file> |
Mark wiki current |
wikifier update-maps [--directory=src/] [--max-files=N] |
Rebuild graph + library.md |
wikifier health [--summary|--json] |
Health matrix (machine-friendly flags) |
wikifier cycles |
Circular deps + break hints |
wikifier monitor / daemon |
Background maintenance |
wikifier serve |
Localhost dashboard with Run/Stop |
Library: from wikifier import check_changes, record_change, mark_green, health, update_maps.
MCP
WIKIFIER_PROJECT_ROOT=/abs/path/to/project wikifier-mcp
# or: python3 -m wikifier.mcp.server
Setup and tool list: wikifier/mcp/README.md.
Human dashboard (secondary)
wikifier init drops a single index.html. Prefer wikifier serve (e.g. http://localhost:8787/index.html) — file:// can’t load project files. The markdown artifacts and CLI/MCP tools stay the source of truth; the UI is a read-only window.
Scope
In: agent-maintained codebase wiki, dependency intelligence, token-saving lookup for LLMs and coding agents.
Out: general human documentation systems, IDE plugins, “docs for everyone” product growth.
Links
- PyPI · GitHub
- Agent protocol:
skills/run.md - Changelog:
CHANGELOG.md - Dogfood notes:
Findings/
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 wikifier-4.5.2.tar.gz.
File metadata
- Download URL: wikifier-4.5.2.tar.gz
- Upload date:
- Size: 318.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4fbdbf3520b5c19b020d4684ba563ddbf2cd60f64a050cc326f8300f9f475841
|
|
| MD5 |
f56fb3c997ee6f9893e03e23043cc688
|
|
| BLAKE2b-256 |
1a82258f15e3a6935455a5c0156465658b3f8bb55dd03df903948ad3f0d625f8
|
Provenance
The following attestation bundles were made for wikifier-4.5.2.tar.gz:
Publisher:
publish.yml on IronAdamant/wikifier
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wikifier-4.5.2.tar.gz -
Subject digest:
4fbdbf3520b5c19b020d4684ba563ddbf2cd60f64a050cc326f8300f9f475841 - Sigstore transparency entry: 2119168100
- Sigstore integration time:
-
Permalink:
IronAdamant/wikifier@72e8637a0ea4542957f288c12b61af1462018719 -
Branch / Tag:
refs/tags/v4.5.2 - Owner: https://github.com/IronAdamant
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@72e8637a0ea4542957f288c12b61af1462018719 -
Trigger Event:
push
-
Statement type:
File details
Details for the file wikifier-4.5.2-py3-none-any.whl.
File metadata
- Download URL: wikifier-4.5.2-py3-none-any.whl
- Upload date:
- Size: 283.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cba70fd93654bdda31fec39784cf1428afdb7ba8fe6752daeb1aeebad9fd1f7
|
|
| MD5 |
0700b1639cb986faa7b4b6c704520625
|
|
| BLAKE2b-256 |
77e778590e3823fcab982bf5dad80de3896b76a666778e114627fc17f308cafe
|
Provenance
The following attestation bundles were made for wikifier-4.5.2-py3-none-any.whl:
Publisher:
publish.yml on IronAdamant/wikifier
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wikifier-4.5.2-py3-none-any.whl -
Subject digest:
6cba70fd93654bdda31fec39784cf1428afdb7ba8fe6752daeb1aeebad9fd1f7 - Sigstore transparency entry: 2119168172
- Sigstore integration time:
-
Permalink:
IronAdamant/wikifier@72e8637a0ea4542957f288c12b61af1462018719 -
Branch / Tag:
refs/tags/v4.5.2 - Owner: https://github.com/IronAdamant
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@72e8637a0ea4542957f288c12b61af1462018719 -
Trigger Event:
push
-
Statement type: