Release artifacts
Pin the Blue image by immutable digest:all; pass a component command to run one workload per container. Each GitHub Release also provides a deployment bundle containing blue.yaml, the Helm chart, an AWS OpenTofu starter, and optional gateway-provisioner examples.
Workload topology
Run the Control API replicas with
HARNESS_RUN_BACKGROUND_JOBS=false. Run the singleton worker with HARNESS_RUN_BACKGROUND_JOBS=true, do not route public API traffic to it, and give it the same configuration, database, storage access, and secrets as the Control API.
The Control API, dashboard, and inference proxy are independently scalable. Keep the worker singleton so cleanup, reconciliation, and other background loops do not run concurrently.
All-in-one process
Leaving the image command empty, or setting it toall, runs the Control API and dashboard in one container and optionally starts the inference proxy when BLUE_ENABLE_INFERENCE_PROXY=true.
Use all-in-one mode for local evaluation. A production platform should normally run separate workloads so it can isolate failures, scale components independently, and maintain a singleton worker lifecycle.
External dependencies
Every deployment requires:- PostgreSQL for authentication, governance revisions, users, clients, gateway selections, and session metadata
- A non-expiring S3-compatible bucket for immutable package artifacts
- A separate S3-compatible bucket for session objects, with lifecycle retention that matches your policy
- Workload identity or storage credentials with least-privilege access to those buckets
- DNS and TLS for every public endpoint
Configuration and secrets
Mount the sameblue.yaml read-only into the Control API and worker. The release image defaults BLUE_CONFIG_FILE to:
BLUE_CONFIG_OVERLAY_FILES may contain a comma-separated list of additional
YAML files. The Control API applies them in order: mappings merge recursively,
while scalar and sequence values replace the base value. Use small overlays for
optional deployment features; keep shared configuration in the canonical file.
Keep credentials in your platform’s secret store and inject them at runtime. A password-mode governance-only deployment needs at least:
Keep
BETTER_AUTH_SECRET stable after the initial deployment. Follow Configure blue.yaml for the full environment mapping, authentication contract, storage endpoints, managed repositories, and gateway secrets.
An absent BLUE_ENVIRONMENT is production. Only local development may set it
to development, which permits the documented sample authentication values.
Gateway deployments also set BLUE_GATEWAY_ENABLED=true on the dashboard so it
requires the inference proxy’s OAuth client secret before opening a listener.
Helm owns both flags; do not inject either through blue.env.
Service networking
Publish only the endpoints required by users and clients:
Configure the dashboard with an internal Control API URL and the public Control API origin. Configure the Control API’s authentication session and JWKS URLs to reach the dashboard over the private network. The public issuer and audience must exactly match the externally reachable dashboard and Control API origins.
Do not expose port
8082 through a public load balancer. In gateway mode, restrict it to inference-proxy workloads and use the documented mTLS and OAuth client-credentials controls.
The Control API’s /governance-config/events route is a server-sent event stream with a 15-second heartbeat. Disable response buffering for that route and set the upstream idle timeout above the heartbeat interval. Clients fall back to polling when the stream is unavailable.
Health checks
The Control API readiness endpoint verifies database connectivity. A successful liveness response alone does not prove that PostgreSQL or object storage is usable; after deployment, sign in and use the dashboard or CLI dependency-health view as an end-to-end check.
Rollout responsibilities
Your deployment implementation should:- Provision PostgreSQL, both buckets, workload identity, secrets, DNS, and certificates.
- Deploy the pinned image and mounted configuration with the workload topology above.
- Wait for readiness before directing traffic to new replicas.
- Preserve the singleton worker invariant during deploys and restarts.
- Drain inference-proxy connections during gateway-mode rollouts.
- Back up PostgreSQL and both storage domains before upgrades.
- Monitor authentication failures, dependency health, worker failures, stale clients, and gateway failures when enabled.
Optional inference proxy
Gateway mode adds theinference-proxy workload and private Control API port 8082. It also requires:
- A top-level
gatewaysection inblue.yaml - Matching gateway type settings in the Control API and inference proxy
- An upstream LiteLLM URL and user identities whose emails match Blue users
- Credential encryption using AWS KMS or another supported provider
- A built-in provisioner or digest-pinned deployment-trusted executable
- OAuth client-credentials between the proxy and dashboard token endpoint
- mTLS certificates between the inference proxy and private Control API listener
- Streaming-aware public ingress and connection draining
