Skip to content

v1.0.0

Choose a tag to compare

@jimsimon jimsimon released this 03 Jul 08:40

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-rs per 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-16M embeddings, Lucene-variant BM25, RRF fusion, and upstream's code-tuned reranking.
  • CLI + MCP serversearch, find-related, stats, savings, clear, and an interactive install covering eleven coding agents; bare trouve runs 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.

Full Changelog

https://github.com/jimsimon/trouve/commits/v1.0.0