Repository navigation
Semlith 0.49.0
A machine with no network indexes and searches a folder that holds images,
once its model cache is copied from a connected machine. No store format
change and no re-index.
Added
semlith setup --all-models. Beside the embedding model it fetches the
rescoring model and both CLIP encoders, pinned and digest-checked, into the
model cache (SEMLITH_MODEL_CACHEwhen set). It states the total and asks
first;--yesanswers. A model already cached is skipped, so a second run
downloads nothing. With--airgaporSEMLITH_AIRGAPit exits non-zero
before any step runs. Without the flag setup downloads what 0.48.0 did.- The Privacy page lists every model weight. Rows for the rescoring model,
CLIP's vision encoder and CLIP's text encoder, each with its source, size,
when it is fetched and whether it is on disk. tests/airgap.sh. A local gate, never run in CI: given a Linux release
archive it seeds a cache withsetup --all-modelsin a connected container,
then indexes and searches by CLI and stdio MCP in a--network none
container withSEMLITH_AIRGAP=1and the cache mounted read-only.
Fixed
- A pictured query no longer fails when CLIP's text encoder is missing.
Under airgap, or offline, a query that describes something seen ("logo",
"a red circle") failed the whole search with the airgap refusal or a DNS
error, and the text results went with it. The image lane's error now costs
the pictures only: the search answers from its other lists with one note
naming why, on stderr for the CLI, in the result text forsemlith_search
andsemlith_brief, and above the portal's results. Nothing is remembered,
so the next search after the cache is seeded finds images again. - Indexing an image fetches both CLIP encoders. The text encoder waited
for the first pictured query, so a cache seeded by indexing on a connected
machine had only half of CLIP, although docs/security.md said both came
with the first image. It is now fetched and digest-checked with the vision
encoder, and still loaded only at the first pictured query. Under airgap a
missing text encoder is not an indexing error. - A cached rescoring model loads under airgap. The airgap check asked
about the reranker by its display name, which no cache directory carries,
soSEMLITH_AIRGAPrefused a reranker that was on disk. It now asks by
repository.
Install
macOS and Linux
curl --proto '=https' --tlsv1.2 -fsSL https://raw.githubusercontent.com/semlith/semlith/main/install.sh | shWindows
irm https://raw.githubusercontent.com/semlith/semlith/main/install.ps1 | iexOr 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, SHA256SUMS
against its signature (release key
SHA256:a5oJmrakIwDHEWTDWqWe51Ttt6m2tQ0dsGzIqyxDuxs) with
echo "semlith-release ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICMTHiHMzeSHzzc+8UDZHUzJcvb6XGUBb+TJdFes91xm" > allowed_signers
and ssh-keygen -Y verify -f allowed_signers -I semlith-release -n file -s SHA256SUMS.sig < SHA256SUMS,
and its provenance with gh attestation verify <file> --repo semlith/semlith --signer-workflow semlith/semlith/.github/workflows/release.yml.