The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Codeix listing page.
codeix.dev · Fast semantic code search for AI agents — find symbols, references, and callers across any codebase.
AI coding agents spend most of their token budget finding code before they can work on it. They grep, read files, grep again, backtrack. On a large codebase the agent might burn thousands of tokens just locating the right function — or worse, miss it entirely and hallucinate.
Codeix gives the agent a pre-built map of your codebase. One structured query returns the symbol name, file, line range, signature, and parent — no scanning, no guessing.
| Problem | What happens today |
|---|---|
| No structure | grep finds text matches, not symbols. The agent can't distinguish a function definition from a comment mentioning it. |
| Slow re-parsing | Python-based indexers re-parse everything on startup. On large codebases, you wait. |
| Not shareable | Indexes are local caches — ephemeral, per-machine. A new developer or CI runner starts from scratch. |
| No composition | Monorepo with 10 packages? Dependencies with useful APIs? No way to query across boundaries. |
| Prose is invisible | TODOs, docstrings, error messages — searchable by grep but not selectively. You can't search only comments without also matching code. |
.codeindex directory you commit with your code. Clone the repo, the index is already there. No re-indexing..codeindex in their npm/PyPI/crates.io package. Consumers get instant navigation of dependencies.search --scope text targets comments, docstrings, and string literals specifically. Find TODOs, find the error message a user reported, find what a function's docstring says — without noise from code..codeindex formatAn open, portable format for structured code indexing. Plain JSONL files you commit alongside your code — git-friendly diffs, human-readable with grep and jq, no binary blobs.
Any tool that can parse JSON can consume a .codeindex. Codeix builds it using tree-sitter, and AI agents query it through MCP (Model Context Protocol).
Example — symbols.jsonl:
Include .codeindex in your package and every developer who depends on you gets instant navigation of your API — no setup, no re-indexing.
Works with Git repos, npm, PyPI, and crates.io.
Seven tools, zero setup. The agent queries immediately — no init, no config, no refresh.
| Tool | What it does |
|---|---|
explore | Explore project structure: metadata, subprojects, files grouped by directory |
search | Unified full-text search across symbols, files, and texts (FTS5, BM25-ranked) with scope/kind/path/project filters |
get_file_symbols | List all symbols in a file |
get_children | Get children of a class/module |
get_callers | Find all places that call or reference a symbol |
get_callees | Find all symbols that a function/method calls |
flush_index | Flush pending index changes to disk |
Launch codeix from any directory. It walks downward and treats every directory containing .git/ as a separate project — each gets its own .codeindex.
Works uniformly for single repos, monorepos, sibling repos, and git submodules. No config needed.
Tree-sitter grammars, feature-gated at compile time:
| Language | Feature flag | Default | Extensions |
|---|---|---|---|
| Python | lang-python | yes | .py .pyi .pyw |
| Rust | lang-rust | yes | .rs |
| JavaScript | lang-javascript | yes | .js .mjs .cjs .jsx |
| TypeScript | lang-typescript | yes | .ts .mts .cts .tsx |
| Go | lang-go | yes | .go |
| Java | lang-java | yes | .java |
| C | lang-c | yes | .c .h |
| C++ | lang-cpp | yes | .cpp .cc .cxx .hpp .hxx |
| Ruby | lang-ruby | yes | .rb .rake .gemspec |
| C# | lang-csharp | yes | .cs |
| Markdown | lang-markdown | yes | .md .markdown |
Markdown files are parsed for headings (both ATX # and Setext underline styles) which are indexed as section symbols with hierarchical parent-child relationships — enabling TOC extraction and document structure navigation.
Fenced code blocks are extracted as code text entries, parented to their containing section.
HTML, Vue, Svelte, and Astro files are preprocessed to extract embedded <script> blocks, which are then parsed with the JavaScript or TypeScript grammar:
| Format | Extensions | Script detection |
|---|---|---|
| HTML | .html .htm | <script> tags, with optional lang="ts" |
| Vue | .vue | <script> and <script setup>, with optional lang="ts" |
| Svelte | .svelte | <script>, with optional lang="ts" |
| Astro | .astro | --- frontmatter (always TypeScript) + optional <script> tags |
Line numbers in the index point to the original file, not the extracted script block.
All channels install the same single binary. No runtime dependencies.
Add to your MCP client config (e.g. Claude Desktop, Cursor):
See docs/architecture.md for the full set of architecture decision records.
MIT OR Apache-2.0