| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| semlith-v0.4.0-aarch64-apple-darwin.tar.gz | 2026-07-29 | 13.6 MB | |
| semlith-v0.4.0-aarch64-unknown-linux-gnu.tar.gz | 2026-07-29 | 16.5 MB | |
| semlith-v0.4.0-x86_64-pc-windows-msvc.zip | 2026-07-29 | 12.1 MB | |
| semlith-v0.4.0-x86_64-unknown-linux-gnu.tar.gz | 2026-07-29 | 15.5 MB | |
| SHA256SUMS | 2026-07-29 | 444 Bytes | |
| README.md | 2026-07-29 | 3.0 kB | |
| Semlith 0.4.0 source code.tar.gz | 2026-07-29 | 103.7 kB | |
| Semlith 0.4.0 source code.zip | 2026-07-29 | 120.8 kB | |
| Totals: 8 Items | 57.9 MB | 0 | |
Keeps a store current while you work: files are re-embedded as they are saved, and an agent already connected over MCP sees the change without restarting.
Added
semlith watch [PATHS...]. Stays running and re-embeds files as they are saved, sosemlith indexstops being something you have to remember.
sh
semlith watch ~/notes ./src
It begins with the same incremental pass index runs — so whatever changed
while nothing was watching is caught up — and then waits on filesystem events
rather than polling. Measured on a 1000-file corpus: no measurable CPU over a
60-second idle window, and about a second from a save to that text being
searchable.
New files are indexed, deleted files lose their chunks and vectors, and a
rename moves the file rather than duplicating it. An editor that saves by
writing a temp file and renaming it over the original is treated as an edit,
not as a deletion followed by a new file. Ignore rules come from the same walk
index uses, so .gitignore, hidden files and the store's own directory are
skipped by construction rather than by a second set of rules.
Events are batched until things go quiet for --debounce milliseconds (500 by
default), so one save — or a formatter rewriting a file three times — costs one
re-embed and one index write.
-
A long-running reader now sees another process's writes. The store counts index rewrites, and a search reloads the vector index when that count has moved. In practice: run
semlith watchbeside your agent'ssemlith mcpserver, and the agent's answers track your working tree with nothing restarted. The check is one SQLite read per search. -
Ctrl-C stops a watcher cleanly.
SIGINTandSIGTERMend it at a batch boundary, soindex.tvis written whole or not at all and no temp index is left behind. A second signal kills it outright. Unix only; on Windows the default terminate-immediately behaviour applies.
Changed
semlith watchholds the store's write lock for as long as it runs. A store has one writer, sosemlith indexagainst a watched store exits non-zero and names the watcher's process. Searching is unaffected.- An indexing pass that changes nothing no longer rewrites
index.tv.
Compatibility
No schema change and no index format change. A 0.3.0 store is watched without
re-indexing, and a store written by 0.4.0 opens, searches and indexes under
0.3.0 — both verified against the 0.3.0 release binary. The only addition to the
store is one row in the existing meta table.
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.