Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Installation

Prebuilt binaries

Each GitHub release ships prebuilt laurus binaries for the following targets, all built with --features embeddings-all:

Target triplePlatformlibcLinkingArchive
x86_64-unknown-linux-gnuLinux x86_64glibcdynamic.tar.gz
aarch64-unknown-linux-gnuLinux aarch64glibcdynamic.tar.gz
x86_64-unknown-linux-muslLinux x86_64muslstatic.tar.gz
aarch64-unknown-linux-muslLinux aarch64muslstatic.tar.gz
x86_64-apple-darwinmacOS Inteldynamic.tar.gz
aarch64-apple-darwinmacOS Apple Silicondynamic.tar.gz
x86_64-pc-windows-msvcWindows x86_64MSVCdynamic.zip
aarch64-pc-windows-msvcWindows arm64MSVCdynamic.zip
VERSION=v0.10.0
TARGET=x86_64-unknown-linux-musl
curl -fsSL -O "https://github.com/mosuka/laurus/releases/download/${VERSION}/laurus-${VERSION}-${TARGET}.tar.gz"
tar -xzf "laurus-${VERSION}-${TARGET}.tar.gz"
./laurus --version

Which build should I use?

  • Use a gnu build on an ordinary Linux distribution. musl’s allocator (mallocng) is measurably slower than glibc’s under multi-threaded, allocation-heavy workloads, which describes laurus’s indexing path.
  • Use a musl build for Alpine, distroless, scratch, or any host whose glibc is older than the build runner’s – the musl binaries are fully statically linked and have no dynamic library dependencies at all.

Using the musl binary in a container

FROM alpine:3.22
# Only needed if you use `embeddings-openai`: reqwest's rustls backend
# verifies against the OS trust store. Hugging Face model downloads
# (`embeddings-candle` / `embeddings-multimodal`) use root certificates
# bundled into the binary and work without this. See "Feature Flags" in
# the development guide for details.
RUN apk add --no-cache ca-certificates
COPY laurus /usr/local/bin/laurus
ENTRYPOINT ["laurus"]

or, with no package manager at all:

FROM scratch
COPY laurus /laurus
ENTRYPOINT ["/laurus"]

A couple of runtime notes for musl/scratch deployments:

  • DNS resolution uses musl’s built-in resolver, which reads /etc/resolv.conf and ignores NSS plugins. Container runtimes always provide /etc/resolv.conf, so this works out of the box; a hand-built scratch image must not omit it.
  • Rust’s standard library uses its own default stack size for spawned threads (2 MiB), not musl’s smaller pthread default, so this is not usually a concern in practice.

From crates.io

cargo install laurus-cli

This installs the laurus binary to ~/.cargo/bin/.

From source

git clone https://github.com/mosuka/laurus.git
cd laurus
cargo install --path laurus-cli

Verify

laurus --version