Code search
Find symbols and text across your project — full-text, semantic, and hybrid search with real-time indexing.
- Product stage
- Development build
- Last reviewed
- 2026-08-27
- Successful result
- The change is visible in the active project.
What this accomplishes
Find symbols and text across your project — full-text, semantic, and hybrid search with real-time indexing.
Miton searches your codebase as you work. Full-text search indexes on every file change; optional semantic search finds related code by meaning; hybrid mode combines both.
In the app you use Find in project, symbol search, inline editor search, and the symbol outline.
Current availability
This page documents behaviour verified in Miton development builds. Miton is still pre-release and is not publicly downloadable; invited beta users will receive a signed desktop build with automatic updates.
Before you start
- A Miton development build and an active project containing source code.
- A connected model. Trust the project before allowing file, terminal or Git actions.
Full-text search
The full-text search is BM25 via Tantivy, a Rust full-text search engine that indexes the project on every file change. The index lives in Miton’s local application data directory, not inside the project folder.
The full-text search supports:
- Plain text search — the simplest mode. The query is a string; the search returns the files that contain the string.
- Phrase search — wrap the query in double quotes. The search returns the files that contain the phrase.
- Boolean operators —
AND,OR,NOT. The search returns the files that match the boolean expression. - Field-specific search —
path:src/,ext:ts,func:doFoo. The search returns the files that match the field-specific query. - Regex search — wrap the query in forward slashes (
/regex/). The search returns the files that match the regex.
The full-text search results are ranked by BM25. The ranking is the standard BM25 ranking; the relevance score is a function of the term frequency, the document frequency, and the document length.
The vector search
Semantic search is layered on top of the full-text index using embeddings and sqlite-vec. Miton uses whichever embedding client is already available to the app — there is no separate step to pick or download an embedding model for search specifically. Files are embedded incrementally as they’re indexed or opened; there is no blocking “embed the whole project” pass at project open. If no embedding client is available, semantic search quietly falls back to full-text-only results.
Hybrid results combine the full-text ranking and the vector ranking with Reciprocal Rank Fusion, so a query can surface both an exact symbol match and code that’s related in meaning.
The real-time indexing
The code search index is real-time: it updates as files change, without a manual re-index step. The
index respects the project’s .gitignore file; there is no separate, code-search-specific ignore
file today.
The user-facing surfaces
The code search shows up in a few places:
- The find and replace across the project (
Cmd+Shift+F). The user sees a panel with a search input, a list of matches, and a preview of each match. The user can navigate the matches withEnterandShift+Enter; the user can replace the matches with the replace button. - The symbol search (
Cmd+Shift+O). The user sees a panel with a search input and a list of symbols. The user can click a symbol to jump to the symbol’s location. - The in-editor inline search. The user presses
Cmd+Fin the editor; the editor shows a search input at the top of the editor. The user can search the current file; the user can pressCmd+Shift+Fto search the project. - The symbol outline. The symbol outline shows the symbols in the current file. The user can click a symbol to jump to it.
- The chat search. The agent can call the code search as a tool; the user can ask “where is the user authentication code?” and the agent returns the search results.
What code search does not cover
Code search does not cover:
- Code generation — the agent uses code search to find things, then generates code as a separate step.
- Code review — use transparency and approvals to see tool calls, including code search, and to review the agent’s changes.
- Cross-project search — search is scoped to the active project.
What success looks like
The code search is a hybrid of full-text and vector search. The full-text search is BM25 via Tantivy; the vector search is via sqlite-vec; the hybrid mode combines the two with RRF.
Semantic results depend on an embedding client being available; when one isn’t, search still works on full-text alone.
The index is real-time. The user does not have to manually re-index the project — the index updates as files change.
The user-facing surfaces are the find and replace across the project, the symbol search, the in-editor inline search, the symbol outline, and the chat search. The user can use any of these surfaces to find code.
Common failures and recovery
- Confirm the correct project and branch are active.
- Check the model connection and the permission request shown in Chat.
- Keep the exact error before retrying; use Code troubleshooting when the failure persists.
Related next action
Open Code troubleshooting for recovery steps and diagnostic paths.