Handoff MCP v0.33.0 — Cross-Lingual Semantic Search for Bilingual Projects
A 607 KB embedding model is now bundled in the binary, letting memory search cross language barriers. Knowledge saved in Japanese surfaces on English queries, and vice versa. The same technique powers near-duplicate detection.
Handoff MCP v0.33.0 is out. The headline feature is cross-lingual memory search: project memories now surface regardless of which language they were written in.
The Language Barrier in Project Memory
Software projects naturally accumulate knowledge in more than one language. Design decisions are recorded in the team's native language; library caveats stay in English. This is perfectly normal — until you need to search.
A memory saved as "認証まわりの注意点" (authentication caveats) won't match an "authentication" query. Conversely, a note written as "rate limiting gotcha" won't surface when someone searches for "レート制限". Traditional lexical search engines like BM25 score zero relevance when surface forms don't overlap.
The result: hard-won knowledge stays buried behind a language mismatch, and the same problems get rediscovered in later sessions.
A 607 KB Model Inside the Binary
v0.33.0 introduces semantic search into memory queries.
The approach is straightforward. A lightweight embedding model (lexsim 0.8, trained on 585M pairs) is compiled directly into the binary. Memories are vectorized on save; queries are vectorized on search. At query time, the traditional BM25 lexical score is blended with semantic cosine similarity, so meaning-similar results surface even when the wording differs.
The model weighs just 607 KB. No external API calls, no GPU, no additional setup. Updating the binary is all it takes.
Cross-lingual bridging relies on shared anchor terms — proper nouns, technical terms, library names — that appear in both languages. Even without a direct translation pair between "認証" and "authentication", overlapping technical vocabulary in the surrounding context is enough to pull the memory into the results.
The Same Technique Powers Duplicate Detection
The same embedding infrastructure also improves memory hygiene.
handoff_memory_save now uses hybrid_jaccard (lexical + semantic similarity) to detect near-duplicates at save time, warning when a new memory substantially overlaps an existing one. Pure Jaccard similarity missed semantically identical entries that happened to use different phrasing.
handoff_memory_cleanup uses pre-computed embedding vectors for O(N) embedding + O(N²) dot-product clustering to efficiently group duplicate candidates across the entire memory store.
Other Changes
- Document slug enforcement —
handoff_doc_savenow requires an explicit, unique slug when creating a document. - Session-loop language consistency —
/session-loopnow detects or accepts the user's language explicitly and applies it consistently across developer, tester, and reviewer roles. - Node module-type warnings resolved — The npm wrapper and packaging scripts are now ESM, eliminating Node's reparsing warnings.
Install / Update
npx handoff-mcp-server@latest
If you're using it as a Claude Code plugin:
/plugin install alphaelements/handoff-mcp

