Mapify
A semantic codebase mapping engine for AI.
Mapify scans a project, parses the abstract syntax trees (ASTs) of its code, and produces a lightweight semantic knowledge graph — a machine-readable map of how files, classes, functions, API calls, routes, state, and database models are connected. Every node is ranked with PageRank, so Mapify can tell you which files architecturally matter most: the "God Nodes".
Feed that map to an LLM as plain JSON and your AI agents get precise, grounded context about how a codebase is wired together.
Features
- AST-grade parsing via
tree-sitter, with regex fallbacks for SQL & Prisma - Semantic graph — classes, functions, imports, API calls, route handlers,
React state, and database reads/writes as typed nodes
&relationships - God Nodes — the most important files, ranked by PageRank
- Fast & safe — skips
.gitignore-ignored and build directories automatically - Four outputs — Blueprint, Symbol Table, Graph (JSON + GraphML), Summary
- Cross-platform — works on macOS, Linux, and Windows
Supported Languages
| Language | Extensions | Parser |
|---|---|---|
| Python | .py |
tree-sitter |
| TypeScript | .ts, .tsx |
tree-sitter |
| JavaScript | .js, .jsx |
tree-sitter |
| Go | .go |
tree-sitter |
| Rust | .rs |
tree-sitter |
| Java | .java |
tree-sitter |
| C / C++ | .c, .h, .cpp, .hpp |
tree-sitter |
| Ruby | .rb |
tree-sitter |
| SQL | .sql |
regex |
| Prisma | .prisma |
regex |
Missing grammars never crash Mapify — it simply skips languages that aren't installed (all grammars ship by default).
Installation
From PyPI
pip install mapifyy-cli
Or, for an isolated globally-available install:
pipx install mapifyy-cli
From source
git clone https://github.com/uditc0derr/mapifyy-cli
cd mapifyy-cli
python -m venv .venv && source .venv/bin/activate
pip install -e .
Quick Start
cd your-project-folder
mapify run .
This generates a mapify-out/ folder and prints a summary:
╭──────────────────────────────────────╮
│ Mapify Engine │
│ Target: /path/to/your-project │
╰──────────────────────────────────────╯
✔ Discovered 128 valid files.
✔ Knowledge Graph generated successfully!
Saved to: /path/to/your-project/mapify-out
God Nodes (most important files)
┏━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┓
┃ # ┃ Node ┃ Type ┃ Score ┃
┡━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━┩
│ 1 │ src/app/main.py │ file │ 0.3667 │
│ 2 │ src/services/auth.py │ file │ 0.2333 │
└───┴────────────────────────┴───────┴────────┘
The Score column is the node's PageRank value: how central a file is to your architecture. Higher is more important; the top-ranked files are your God Nodes. (If PageRank can't be computed, a degree-centrality fallback is used.)
CLI reference
# Map a whole directory
mapify run ./src
# Map a single file
mapify run ./src/main.py
# Custom output location (default: mapify-out/codebase_blueprint.json)
mapify run . --output artifacts/blueprint.json
# Change how many God Nodes are reported (default: 5)
mapify run . --god-nodes 10
# Show the version
mapify --version
Tips for better results
- Mapify always respects your
.gitignore, plus a built-in denylist (.git/,node_modules/,.venv/,__pycache__/,dist/,build/,.next/, and more). mapify-out/is excluded, so Mapify never maps its own output.- No
.gitignorepresent? Add one — it makes analysis dramatically cleaner.
Generated Outputs
mapify run writes everything into mapify-out/ (or the folder you pass to
--output):
| File | Contents |
|---|---|
codebase_blueprint.json |
Per-file AST extract: classes, functions, imports, calls, API calls, states, routes, DB reads/writes, hash, size |
symbol_table.json |
Global registry of every function, class, module, route, and model |
semantic_graph.json |
NetworkX node-link graph. Edges: imports, calls, calls_api, uses_state, defines_route, reads, writes, contains |
semantic_graph.graphml |
The same graph in GraphML — open it in Gephi, yEd, or Cytoscape |
summary.json |
Stats, node breakdown, execution summary, and the top God Nodes |
Node types & relationships
Node types: file, class, function, module, api, state,
route, database_model.
Edges: contains, imports, calls, calls_api, uses_state,
defines_route, reads, writes.
How It Works
- Discover — walk the target directory, honoring
.gitignoreand the denylist. - Parse — extract symbols from each file with
tree-sitterqueries. - Resolve — link imports and calls between files (dotted and relative imports like
../utils/x). - Build — assemble the typed, directed graph with NetworkX.
- Rank — run PageRank to compute the God Nodes.
- Export — write the Blueprint, Symbol Table, Graph (JSON + GraphML), and Summary.
Project Structure
src/mapify/
├── cli.py # Typer CLI (run / --version)
├── parser.py # AST extraction (tree-sitter + regex fallbacks)
├── graph.py # NetworkX semantic graph + PageRank God Nodes
├── symbols.py # Global symbol registry & import resolution
├── resolver.py # Cross-file import & call resolution
└── utils/
└── file_ops.py # File discovery, .gitignore handling, hashing
Development
git clone https://github.com/uditc0derr/mapifyy-cli
cd mapifyy-cli
python -m venv .venv && source .venv/bin/activate
pip install -e .
mapify run . --output mapify-out/codebase_blueprint.json
Mapify maps itself — run the command above to inspect the outputs it produces about its own codebase.
Contributing
Pull requests are welcome. For significant changes, please open an issue first to discuss what you'd like to do.
License
MIT — see the project repository for details.
Release files for mapifyy-cli 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mapifyy_cli-1.0.0.tar.gz | 14.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mapifyy_cli-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.1 kB
Release files / mapifyy_cli-1.0.0.tar.gz
| Download URL | mapifyy_cli-1.0.0.tar.gz |
|---|---|
| Size | 14.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
90aa6fcd2db4784735a4b6862e6b85049c619ebebe251faa3353283776c69437
|
|
BLAKE2b-256 checksum How to use checksums |
ab58d596e73aae6d3c20590ecf76e69461d926c7295f731a63d35b4dadecbb68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.13
|
Release files / mapifyy_cli-1.0.0-py3-none-any.whl
| Download URL | mapifyy_cli-1.0.0-py3-none-any.whl |
|---|---|
| Size | 17.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
05da706f06a57eb4096b22778dd781344c7b62d5842dbbc374375951983705ae
|
|
BLAKE2b-256 checksum How to use checksums |
b435fa1914a9bde2892e6ea880086b1d504f3ede1ca3f83f97ad5111851cc513
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.13
|