| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| semlith-v0.9.0-aarch64-apple-darwin.tar.gz | 2026-09-12 | 13.9 MB | |
| semlith-v0.9.0-aarch64-unknown-linux-gnu.tar.gz | 2026-09-12 | 16.7 MB | |
| semlith-v0.9.0-x86_64-pc-windows-msvc.zip | 2026-09-12 | 12.3 MB | |
| semlith-v0.9.0-x86_64-unknown-linux-gnu.tar.gz | 2026-09-12 | 15.7 MB | |
| SHA256SUMS | 2026-09-12 | 444 Bytes | |
| README.md | 2026-09-12 | 5.2 kB | |
| Semlith 0.9.0 source code.tar.gz | 2026-09-12 | 460.0 kB | |
| Semlith 0.9.0 source code.zip | 2026-09-12 | 486.4 kB | |
| Totals: 8 Items | 59.5 MB | 0 | |
A store no longer has to live inside the repository it indexes, and a portal in
your browser shows you what is in it. semlith start is one process that owns
every store, keeps them current as you save, and serves that page on
127.0.0.1 — which also ends the choice between a watcher keeping a store
current and an agent being able to write to it.
Added
- A store home.
semlith indexwith no flags now creates~/.semlith/stores/<name>and records the directory it indexed in~/.semlith/registry.json.SEMLITH_HOMEmoves it;--namenames a store explicitly. A store can no longer land in a tracked tree by default. semlith adopt <dir>moves an existing store into the home and registers it — a rename where it can be, a verified copy where it cannot, and no re-embedding either way.--rootre-points a registered store whose corpus moved.semlith start: takes every registered store's write lock, runs the watcher over their roots, and serves a portal on127.0.0.1:7365.--portandSEMLITH_PORTchange the port; nothing changes the address. If the port is taken it exits saying so rather than picking another, because the URL is meant to be a bookmark.- The portal, compiled into the binary: a first-run welcome screen, and
Stores, Files, Search, Index, Agents, Privacy and About. It shows each store's
counts and the watcher's live event feed, the indexed files with the CLI's
path/ext/langfilters and the reader that parsed each one, the same fused search the CLI and the MCP tools run, a folder picker whose index run streams progress as it happens, the client stanza for every documented agent, and a Privacy page with a packet-capture recipe. semlith mcpforwards to a running daemon. An agent'ssemlith_indexused to be refused for as long as a watcher held the store; now the daemon is the writer and the agent is a client of it. Client configuration does not change, and with no daemon runningsemlith mcpbehaves exactly as 0.8.0 did.--airgap, andSEMLITH_AIRGAP=1, onindexandstart: refuse to download model weights and exit naming the cache path, so a machine that pre-seededSEMLITH_MODEL_CACHEcan prove nothing was fetched.- A token rotate route, behind the Privacy page's button: the old token is refused from the next request.
Changed
- Client stanzas lost their paths. Every README stanza is now
semlith mcpwith no arguments, because the server opens every registered store plus a.semlithbeside the working directory. Index a second repository and the agent that is already configured can search it, with no file to edit.--storestill works and still wins when given. semlith mcpwith no flags opens every registered store rather than./.semlithalone.- The out-of-scope note in
AGENTS.mdanddocs/architecture.mdnow states the loopback rule instead of forbidding a server, per #41. A CLI command or MCP tool is not done until its portal view exists, andtests/portal.rsis the gate. turbovec0.9.0 → 1.0.0:search_with_allowlistreturns aResultinstead of panicking on an id the index does not hold, which is the better contract for a shard that legitimately lacks an id its range covers.fastembed6.0.1 → 6.0.3.- Three further Dependabot updates that landed on
developwhile this release was in flight and are merged into it rather than shipped separately: a patch-updates group of two crates,Swatinem/rust-cachein both workflows, andsoftprops/action-gh-release3.0.2 → 3.0.3. Both actions stay SHA-pinned with their trailing version comment. chacha20in the lockfile, which had been yanked upstream. It arrives throughpdf-extract→lopdf→randand nothing here calls it, butcargo install --lockedwould otherwise pull a yanked crate.
Security
- The portal binds
127.0.0.1only, with no flag to change it. Every request needs a per-run token carried in aSameSite=Strict; HttpOnlycookie — 401 and an empty body without it. TheHostheader must belocalhost,127.0.0.1or::1, or the request gets 400. Every response carries aContent-Security-Policyallowing only'self', and no CORS header is emitted anywhere. Each of those is asserted by a test.
Dependencies
- No new crate. The HTTP server, the HTTP client the proxy uses, and the
portal are all written against
std, so the dependency count is unchanged at 14 direct dependencies plus one dev-dependency — the same list 0.8.0 shipped, withturbovecandfastembedbumped. The portal adds 149 KB of embedded assets — HTML, CSS, JavaScript and five IBM Plex latin faces under the SIL OFL 1.1 — against a 1 MiB budget a test enforces.
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.