Installing localdb

License: AGPL-3.0-or-later

Supported platforms

The release workflow produces binaries for:

Platform Target triple Embedding backend
macOS Apple Silicon aarch64-apple-darwin CoreML (ANE/GPU) built in, ONNX fallback
Linux x86_64 x86_64-unknown-linux-gnu ONNX CPU
Linux arm64 aarch64-unknown-linux-gnu ONNX CPU

The macOS binary includes CoreML acceleration automatically — no --features flag or config change is required.

No external dependencies (OpenSSL, etc.) are required. Release binaries are dynamically linked: on Linux, CI verifies an ldd allowlist plus a GLIBC symbol-version ceiling of 2.35, checked on both the binary and the runtime-extracted ONNX Runtime; on macOS, CI verifies an otool -L allowlist (only /usr/lib/, /System/Library/, @rpath, @loader_path). See release-engineering.md for pipeline details.

Install with Homebrew (macOS and Linux)

brew install dokterbob/localdb/localdb

The formula installs a prebuilt binary for your platform plus shell completions (bash/zsh/fish). The HTTP daemon can optionally run under brew services (launchd on macOS, systemd on Linux):

brew services start localdb   # runs `localdb serve`, restarts it on failure
brew services stop localdb

Every command works daemonless too — the service is opt-in.

Install with the shell installer

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/dokterbob/localdb/releases/latest/download/localdb-installer.sh | sh

Downloads the right tarball for your platform, installs into $CARGO_HOME/bin (falling back to ~/.cargo/bin) and offers to update your PATH.

Install from a pre-built tarball

Once a release is tagged, download the tarball for your platform from the releases page and extract the binary:

# Example: macOS Apple Silicon
PLATFORM=aarch64-apple-darwin
curl -L "https://github.com/dokterbob/localdb/releases/latest/download/localdb-${PLATFORM}.tar.xz" \
  | tar -xJ -C /usr/local/bin --strip-components=1 "localdb-${PLATFORM}/localdb"
localdb --version

Adjust PLATFORM to match your system from the table above.

Shell completions

Homebrew installs completions automatically. For other install paths, localdb completions <shell> prints the script (bash, zsh, fish, elvish, powershell) — e.g.:

# zsh (put anywhere on your $fpath)
localdb completions zsh > ~/.zfunc/_localdb
# bash
localdb completions bash >> ~/.bash_completion

A note on embedding models

The default embedder (pplx-embed-context-v1-0.6b) is downloaded from the public HuggingFace repo perplexity-ai/pplx-embed-context-v1-0.6b (~706 MB) on the first indexing or search operation (including source add’s auto-index). No API key or license click-through is required. The model is cached under paths.models for subsequent runs.

To fetch it ahead of time instead of on the first index/search, run localdb init --download-model (see cli.md).

For details on the embedding pipeline and alternative model options, see architecture.md and specs/04-search-pipeline.md.

Build from source

localdb requires Rust 1.88 or later on every platform (the pdf_oxide PDF parser pulls in image 0.25, which needs 1.88; the macOS CoreML path’s edition-2024 hf-hub 1.0 floor of 1.85 is subsumed). The easiest way to install and manage Rust is rustup:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Clone the repository and use cargo install --path:

git clone https://github.com/dokterbob/localdb.git
cd localdb
cargo install --path localdb

This places the localdb binary in ~/.cargo/bin/. Make sure that directory is on your PATH (rustup adds it automatically).

Verify the install:

localdb --version

You can also install directly from the git repository without cloning:

cargo install --git https://github.com/dokterbob/localdb localdb

If you’re planning to contribute rather than just build a local copy, see CONTRIBUTING.md for the development setup, coverage gates, and spec-first workflow.

Next step

Once installed, follow the Quick Start guide to index your first files and run a search.