Deploy Busbar
Busbar is a single static binary with no runtime dependencies. Find your row, run the command, follow the guide.
Run it
Section titled “Run it”| Substrate | Get it | Best for | Guide |
|---|---|---|---|
| Homebrew | brew install GetBusbar/busbar/busbar | macOS & Linux dev machines | Download |
| One-line install | curl -fsSL https://getbusbar.com/install.sh | sh | quick try, any Unix | Download |
| Binary + systemd | release binaries | VMs, bare metal, config-mgmt fleets | Binary |
| Docker | docker pull getbusbar/busbar | a single host, local, or Compose | Docker |
| Docker Compose | compose.yaml | a host with a writable governance volume | Docker |
| Kubernetes (Helm) | helm repo add busbar https://getbusbar.github.io/helm-charts | clusters — the official chart renders everything | Kubernetes (Helm) |
Manage it as code
Section titled “Manage it as code”Point any of these at a running gateway’s admin API to drive virtual keys, hooks, and config:
| Tool | Get it | Guide |
|---|---|---|
| Terraform | source = "getbusbar/busbar" | Terraform |
| Pulumi | GetBusbar/pulumi-busbar (Python / TS / Go) | Terraform § Pulumi |
| Crossplane | GetBusbar/provider-busbar (K8s CRDs) | Terraform § Crossplane |
| SDKs | pip install busbar-admin · npm i @busbar/busbar-admin · go get …/busbar-go | SDKs |
| busbar-admin (CLI) | cargo install --git https://github.com/GetBusbar/busbar-admin | SDKs § CLI |
| CI validation | uses: GetBusbar/validate-action@v1 | validate-action |
What every path shares
Section titled “What every path shares”However you run it, the model is the same:
- Two config files.
config.yaml(the deploy config) andproviders.yaml(the provider catalog — ships inside the Docker image; fetched by the installer for the bare binary). Default locations/etc/busbar/config.yamland/etc/busbar/providers.yaml, overridable viaBUSBAR_CONFIG/BUSBAR_PROVIDERS. - Secrets stay in the environment. Provider API keys, client tokens, and the admin token are read from environment variables (referenced as
${VAR}inconfig.yaml), never written into the config files. An unset referenced variable is a loud startup failure. - Two listeners. The public data plane (
:8080) serves LLM traffic; the admin plane always runs on its own listener (:8081, loopback by default) and refuses to boot on a network-exposed bind without mTLS. See Operations and the Admin API. - Health checks.
GET /healthzon the data port (and the admin port) — unauthenticated, side-effect-free, ideal for a load balancer or orchestrator probe. - Validate before you reload.
busbar --validateparses and validates both files with no server, no network, and no secrets — exit0= safe to deploy. Run it in CI and before every reload.