Homebrew (macOS / Linux)
brew install pleaseai/tap/shuntRun as a background service
brew services start shuntLogs 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 | shThe 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 example0.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 yourPATH, the script prints the line to add.
curl -fsSL https://shunt.sh/install.sh | SHUNT_VERSION=0.55.0 shCargo (from git)
Install directly from the source repository; the binary is still named shunt:
cargo install --git https://github.com/pleaseai/shuntNew 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/shuntFrom source
Requires stable Rust with cargo:
git clone https://github.com/pleaseai/shunt
cd shunt
cargo build --release # -> target/release/shuntYou 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 uiThe 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
openaiprovider, or - a ChatGPT login via the Codex CLI (
codex login) for thecodexprovider.
- an OpenAI API key for the
- 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.