Source Code:
src/gaia/code_index/ and src/gaia/agents/code_index/tools/mixin.pyLooking for the API? See the Code Index SDK Reference for
CodeIndexSDK, CodeIndexConfig, and CodeIndexToolsMixin.- CLI —
gaia-code index ...for build, search, status, clear, and chat. - Tool mixin —
CodeIndexToolsMixinis composed into the built-inCodeAgentand is available to any custom agent that opts in. - Python SDK —
CodeIndexSDKfor direct programmatic use.
gh is not required — the index covers source files only.
Overview
Setup
Install the[rag] extras (FAISS + numpy live there):
The default embedder is now
user.embeddinggemma-300m-GGUF (EmbeddingGemma 300M), replacing nomic-embed-text-v2-moe-GGUF because the current llama.cpp server cannot load the nomic MOE embedder. Both are 768-dim, so retrieval behavior is unchanged. A cached index (under ~/.gaia/code_index/) records the model it was built with: re-running gaia-code index rebuilds every embedding with the new model, and searching a stale index fails loudly with a model-mismatch error until you rebuild.CLI usage
Build the index
Re-running
gaia-code index is incremental: unchanged files (matched by SHA-256) reuse their existing embeddings.
Search
Inspect and manage
Interactive Q&A
CodeAgent with the CodeIndexToolsMixin already wired in, so the agent can call index_codebase, search_code_index, get_index_status, and clear_code_index autonomously while answering your questions.
Agent integration
CodeAgent ships with the mixin already composed, so gaia-code chat sessions and any CodeAgent instance can call the four code-index tools:
Custom agents compose
CodeIndexToolsMixin directly in their class declaration; it’s also registered in KNOWN_TOOLS["code_index"] (src/gaia/agents/registry.py) for dynamic resolution. For SDK-level composition see the SDK reference.
Example interaction
Cache layout
Privacy
All processing is local. No source code is sent to external services. Sensitive filenames are skipped automatically:.env, .env.*, .htpasswd, SSH private keys (id_rsa, id_ed25519, …), and any *.pem, *.key, *.pfx, *.p12, *.jks, *.keystore.
Testing
The code-index stack has unit-test coverage intests/unit/test_code_index*.py — 64 tests spanning the SDK (cache layout, incremental re-index, atomic writes), the parsers (Python AST + the regex backends for JS/TS/Go/Rust/Java/C/C++), and the CodeIndexToolsMixin tool surface.
Run them with:
Real-world benchmark
Indexing the gaia repo itself against Lemonade Server’suser.embeddinggemma-300m-GGUF embedding model: