Skip to content

Installation

Install shunt via Homebrew, the install script, Cargo from git, prebuilt binaries, or from source.

Updated View as Markdown

Homebrew (macOS / Linux)

brew install pleaseai/tap/shunt

Run as a background service

brew services start shunt

Logs go to $(brew --prefix)/var/log/shunt.log. brew services stop sends SIGTERM, and shunt drains in-flight requests before exiting — for up to [server] shutdown_timeout_seconds (default 30; changing this one does need a restart), after which shunt stops waiting and exits. On Unix, Antigravity agent turns are terminated when shutdown starts so their isolated process groups cannot hold the drain open. Config changes don’t need a restart — shunt hot-reloads the file automatically. See Running as a service for config discovery paths and more detail.

Install script (macOS / Linux)

curl -fsSL https://shunt.sh/install.sh | sh

The script downloads the prebuilt binary for your OS and CPU from the GitHub release, verifies it against the release’s SHA256SUMS, and installs it as ~/.local/bin/shunt. Two environment variables adjust it:

  • SHUNT_VERSION — the release to install (for example 0.55.0). Defaults to the release the script was published with, which is the latest one.
  • SHUNT_INSTALL_DIR — the destination directory (default ~/.local/bin). If it is not on your PATH, the script prints the line to add.
curl -fsSL https://shunt.sh/install.sh | SHUNT_VERSION=0.55.0 sh

Cargo (from git)

Install directly from the source repository; the binary is still named shunt:

cargo install --git https://github.com/pleaseai/shunt

New versions are distributed through Homebrew and GitHub release binaries. The crates.io package stops at the last version published there.

Prebuilt binaries

Each GitHub release attaches standalone binaries for macOS (arm64/x64) and Linux (arm64/x64), plus a SHA256SUMS file:

# Selects the right asset for your OS/CPU (darwin/linux × arm64/x64)
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m); case "$ARCH" in x86_64) ARCH=x64 ;; aarch64) ARCH=arm64 ;; esac
curl -fsSLO "https://github.com/pleaseai/shunt/releases/latest/download/shunt-${OS}-${ARCH}"
chmod +x "shunt-${OS}-${ARCH}" && mv "shunt-${OS}-${ARCH}" /usr/local/bin/shunt

From source

Requires stable Rust with cargo:

git clone https://github.com/pleaseai/shunt
cd shunt
cargo build --release   # -> target/release/shunt

You can also run straight from the source tree with cargo run -- <args>.

A default build needs no Node toolchain and ships no admin dashboard bundle. To build the binary with the embedded admin SPA, build the bundle first and enable the ui feature. The bundle build requires Node.js 22.12 or newer:

cd ui && npm ci && npm run build && cd ..
cargo build --release --features ui

The prebuilt release binaries above are built this way, so this step matters only for a from-source build. See /admin endpoints for what the feature adds.

Prerequisites for connecting Claude Code

  • Claude Code — any recent version; v2.1.129+ only if you want model discovery.
  • A credential for whichever provider you map:
    • an OpenAI API key for the openai provider, or
    • a ChatGPT login via the Codex CLI (codex login) for the codex provider.
  • Your normal Anthropic credential (claude.ai login or an API key) — shunt forwards it through for every model you don’t map.

Next: the Quickstart.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close