Download Latest Version semlith-v0.51.1-x86_64-pc-windows-msvc.zip (24.5 MB)
Home / v0.3.0
Name Modified Size InfoDownloads / Week
Parent folder
semlith-v0.3.0-aarch64-apple-darwin.tar.gz 2026-07-29 12.8 MB
semlith-v0.3.0-aarch64-unknown-linux-gnu.tar.gz 2026-07-29 15.5 MB
semlith-v0.3.0-x86_64-pc-windows-msvc.zip 2026-07-29 11.5 MB
semlith-v0.3.0-x86_64-unknown-linux-gnu.tar.gz 2026-07-29 14.1 MB
SHA256SUMS 2026-07-29 444 Bytes
README.md 2026-07-29 2.4 kB
Semlith 0.3.0 source code.tar.gz 2026-07-29 86.2 kB
Semlith 0.3.0 source code.zip 2026-07-29 100.7 kB
Totals: 8 Items   54.0 MB 0

Narrows a search to part of a corpus, so one store per repository can answer a question about one subsystem.

Added

  • --path, --ext and --lang on semlith search. Each is repeatable. Repeats union, kinds intersect: --ext rs --ext toml is "Rust or TOML", --path 'src/**' --ext md is "Markdown, under src".

sh semlith search "how does retry backoff work" --path 'src/http/**' semlith search "how does retry backoff work" --lang rust

The filter is applied before either half of the search picks its results. Asking for eight hits inside a subdirectory returns the eight best hits in that subdirectory, not whatever survives filtering the eight best hits in the repository — which for a small subdirectory is usually nothing. Concretely: the vector index is scanned under a turbovec allowlist and the FTS5 query carries the same path predicate, both derived from one id-selection query, so rank fusion never sees a chunk one half was forbidden to return.

Path patterns are SQLite GLOB. A pattern that does not start with / is anchored as */<pattern> against the stored absolute path, so src/** works from any working directory; an absolute pattern means exactly itself. * crosses /, so src/* already reaches the whole subtree. Matching ignores case, so --ext md finds README.MD.

A filter that selects no indexed file reports that, rather than reporting that the corpus does not match the query.

  • The semlith_search MCP tool takes the same filters, as optional path, ext and lang arrays, which is the point of the release: an agent working on one subsystem can scope its question to that subsystem.

  • semlith languages prints the language names --lang accepts and the extensions each covers. An unrecognised name is an error naming this command, not a silent empty result.

Notes

No store format change. files.path has been recorded since 0.1.0, so filtering works on an existing store with no re-indexing, and a store written by 0.3.0 is readable by 0.2.0.

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.

Source: README.md, updated 2026-07-29