| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| semlith-v0.5.0-aarch64-apple-darwin.tar.gz | 2026-07-30 | 13.6 MB | |
| semlith-v0.5.0-aarch64-unknown-linux-gnu.tar.gz | 2026-07-30 | 16.6 MB | |
| semlith-v0.5.0-x86_64-pc-windows-msvc.zip | 2026-07-30 | 12.1 MB | |
| semlith-v0.5.0-x86_64-unknown-linux-gnu.tar.gz | 2026-07-30 | 15.5 MB | |
| SHA256SUMS | 2026-07-30 | 444 Bytes | |
| README.md | 2026-07-30 | 3.1 kB | |
| Semlith 0.5.0 source code.tar.gz | 2026-07-30 | 140.5 kB | |
| Semlith 0.5.0 source code.zip | 2026-07-30 | 156.9 kB | |
| Totals: 8 Items | 58.1 MB | 0 | |
One query across several stores, so an agent working across repositories asks one question instead of one per repository.
Added
--storeis repeatable on the read commands.search,stats,filesandmcpcover every store named:
sh
semlith search "how is the store lock taken" -s ../api/.semlith -s ../cli/.semlith
```
- 0.033 [api] src/lock.rs:14-31
- 0.032 [cli] src/main.rs:96-104 2 hits in 4.1ms across 2 stores: api 1, cli 1 ```
-k stays global — ten results over three stores is ten results. Filters
apply to every store, and a filter matching files in only one of them returns
that one's hits rather than reporting that nothing matched. Stores whose
embedding models differ can be searched together: each embeds the query with
its own model, and nothing downstream compares two models' numbers.
-
Every hit says which store it came from, in the text output, in
--jsonas astorefield, and over MCP. A store is named after the directory holding it, so../api/.semlithisapi; two stores that would collide get their paths instead. -
SEMLITH_STOREaccepts a list, split the wayPATHis, so an MCP server definition can name several stores without a wrapper script. -
One MCP server, several stores.
semlith_searchgained an optionalstorearray that narrows a query, the tool description lists the stores that are open, an unknown name comes back as a tool error naming the real ones, andsemlith_statsreports one line per store.
Adding a store is cheap: measured on three 300-file stores sharing a model, one query embed per search rather than one per store, a median 3.4ms for one store against 4.0ms for three, and a server holding 137 MB whether it was opened on one store or on three — one loaded model, not three.
Changed
- A read command refuses a store path that is not already a store, instead
of creating one.
search,stats,filesandmcpexit non-zero naming the path. Previously a mistyped--storebecame an empty store that answered every question with nothing — invisible in a multi-store query, where the other stores still return hits.indexstill creates the store it is given. index,watchandforgettake exactly one--storeand exit non-zero if given more. They write, and a store has one writer.
Notes
No schema change and no index format change: a 0.4.0 store is searched by 0.5.0 with no re-index, and a store written by 0.5.0 is read by the 0.4.0 binary. A single-store invocation prints and serializes exactly what 0.4.0 did — the store label is absent when there is nothing to tell apart.
Install
Download the archive for your platform, unpack it, and put semlith on
your PATH. Linux builds need OpenBLAS at runtime
(apt-get install libopenblas-dev or your distribution's equivalent).
Intel macOS has no prebuilt binary: ONNX Runtime no longer publishes
x86_64 macOS builds.
Verify a download against SHA256SUMS before running it.