codeindex
codeindex is the parser engine that powers LoomGraph. It turns any codebase into AI-readable structural artifacts — a graph-export NDJSON call/inheritance graph (the sole seam LoomGraph consumes) and, as a standalone by-product, README_AI.md navigation indexes. Stateless (ADR-007); the user-facing product is LoomGraph.
End users:
pipx install loomgraph— it pullsai-codeindexautomatically. You never operate codeindex directly. See the LoomGraph integration guide. Standalone users (navigation indexes without the graph layer): see Standalone usage below.
Why
AI agents in an unfamiliar codebase waste tokens grepping for the right entry point. codeindex pre-computes a structural slice (tree-sitter AST → symbols, calls, inheritance) so the agent — or the graph layer that serves the agent — starts from a known map, not from raw grep. The win is navigation efficiency, not capability: a measured −28% tokens / −19% wall-time on the discovery phase, but answer quality is a wash (it does not make the agent smarter — see Benchmark).
Install
pipx install loomgraph # end users: pulls ai-codeindex as a dependency
Standalone (navigation indexes only, no graph layer):
pipx install ai-codeindex
From source:
git clone https://github.com/dreamlx/codeindex.git
cd codeindex
pip install -e ".[all]"
Claude Code users — also install the companion plugin for skills (
codeindex:arch/:index/:update-guide):/plugin marketplace add dreamlx/codeindex-claude /plugin install codeindex@codeindex-claude
Language parsers
Python and PHP grammars ship by default. Other languages need the matching tree-sitter grammar:
pipx inject ai-codeindex tree-sitter-typescript tree-sitter-java # add to pipx env
# or pin a subset at install time:
pipx install "ai-codeindex[ios]" # Swift + Objective-C
🇨🇳 China users: if your mirror hasn't synced the latest release, install from upstream PyPI:
pipx install --index-url https://pypi.org/simple/ ai-codeindex
Quick start
LoomGraph users (the main path):
loomgraph index . # codeindex graph-export → embed → inject, one pipeline
loomgraph graph "UserService.login" --depth 2
loomgraph topology # orphans / hubs + resolved_ratio trust signal
Standalone (README_AI navigation indexes only):
codeindex init # creates .codeindex.yaml + injects CLAUDE.md section
codeindex scan-all # structural + optional AI descriptions (auto when ai_command set)
codeindex scan-all --no-ai # structural only
Full command reference: codeindex --help.
Standalone usage (without the graph layer)
codeindex's README_AI.md is a tiered navigation index — agents browse it to find the right module, then drop to source for precise mechanism. It is not a knowledge graph and does not resolve cross-module relationships; for that, use LoomGraph.
When standalone is the right fit:
- Small / mid codebase where a graph layer is more weight than you need.
- Air-gapped intranet where you want navigation without any external service.
- Pairing with Serena MCP for precise symbol queries (codeindex = the "map", Serena = the "GPS").
When you should move to LoomGraph:
- You need cross-module call-graph walks (callers of
authenticate()two hops deep). - You need change-impact analysis, topology smells, or semantic search.
- The codebase is large enough that a flat navigation index stops paying (see benchmark: on a 250-directory legacy system the token win nearly vanished — a flat index points at files but can't synthesize cross-module semantics).
codeindex init injects a codeindex section into your project's CLAUDE.md so Claude Code reads README_AI.md first (never ~/.claude — ADR-006). codeindex scan-all refreshes indexes after structural changes; README_AI.md is a generated artifact — do not hand-edit.
Benchmark
Most "AI code understanding" tools assert value. We A/B-tested ours — and published the unflattering parts.
Across 15 graded navigation questions on 3 heterogeneous real projects, a coding agent with README_AI.md vs without:
- −28% tokens, −19% wall-time on average — agents reach the right file faster and cheaper.
- Answer quality is a wash. It does not make answers more correct — the win is efficiency, not capability. (An undisciplined index even hurt a few precise-mechanism questions; fixed in ADR-005.)
- Smallest win on the largest codebases. On a 250-directory legacy system the token win nearly vanished — a flat index points you to files but can't synthesize cross-module semantics. codeindex is the navigate layer, not the understand-everything layer (pair it with source-reading / Serena for precise mechanism, or move to LoomGraph for cross-module graph queries).
Full data incl. the failure cases: 2026-05 benchmark. Reproduce on your own repos: bench/ (make setup && make run && make grade).
Why publish the parts that don't flatter the tool: a navigation index that quietly degrades answer quality is worse than none. Knowing exactly where it helps — and where to drop to source — is the point.
Commands
Full reference: codeindex --help. Highlights:
| Command | Purpose |
|---|---|
codeindex scan-all |
Generate / refresh README_AI.md indexes (structural + optional AI) |
codeindex graph-export |
Emit the entities + edges NDJSON that LoomGraph consumes |
codeindex parse <file> |
Single-file JSON parse for tool integration |
codeindex symbols |
Global symbol index (PROJECT_SYMBOLS.md) |
codeindex tech-debt <dir> |
Code-quality analysis (large files, god classes, test smells) — see guide |
codeindex affected --since HEAD~5 |
Git change-impact (affected directories) |
codeindex doctor |
Health/sync check (CLI, parsers, CLAUDE.md, plugin) |
codeindex claude-md update |
Refresh the codeindex section in your project's CLAUDE.md |
Each command emits JSON (--output json) for CI/CD and downstream tools.
Language support
| Language | Status | Since |
|---|---|---|
| Python | ✅ | v0.1.0 |
| PHP | ✅ | v0.5.0 |
| Java | ✅ | v0.7.0 |
| TypeScript / JS | ✅ | v0.19.0 |
| Swift | ✅ | v0.21.0 |
| Objective-C | ✅ | v0.21.0 |
| Go / Rust / C# | 📋 Planned | — |
Framework route extraction: ThinkPHP (PHP), Spring Boot (Java); Express, Laravel, FastAPI, Django planned.
Want to add a language? The template-based test system lets you contribute by writing YAML specs — no Python knowledge required. See CONTRIBUTING.md.
How it works
codeindex's documentation generation is a two-phase pipeline — structure is deterministic (tree-sitter, no AI), AI enrichment is an optional overlay. The graph-export NDJSON (the LoomGraph seam) is pure AST. Full pipeline + architecture diagrams: docs/architecture/design-philosophy.md.
For LoomGraph developers
If you work on LoomGraph (the user-facing product), start here: FOR_LOOMGRAPH.md — the parser-engine contract, the graph-export NDJSON seam, and the codeindex commands you'll touch.
Documentation
User guides
| Guide | Description |
|---|---|
| Getting started | Installation and first scan |
| Configuration | All config options explained |
| Advanced usage | Parallel scanning, custom prompts |
| Git hooks integration | Automated quality checks and doc updates |
| Claude Code integration | AI agent setup and MCP skills |
| JSON output integration | Machine-readable output for tools |
| Tech-debt analysis | Code-quality analysis command reference |
| LoomGraph integration | The graph-export → graph-store pipeline |
Developer & architecture
| Doc | Description |
|---|---|
| CONTRIBUTING.md | Development setup, TDD workflow, code style |
| Design philosophy | Two-phase pipeline, two-repo architecture, design principles |
| ADR-005 | Navigation-contract disclaimer + README size cap |
| ADR-009 | codeindex = LoomGraph parser engine positioning |
| Release automation | 5-minute automated release workflow |
Evidence & benchmarks
| Doc | What it shows |
|---|---|
| 2026-05 README impact benchmark | Agent comprehension delta WITH vs WITHOUT README_AI.md (15 graded questions, 3 projects). Headline: 19% faster / 28% fewer tokens on average, but quality wash on some detail questions — fix shipped (ADR-005). |
bench/ |
Reproducible harness (make setup && make run && make grade && make report). |
Contributing
git clone https://github.com/dreamlx/codeindex.git
cd codeindex
pip install -e ".[dev,all]"
make install-hooks
make test
See CONTRIBUTING.md for guidelines. Maintainer release: make release VERSION=0.X.0 (CI → tests → PyPI publish → GitHub Release).
Roadmap
Current version: v0.40.0
Next: framework routes expansion (Express, Laravel, FastAPI, Django); Go, Rust, C# language support.
Code similarity search, refactoring suggestions, team collaboration, and IDE integration live in LoomGraph, not here — codeindex stays the stateless parse layer.
See Strategic Roadmap for detailed plans.
License
MIT — free, and meant to stay that way.
Support
- Questions: GitHub Discussions
- Bugs / Feature requests: GitHub Issues
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 ai_codeindex-0.40.1.tar.gz.
File metadata
- Download URL: ai_codeindex-0.40.1.tar.gz
- Upload date:
- Size: 845.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fb84a149965c7cc0e6e76af70b5d5ae8b9c6d6d8595a4a6981a4821507418c4
|
|
| MD5 |
9f0f60592a68dff84f799996a4f14856
|
|
| BLAKE2b-256 |
59d9be45912c5d7154ded64b71709c96d8b2c1164496fc66d4bbee8bf39215b3
|
Provenance
The following attestation bundles were made for ai_codeindex-0.40.1.tar.gz:
Publisher:
publish.yml on dreamlx/codeindex
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_codeindex-0.40.1.tar.gz -
Subject digest:
1fb84a149965c7cc0e6e76af70b5d5ae8b9c6d6d8595a4a6981a4821507418c4 - Sigstore transparency entry: 2570731702
- Sigstore integration time:
-
Permalink:
dreamlx/codeindex@d11e5b6743d561a7ebf860a71cdbc1f30c07b859 -
Branch / Tag:
refs/tags/v0.40.1 - Owner: https://github.com/dreamlx
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d11e5b6743d561a7ebf860a71cdbc1f30c07b859 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ai_codeindex-0.40.1-py3-none-any.whl.
File metadata
- Download URL: ai_codeindex-0.40.1-py3-none-any.whl
- Upload date:
- Size: 255.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
582d488461cfd9719ded7f8522d947cc3a7c43b15a009557251053e6108e9d32
|
|
| MD5 |
808217b51cf062c5a9fec7d7c52e4bfe
|
|
| BLAKE2b-256 |
5a0e402cafe51467ae4da42c14fe0e0179d4e76248177583a0102eb00d4e13f1
|
Provenance
The following attestation bundles were made for ai_codeindex-0.40.1-py3-none-any.whl:
Publisher:
publish.yml on dreamlx/codeindex
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_codeindex-0.40.1-py3-none-any.whl -
Subject digest:
582d488461cfd9719ded7f8522d947cc3a7c43b15a009557251053e6108e9d32 - Sigstore transparency entry: 2570731724
- Sigstore integration time:
-
Permalink:
dreamlx/codeindex@d11e5b6743d561a7ebf860a71cdbc1f30c07b859 -
Branch / Tag:
refs/tags/v0.40.1 - Owner: https://github.com/dreamlx
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d11e5b6743d561a7ebf860a71cdbc1f30c07b859 -
Trigger Event:
push
-
Statement type: