Codeix

io.github.montanetechPublished by GitHub account montanetechv0.5.0Updated Oct 24, 2026

Fast semantic code search for AI agents — find symbols, references, and callers across any codebase

VerifiedSTDIODesktop onlyKnowledge & MemoryDeveloper Tools

Overview

AI-generated overview

Codeix is a local MCP server that gives an AI assistant fast semantic code search over a pre-built index of symbols, references and callers in a codebase.

What you can do
Explore project structure, subprojects and files grouped by directory, and search symbols, files and prose (comments, docstrings, strings) with filters and ranking. List all symbols in a file and get the children of a class or module. Trace call graphs by finding callers and references of a symbol and the symbols a function calls. Flush pending index changes to disk. Indexes are stored as a committed .codeindex directory and dependency indexes are auto-discovered.
When to use it
Useful when an assistant works in a large or multi-repo codebase and needs to locate functions, classes and their callers without repeated grepping and file reading. Also suited to monorepos and projects where a shareable, committed index is preferred over per-machine caches.
Requirements
Runs as a local process over stdio, launched with npx codeix, uvx codeix, cargo or Homebrew; the README states no runtime dependencies. An index must be built first with the build command. Works offline with no API keys or environment variables.
Before you install
The flush_index tool writes pending index changes to disk, and building writes a .codeindex directory into the project. The index is meant to be committed to git, so indexed source, comments and docstrings become part of repository history.

Installation

In SourceWeft

  1. Open Codeix in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

codeix

codeix.dev · Fast semantic code search for AI agents — find symbols, references, and callers across any codebase.

codeix                 # start MCP server, watch for changescodeix build           # parse source files, write .codeindexcodeix -r ~/project build  # build from a specific directory

Why

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.

What existing tools get wrong

ProblemWhat happens today
No structuregrep finds text matches, not symbols. The agent can't distinguish a function definition from a comment mentioning it.
Slow re-parsingPython-based indexers re-parse everything on startup. On large codebases, you wait.
Not shareableIndexes are local caches — ephemeral, per-machine. A new developer or CI runner starts from scratch.
No compositionMonorepo with 10 packages? Dependencies with useful APIs? No way to query across boundaries.
Prose is invisibleTODOs, docstrings, error messages — searchable by grep but not selectively. You can't search only comments without also matching code.

What codeix does differently

  • Committed to git — the index is a .codeindex directory you commit with your code. Clone the repo, the index is already there. No re-indexing.
  • Shareable — library authors can ship .codeindex in their npm/PyPI/crates.io package. Consumers get instant navigation of dependencies.
  • Composable — the MCP server auto-discovers dependency indexes and mounts them. Query your code and your dependencies in one place.
  • Structured for LLMs — symbols have kinds, signatures, parent relationships, and line ranges. The agent gets exactly what it needs in one tool call instead of piecing it together from raw text.
  • Prose search — 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.
  • Fast — builds in seconds, queries in milliseconds. Rust + tree-sitter + in-memory SQLite FTS5 under the hood.

The .codeindex format

An 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.

.codeindex/  index.json        # manifest: version, name, languages  files.jsonl       # one line per source file (path, lang, hash, line count)  symbols.jsonl     # one line per symbol (functions, classes, imports, with signatures)  texts.jsonl       # one line per comment, docstring, string literal

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:

jsonl
{"file":"src/main.py","name":"os","kind":"import","line":[1,1]}{"file":"src/main.py","name":"Config","kind":"class","line":[22,45]}{"file":"src/main.py","name":"Config.__init__","kind":"method","line":[23,30],"parent":"Config","sig":"def __init__(self, path: str, debug: bool = False)"}{"file":"src/main.py","name":"main","kind":"function","line":[48,60],"sig":"def main(args: list[str]) -> int"}

Ship your index with your package

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.

MCP tools

Seven tools, zero setup. The agent queries immediately — no init, no config, no refresh.

ToolWhat it does
exploreExplore project structure: metadata, subprojects, files grouped by directory
searchUnified full-text search across symbols, files, and texts (FTS5, BM25-ranked) with scope/kind/path/project filters
get_file_symbolsList all symbols in a file
get_childrenGet children of a class/module
get_callersFind all places that call or reference a symbol
get_calleesFind all symbols that a function/method calls
flush_indexFlush pending index changes to disk

Project discovery

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.

Languages

Tree-sitter grammars, feature-gated at compile time:

LanguageFeature flagDefaultExtensions
Pythonlang-pythonyes.py .pyi .pyw
Rustlang-rustyes.rs
JavaScriptlang-javascriptyes.js .mjs .cjs .jsx
TypeScriptlang-typescriptyes.ts .mts .cts .tsx
Golang-goyes.go
Javalang-javayes.java
Clang-cyes.c .h
C++lang-cppyes.cpp .cc .cxx .hpp .hxx
Rubylang-rubyyes.rb .rake .gemspec
C#lang-csharpyes.cs
Markdownlang-markdownyes.md .markdown

Markdown support

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.

Embedded scripts

HTML, Vue, Svelte, and Astro files are preprocessed to extract embedded <script> blocks, which are then parsed with the JavaScript or TypeScript grammar:

FormatExtensionsScript 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.

Install

sh
# npm / npx — run without installingnpx codeix
# pip / uvx — run without installinguvx codeix
# Rustcargo install codeix
# Homebrewbrew install codeix
# Or build from sourcegit clone https://github.com/montanetech/codeix.gitcd codeixcargo build --release

All channels install the same single binary. No runtime dependencies.

Usage

sh
# Build the index for the current projectcodeix build
# Build from a specific directory (discovers all git repos below)codeix -r ~/projects build
# Start MCP server (default command, watches for changes)codeix
# Or explicitlycodeix servecodeix serve --no-watch
# Serve from a specific directorycodeix -r ~/projects serve

MCP client configuration

Add to your MCP client config (e.g. Claude Desktop, Cursor):

json
{  "mcpServers": {    "codeix": {      "command": "codeix"    }  }}

Design principles

  • Local only — no network, no API keys, works offline and air-gapped
  • Deterministic — same source always produces the same index (clean diffs)
  • Composable — dependency indexes are auto-discovered and mounted at query time
  • Minimal surface — 7 query tools, zero management plumbing

Architecture

See docs/architecture.md for the full set of architecture decision records.

License

MIT OR Apache-2.0

Source: README.md at commit dba0309

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.5.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts