Download Latest Version semlith-v0.51.1-x86_64-pc-windows-msvc.zip (24.5 MB)
Home / v0.34.0
Name Modified Size InfoDownloads / 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.

Source: README.md, updated 2026-09-30