Skip to main content

Installation

Pick a path. All of them give you the webrain binary; the first run of webrain install downloads the browser engine.
The script verifies the download against the release’s checksums.txt before installing, into ~/.local/bin (override with WEBRAIN_INSTALL_DIR). On Debian/Ubuntu that directory is already on PATH via ~/.profile, so a new shell is all you need afterwards — the installer checks the login shell and says so instead of asking you to edit your profile. Inside WSL the same command works as-is and picks the glibc linux-x86_64 build.
Then, in any terminal:

Manual download

Every release carries one binary per platform and architecture:
The install scripts pick the right one from uname -m / PROCESSOR_ARCHITECTURE, including the static musl build on Alpine and other non-glibc Linux (both architectures). For a manual download, swap the asset name above: webrain-linux-aarch64 on an ARM server, webrain-linux-aarch64-musl on ARM Alpine, webrain-macos-aarch64 on Apple Silicon, webrain-windows-aarch64.exe on Windows on ARM. Other targets (i686, RISC-V, FreeBSD) are build-from-source only — the code is portable Rust with no SIMD intrinsics, but no CI runner publishes them.

Package managers

Prebuilt binaries — install script, Homebrew, Scoop, cargo install — are built with --features pdfium, so webrain_pdf op=render (PDF pages → PNG tiles for vision) is available in every release. The library is bound at runtime, so fetch it once:
That drops pdfium.dll / libpdfium.so / libpdfium.dylib into the webrain engine cache, which op=render checks before the system loader — no PATH edit. It also accepts a copy sitting beside the executable. musl builds are the exception: the published pdfium is glibc-linked and cannot load on Alpine, so there op=extract and op=images are the paths that work.

From source

--features pdfium is what the published binaries carry — add ,chat to that cargo build for webrain chat. cargo install webrain passes no features, so a from-source install there is the plain binary. Add --features pdfium to that cargo build if you need webrain_pdf op=render (cargo install webrain does not pass features). Then webrain install pdfium — it downloads the bblanchon/pdfium-binaries build for this OS/arch into the engine cache, which is loaded at runtime rather than linked in. Add --features chat for webrain chat. Two consequences worth knowing before you type it:
  • The build now needs Rust 1.94+ (the github-copilot-sdk crate’s floor, enforced by Cargo’s MSRV-aware resolver). The workspace declares 1.94, so an older toolchain fails on any cargo build, feature or not.
  • The binary embeds the Copilot CLI runtime (~135 MB per platform, downloaded and SHA-256 verified at build time), so the artifact grows from ~37 MB to roughly 170 MB. That is why the feature is off by default for source builds.
  • It links OS OpenSSL 3 on Linux. A static musl target has none, so there the build vendors OpenSSL 3 (openssl’s vendored feature, compiled by musl-gcc) and the published musl builds carry chat like every other target.

Linux dependencies

Chrome needs system libraries on Linux. Install them before first run:
If you see “shared library” errors when running Chrome, that’s the missing-deps symptom — install the list above.

Updating

Detects your install method (Homebrew, Scoop, or manual) and updates automatically. For a cargo install:
Re-download engines after an update (the cache dir stays; versions are additive):

OS compatibility

Binary discovery is automatic on every OS: env override → PATH → ~/.lightpanda, ~/.obscura, ~/.local/bin → the webrain engine cache.

Optional bundles

webrain install also supports two self-contained mono bundles (no PATH installs, any OS):
install vision takes exactly one model id (--model <id> or the bare positional install vision <id>); anything else prints the choices with download size and RAM/VRAM instead of fetching a repo:
Each entry brings its own mmproj (mmproj-F16.gguf for the 2B, mmproj.gguf for the 9B); models land in vision/<id>/ and an existing single-model install keeps working. Download sizes are the exact blob sizes on Hugging Face; the RAM/VRAM columns are guidance, not a measured fit — a 9B at Q4_K_M is 5.63 GB of weights plus 922 MB of projector before any KV cache. The 9B quants need a GPU-enabled llama-server (WEBRAIN_LLAMA_SERVER) to be worth it — the bundled build is CPU-only.