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

Install

Two binaries: fast_code_search_server (the index and its APIs) and fcs (the command-line client). They are built together and released together.

Release archive

Download the archive for your platform from the latest release, verify it, unpack it, and put both binaries on your PATH:

tar -xzf fast_code_search-v*-x86_64-unknown-linux-gnu.tar.gz
sha256sum -c fast_code_search-v*-x86_64-unknown-linux-gnu.tar.gz.sha256
mkdir -p ~/.local/bin && cp fast_code_search_server fcs ~/.local/bin/
PlatformArchive
Linux x86_64, glibc…-x86_64-unknown-linux-gnu.tar.gz
Linux x86_64, static…-x86_64-unknown-linux-musl.tar.gz (any distribution, no glibc dependency)
macOS, Apple silicon…-aarch64-apple-darwin.tar.gz
macOS, Intel…-x86_64-apple-darwin.tar.gz
Windows x86_64…-x86_64-pc-windows-msvc.zip

Each archive also contains config.toml.example, the startup unit files under deploy/, and the CLI and startup guides. On macOS, a downloaded binary may need xattr -d com.apple.quarantine <file> before it runs.

Verifying a download

Every archive ships with a .sha256 file and, for releases after v0.13.0, a Sigstore bundle (.sigstore.json) produced by the release workflow’s own identity. The checksum proves the file is intact; the signature proves it was built by this repository’s release workflow for this tag, and not merely uploaded by someone holding the account.

sha256sum -c fast_code_search-v0.18.1-x86_64-unknown-linux-gnu.tar.gz.sha256
cosign verify-blob \
  --bundle fast_code_search-v0.18.1-x86_64-unknown-linux-gnu.tar.gz.sigstore.json \
  --certificate-identity-regexp '^https://github.com/jburrow/fast_code_search/' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  fast_code_search-v0.18.1-x86_64-unknown-linux-gnu.tar.gz

cosign is a single binary; no key management is involved because the signing is keyless.

With cargo

cargo binstall downloads the release archive for your platform instead of compiling, using the metadata in Cargo.toml. Until the crate is on crates.io, point it at the repository:

cargo binstall --git https://github.com/jburrow/fast_code_search fast_code_search

Once fast_code_search is published on crates.io, cargo binstall fast_code_search and cargo install fast_code_search work without the --git flag.

Homebrew

A tap is wired into the release workflow and will be announced here once its repository exists; until then use the archive, cargo binstall or the container image.

Container image

Every release from v0.13.0 is also published as ghcr.io/jburrow/fast_code_search (tags latest, 0.18, 0.18.1). The image indexes whatever is mounted at /src, watches it for changes, and serves the web UI and REST API on port 8080 and gRPC on 50051:

docker run --rm -p 8080:8080 -v "$PWD:/src:ro" ghcr.io/jburrow/fast_code_search

To keep the index between runs mount a volume at /var/lib/fast_code_search; to change any setting mount your own file at /etc/fast_code_search/config.toml (the baked-in one is deploy/docker/config.toml). The fcs client is in the image too: docker exec <container> fcs 'fn main'.

From source

Requires Rust 1.89 or newer and the Protocol Buffers compiler (protoc, from your package manager or the releases page).

cargo install --git https://github.com/jburrow/fast_code_search --bins

or, from a checkout, cargo build --release and take target/release/fast_code_search_server and target/release/fcs.

Check

fast_code_search_server --version
fcs --version

Next: First index, first search.