Download Latest Version semlith-v0.51.1-x86_64-pc-windows-msvc.zip (24.5 MB)
Home / v0.37.0-rc.1
Name Modified Size InfoDownloads / Week
Parent folder
install.ps1 2026-10-04 9.4 kB
install.sh 2026-10-04 8.7 kB
semlith-v0.37.0-rc.1-aarch64-apple-darwin.tar.gz 2026-10-04 25.0 MB
semlith-v0.37.0-rc.1-aarch64-unknown-linux-gnu.tar.gz 2026-10-04 24.5 MB
semlith-v0.37.0-rc.1-x86_64-pc-windows-msvc.zip 2026-10-04 22.6 MB
semlith-v0.37.0-rc.1-x86_64-unknown-linux-gnu.tar.gz 2026-10-04 25.7 MB
SHA256SUMS 2026-10-04 623 Bytes
README.md 2026-10-04 4.7 kB
Semlith 0.37.0-rc.1 source code.tar.gz 2026-10-04 4.4 MB
Semlith 0.37.0-rc.1 source code.zip 2026-10-04 4.7 MB
Totals: 10 Items   107.0 MB 0

Semlith Cloud, from this machine

Nothing changes for anybody who never signs in: with no ~/.semlith/cloud.json the binary makes no outbound connection and starts no thread for the cloud.

  • semlith cloud login [<org>] signs in by a code approved in the browser (the device authorization grant), or with --token checked against the host first. The token is kept owner-only in ~/.semlith/cloud.json, one entry per host and org, and is sent to that host and no other. logout forgets it; status [--json] prints the org, its stores with each source's revision and lag, and the month's usage.
  • semlith cloud connect <org> adds the org's stores as remote stores named <org>/<store>, listed by stats, files, semlith_stats, the Stores page and Search's picker with a remote · <org> badge, and refused by every write path with a sentence saying why. disconnect takes them off and leaves registry.json byte for byte as it was.
  • A search naming a remote store, or none, is one list: remote hits merged with local ones by score under the same k and budget, each with its badge, revision and lag. Other tools naming a remote store are forwarded to the org's MCP endpoint. An unreachable or refusing host costs one line naming the stores skipped; the local answer is whole.
  • semlith cloud push <org>/<store> <dir> [--wait] [--prune] sends only the files whose hashes changed, after semlith's own refusals. A push that would remove files the store's uploads hold and the folder lacks is refused with their names unless it says --prune; the portal asks first.
  • semlith cloud sync <store> on|off: per store, off by default, the ledger's rows (when, client, session, tool, tokens; never the query text) go to the org's ledger once a minute, at most 1,000 at a time. A new synced_at column records what was sent.
  • semlith cloud report and semlith cloud replay.
  • Settings › Cloud draws both states; the Ledger page says what is syncing, the Privacy page what leaves the machine and when, the daemon card · cloud: <org>, and semlith doctor has a cloud line.

Added

  • Semlith::index_paths_under, Semlith::index_rest_under and Semlith::undo_run: a run under a control an embedder drives (pause, yield and continue from IndexReport::pending, stop and undo every slice's written), each taking the store's lock as index_paths does.

Fixed

  • An MCP client reached over HTTP is labelled by the Semlith-Host header its stdio proxy sends, never by the ancestry of the daemon serving it. A daemon started from a terminal filed every HTTP client under that terminal's app ("flow-test (Claude Code)"); an embedder calling semlith::mcp::answer gets no host unless it sets Session::host.
  • A stopped run's undo no longer archives the run's own definitions as symbol history. Undoing a 400-file run left 600 rows in symbols_past for code the store never held; forget and re-indexing keep their history as before.
  • semlith search answers from connected remote stores too, not only the MCP tool and the portal.
  • semlith cloud replay says once, not twice, that session replay is off for the org.
  • The model cache is created private (0700) when it does not exist yet. Left to the download it took the umask, and on Ubuntu, whose default is 002, the first run downloaded the model and every later run refused the group-writable directory.
  • Markdown heading names drop their inline emphasis, code spans and links: a Confluence heading ## **Making purposeful content** was named with its asterisks in search and the graph. Existing stores keep the old names until those files are re-indexed.
  • A finished run's history row is written before anything can read the run as finished; a daemon stopped right after "done" could lose it.
  • With the cloud unreachable, the search summary counts its stores as skipped, not as 0 hits; a remote store the cloud no longer offers says so in Settings › Cloud; cloud status sizes caps in GB.

Install

macOS and Linux

:::sh
curl --proto '=https' --tlsv1.2 -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, and its provenance with gh attestation verify <file> --repo semlith/semlith.

Source: README.md, updated 2026-10-04