| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| semlith-v0.34.0-aarch64-apple-darwin.tar.gz | 2026-09-30 | 24.6 MB | |
| semlith-v0.34.0-aarch64-unknown-linux-gnu.tar.gz | 2026-09-30 | 24.2 MB | |
| semlith-v0.34.0-x86_64-pc-windows-msvc.zip | 2026-09-30 | 22.3 MB | |
| semlith-v0.34.0-x86_64-unknown-linux-gnu.tar.gz | 2026-09-30 | 25.4 MB | |
| SHA256SUMS | 2026-09-30 | 448 Bytes | |
| README.md | 2026-09-30 | 4.7 kB | |
| Semlith 0.34.0 source code.tar.gz | 2026-09-30 | 4.1 MB | |
| Semlith 0.34.0 source code.zip | 2026-09-30 | 4.4 MB | |
| Totals: 8 Items | 104.9 MB | 0 | |
What the documents hold, counted
Inside the index counts pages, slides and cells. The prose panel showed a
file count for every kind of document. It now shows what they hold: PDF pages,
the slides of .pptx and .odp decks, the non-empty cells of .xlsx, .ods,
.csv and .tsv sheets, and notebook cells, as 412 pages · 9 PDFs. Each
reader counts in the same pass that extracts the text, and the count is kept in
a new nullable files.units column. A PDF's text is unchanged byte for byte:
the document is parsed once for both its text and its page count.
Older stores are counted on their next index pass without re-embedding. A store written before 0.34.0 opens as it is. The page says how many files are not counted yet, and the next run or start-up catch-up reads only those files again, for their counts. No chunk, vector, symbol or search row changes.
Inside the index no longer stalls other reads. A cold measure of a very large store read every chunk while holding the lock every read route shares. On the 879k-chunk corpus this held the Stores list for about five minutes. Each store is now measured on its own connection.
Model, tokens and cost in the ledger
Each ledger row can show the model, tokens and cost of the call that made
it. MCP does not carry any of the three, but each client's own session log
does. With Usage from client logs on (Privacy page, or semlith ledger
--usage on), semlith matches each of its rows to the tool call in that
client's log by tool, time and arguments. It takes the model and the input,
output, cache-read and cache-write tokens of the request that issued the call.
The Ledger page gains a Usage tab with totals per client and model, and
semlith ledger prints a usage line under each row. The setting is off by
default. Off, no client log is opened. On, logs are opened read-only and only
the model id and the numbers are kept. A client that keeps no readable log says
not recorded rather than being estimated.
Cost comes from a models.dev price table built into the binary. Where the
client records its own cost, that figure is used. Otherwise cost is the tokens
at the model's price, with context tiers and cache rates, in a trimmed snapshot
of models.dev (MIT): 1,110 models across the vendors and
the gateways the supported clients use. semlith prices shows the table in use
and one model's rates. semlith prices update, or Update prices on the
Ledger page, fetches a fresh table from models.dev. It runs only when asked and
is refused under --airgap. Every priced row names the table and date it was
priced with. The Agents page has a Model prices card showing the table's
source and date, with the update button.
Savings figures are priced from the same table. Before 0.34.0 the savings
report, the Reports page and the Ledger's sessions table offered three
hard-coded Anthropic prices. They now offer a model per vendor the supported
clients use (Claude, GPT, Gemini, Grok, DeepSeek, Kimi, GLM, Mistral), and
--model accepts any model in the table. The Ledger's Sessions table has no
picker any more. Each session's saving is priced at the model that session ran
on, from its client's log, and a session whose model is not known shows no
amount. The default is claude-sonnet-5-5. Sonnet 5, Opus 5
and Haiku 4.5 still work, and are priced at the table's current rate for
those models instead of the old fixed numbers. Reports that name them will show
different amounts.
Fixed
Doctor reads IO CLI's user-scope registration. io mcp add --scope user
writes ~/.io-cli/io.toml, which doctor never read, so a registered IO CLI
showed as installed, not registered.
A correct steering hook no longer reads as stale when another tool keeps
its own hooks in the same Claude Code settings.json. The hook was checked by
writing the whole file back and comparing it as text. It is now compared entry
by entry.
The Doctor page colours each Skill & hook part by its state. hook present
(soft), always loaded and research agent were amber even when healthy. A
stale skill or hook now puts semlith setup in the To-fix column, and the
header's count includes it.
Install
macOS and Linux
:::sh
curl -fsSL https://raw.githubusercontent.com/semlith/semlith/main/install.sh | sh
Windows
:::powershell
irm https://raw.githubusercontent.com/semlith/semlith/main/install.ps1 | iex
Or download the archive for your platform below, unpack it, and put
semlith on your PATH. Intel macOS has no prebuilt binary: ONNX
Runtime no longer publishes x86_64 macOS builds.
Verify a download against SHA256SUMS before running it.