Installation
Prerequisites
- Rust toolchain matching
rust-toolchain.toml - Node.js 22+ and pnpm for TypeScript packages (SDK / docs)
- Firefox (default engine) and/or Chromium when running live browser workflows
Build from source (always works)
git clone https://github.com/cavi-ai/bobby-browser.git
cd bobby-browser
cargo build -p bobby-browser --release
./target/release/bobby doctor
./target/release/bobby --helpPackage name: bobby-browser. Binary name: bobby.
After the binary is available, run the dependency-aware installer:
bobby install
bobby doctorFor a non-interactive host-specific install:
bobby install --host claude --yesSelecting an agent host generates a missing agent bootstrap credential. Vision setup generates a separate owner-only local vision credential. Bobby does not print either secret during routine install or doctor output.
Install from registries (when published)
# CLI — after crates.io publish succeeds for this version
cargo install bobby-browser
# TypeScript SDK — after npm publish succeeds
npm install @cavi-ai/bobby-browser
# Rust HTTP client — after crates.io publish
cargo add bobby-browser-clientDo not treat registry installs as available until npm view / cargo search shows the version you need.
Install a GitHub Release binary
One-liner (Linux / macOS) — installs bobby, mcp-gateway, and acp-gateway into INSTALL_DIR (default ~/.local/bin):
curl -fsSL https://raw.githubusercontent.com/cavi-ai/bobby-browser/main/scripts/install.sh | bashOptional: BOBBY_VERSION=0.12.0 (no leading v) and INSTALL_DIR=~/.local/bin.
Homebrew (macOS / Linuxbrew)
Not on homebrew-core yet. From a checkout of this repo:
brew tap cavi-ai/tap
brew install cavi-ai/tap/bobby-browserFrom the tap, once it is published:
brew tap cavi-ai/tap
brew install cavi-ai/tap/bobby-browserThe tap repository is cavi-ai/homebrew-tap; brew strips the homebrew- prefix and addresses it as cavi-ai/tap, so the formula is reached as cavi-ai/tap/bobby-browser rather than repeating the project name.
The formula downloads the matching GitHub Release tarball and installs the same three binaries.
When submitting to homebrew-core later: formula bobby-browser; bottle bobby / mcp-gateway / acp-gateway; livecheck on GitHub Releases; CI that builds all three; pass brew audit --strict.
Manual download
Assets are named bobby-browser-<version>-{linux|macos|windows}-{x64|arm64}.tar.gz (.zip on Windows). Each archive contains bobby, mcp-gateway, and acp-gateway. Example for the latest macOS arm64 release:
TAG="$(curl -fsSL https://api.github.com/repos/cavi-ai/bobby-browser/releases/latest | python3 -c 'import json,sys; print(json.load(sys.stdin)["tag_name"])')"
VERSION="${TAG#v}"
curl -fsSL -o bobby.tgz \
"https://github.com/cavi-ai/bobby-browser/releases/download/${TAG}/bobby-browser-${VERSION}-macos-arm64.tar.gz"
tar -xzf bobby.tgz
STAGE="bobby-browser-${VERSION}-macos-arm64"
install -m 755 "$STAGE/bobby" "$STAGE/mcp-gateway" "$STAGE/acp-gateway" ~/.local/bin/
bobby doctorPick linux-x64, linux-arm64, macos-x64, or windows-x64 to match your host. Release archives are stripped on Unix; see the repository Releases page for every asset.
Manual bootstrap credential
./target/release/bobby init
# or: bobby init --path ./bootstrap.envWrites a dotenv with AUTOMATION_RUNTIME_BOOTSTRAP_* under the OS config dir (or --path). Prints the plaintext bearer once — map it to AUTOMATION_RUNTIME_TOKEN for clients. Never commit secrets into config.toml.
bobby install and bobby doctor --fix normally create this file when needed; manual bobby init is intended for explicit credential rotation or custom paths.