v1.0.0
First stable release. trouve is a Rust port of MinishLab/semble — fast, accurate code search for agents — rebuilt around an incremental, branch- and worktree-aware index. Retrieval behaviour matches upstream: mean NDCG@10 within 0.0002 on the upstream annotated benchmark, with identical chunk boundaries and BM25 scores.
Highlights
- Content-addressed chunk store — per-file artifacts (chunks, embedding rows, BM25 token lists) keyed by content hash: git blob OIDs for clean files (no file reads at all), BLAKE3 for dirty/untracked files. Editing one file re-embeds one file.
- Branch- and worktree-aware caching — one store per repository, keyed by the git common directory and shared across all branches and worktrees. Switching branches only pays for content the store has never seen.
- Memory-mapped snapshots — warm queries load embeddings and BM25 postings zero-copy; incremental builds patch the previous snapshot, so cost is proportional to the edit, not the repository.
- Bounded cache — snapshot pruning plus a daily mark-and-sweep GC with a one-hour grace period for concurrent builds.
- In-house model2vec engine — memory-mapped embedding table and a WordPiece fast path with per-word memoisation; bit-identical to
model2vec-rsper text, with batch-independent embeddings. - Fully parallel pipeline — hashing, parsing, chunking, tokenizing, embedding, and BM25 construction across all cores via rayon.
- Faithful retrieval port — tree-sitter chunking for ~28 languages,
potion-code-16Membeddings, Lucene-variant BM25, RRF fusion, and upstream's code-tuned reranking. - CLI + MCP server —
search,find-related,stats,savings,clear, and an interactiveinstallcovering eleven coding agents; baretrouveruns an MCP stdio server.
Performance
Measured on kubernetes/kubernetes (30,563 tracked files) vs upstream Python semble (BENCHMARKS.md):
| Scenario | trouve | Python semble | Speedup |
|---|---|---|---|
| Cold index + query | 3.3 s | ~3 min | 54x |
| Incremental (1 file touched) | 0.86 s | ~3 min | 212x |
| Warm query | 0.55 s | 7.2 s | 13x |
Binaries
Prebuilt for Linux (glibc and static musl; x64 and arm64), macOS (x64 and arm64), and Windows (x64 and arm64), with SHA-256 checksums. Or cargo install trouve.
Credits
trouve's retrieval design comes from Semble by Thomas van Dongen and Stephan Tulkens of MinishLab — see the citation guide and DIFFERENCES.md.