How to Set Up Codebase Indexing in Kilo Code Kilo Code has reintroduced codebase indexing for semantic code search, requiring users to configure an embedding provider and vector store before enabling the feature. The indexing system parses code locally with Tree-sitter, chunks it into semantic blocks, and stores vectors for conceptual searches like "where do we validate customer identity?" Users must explicitly turn on indexing globally or per project through VS Code settings, as adding API keys alone does not start the process. How to Set Up Codebase Indexing in Kilo Code Configure providers, vector stores, file filters, tuning, and status checks for semantic code search. Codebase indexing is back https://blog.kilo.ai/p/codebase-indexing-is-back-in-kilo —here’s how to set it up. This is the practical companion to the launch post. The launch post covers why indexing matters. This guide covers the mechanics: providers, vector stores, enablement scope, tuning, file filters, and verification. The main rule: provider configuration is not enablement. You can add API keys and model settings without indexing anything. Kilo starts indexing only after you turn it on globally or for the current project. What you need before you start Codebase indexing needs two pieces: an embedding provider, which turns code chunks into vectors a vector store, which saves those vectors and lets Kilo search them later Kilo parses code locally with Tree-sitter, chunks it into semantic blocks like functions, classes, and methods, embeds those chunks, and stores the vectors. Once the index is ready, Kilo can use the semantic search tool to answer conceptual questions like “where do we validate customer identity?” or “find the retry logic for failed API calls.” This guide follows the current Kilo Code codebase indexing docs https://kilo.ai/docs/customize/context/codebase-indexing . Where the public docs do not document a config shape, this guide does not invent one. Start in the VS Code settings UI For most users, the settings UI is the safest first path. This assumes you already have a vector store ready - if not, be sure to follow the “Choose a vector store” section below first. Open Kilo Code in VS Code. Go to Kilo Code Settings → Indexing .Turn on Global Enable or Enable for This Project .Choose an embedding provider. Choose a vector store: Qdrant or LanceDB .Adjust tuning only if you need to. Save, then watch the indexing status indicator in the prompt input panel. You can also click the indexing indicator at the bottom of the prompt input panel to open indexing setup. The statuses are: Disabled : indexing is off or not configured. Initializing : indexing is getting started and setup. Standby : indexing is configured but not currently processing files. In Progress : Kilo is scanning, chunking, embedding, or storing files. The UI shows progress e.g. Indexed 123 / 250 files 54% . Complete : the index is up to date and ready for semantic search. Error : indexing failed. Check the error message, provider credentials, and vector store connection. Do not skip this check. An API key in config does not mean the repo has been indexed. Project-level vs. global enablement Kilo has two enablement scopes. Use Enabled Globally when you want Kilo to index every workspace you open, using your global indexing defaults. Use Enable for this project when you want indexing only for the current repo. This is usually the better first test, especially for a large codebase or a hosted embedding provider. The config shape is the same either way: { “indexing”: { “enabled”: true } } The path determines the scope: Global config: ~/.config/kilo/kilo.jsonc Project config: ./kilo.jsonc in the repo Use the global file for defaults you want everywhere. Use the project file when a repo needs its own provider, vector store, file filters, or tuning. Again: setting provider, model, or an API key does not start indexing. indexing.enabled must be true at the scope you intend. Path 1: Kilo Gateway users If you already use Kilo tokens, check Kilo Code Settings → Indexing first. The current public indexing docs list supported embedding providers and provider config keys, but they do not currently document a Kilo Gateway-specific indexing provider or a Gateway embeddings endpoint. That matters because provider is not a display label. It is a config key Kilo uses to load the provider. Do not guess a key like kilo-gateway unless your installed Kilo Code build writes it for you. If your build shows Kilo Gateway as an embedding option, use the UI and let Kilo write the provider shape. A guarded example looks like this: { "indexing": { "enabled": true, // Use the provider key written by your installed Kilo Code build. // The current public indexing docs do not document a Kilo Gateway // embedding provider key, so do not hand-write one from memory. "provider": "