blue.yaml is the source-controlled configuration for one Blue deployment. The binary default for BLUE_CONFIG_FILE is blue.yaml, but every documented container deployment uses the image’s fixed /etc/blue/blue.yaml; mount the file there.
The file combines server runtime configuration and the organization policy seed, but Blue does not send the complete file to clients.
How values are resolved
Runtime settings use this precedence:- A non-empty direct environment variable, such as
HARNESS_DATABASE_URL. - The corresponding scalar in
blue.yaml. - A built-in default, where the setting has one.
os.environ/NAME is used by generated exports and examples. env://NAME is accepted for compatibility. Startup fails when a referenced variable is absent. Boolean and numeric settings may be native YAML scalars or environment-backed strings.
Managed repository credential fields also accept file://absolute/path, which is useful with secret-store CSI mounts:
file:// is not a general reference form for every runtime field. Use it for managed repository connection fields and gateway.secret_encryption.key.
Production starting point
The deployment bundle includes a minimalblue.yaml. A production-oriented governance-only configuration has this shape:
required: true, so clients refuse to launch from
an expired cache when the governance service is unavailable. Existing revisions
and an explicitly authored required: false remain unchanged during upgrades.
The Helm values configure the public dashboard and API domains separately. Keep those values consistent with control_api.auth:
Configure control_api
Process and bootstrap settings
Bootstrap values initialize a new database. They are not a declarative user-management system for existing organizations; manage members and invitations through the dashboard or SCIM after startup.
Authentication endpoints
BETTER_AUTH_URL, BETTER_AUTH_SECRET, bootstrap password, and OIDC provider credentials are dashboard runtime variables supplied through the Helm secret; they are not replacements for the endpoint contract above.
Identity lifecycle
mode accepts password or oidc. OIDC mode requires a SCIM bearer token because Blue uses directory provisioning rather than just-in-time user creation. group_role_mappings is a JSON object whose values are admin or member, for example {"Blue Admins":"admin"}. Configure provider ID, issuer, client ID, and client secret as dashboard environment variables. Follow Set up Okta SSO and SCIM for the complete lifecycle.
Blob and package storage
Use workload identity or ambient AWS credentials rather than static access keys. Keep session and package buckets separate because they have different retention and recovery requirements.
Request logs and managed repositories
gateway_request_logs.retention_days controls metadata retention for inference-proxy request logs. It does not store prompt or response bodies.
Managed repository connections let administrators select packages from private GitHub or Bitbucket repositories without giving repository credentials to clients:
github, bitbucket_cloud, and bitbucket_data_center. GitHub requires app_id and private_key; Bitbucket requires token. Connection IDs must be unique and contain only letters, numbers, dashes, or underscores. The organizations map limits which repository namespaces each Blue organization may use. See Managed repositories for enterprise URLs, CA bundles, and artifact mirroring.
Configure optional gateway mode
Omit the entiregateway section for governance-only operation. Adding it connects Blue to an upstream inference gateway operated by your organization, enables gateway policy for every allowed agent, and requires a provisioner plus encrypted server-side credential storage. Blue does not bundle the upstream gateway. LiteLLM is the first and currently only supported gateway.type.
HARNESS_PROVISIONER_EXECUTABLE_PATH and HARNESS_PROVISIONER_EXECUTABLE_SHA256 override the corresponding custom-provisioner YAML fields.
The inference proxy also requires HARNESS_GATEWAY_TYPE with the same value as
gateway.type, plus HARNESS_GATEWAY_JWKS_URL,
HARNESS_GATEWAY_JWT_ISSUER, and HARNESS_GATEWAY_JWT_AUDIENCE; it does not
infer a gateway or trust domain from URLs. In Helm, set blue.gatewayType and
the blue.inferenceJwt values when blue.enableInferenceProxy=true.
The LiteLLM administrator key and inference JWT private key remain runtime secrets; do not put them in governance policy. See Bring your own gateway for the authenticated request path, key ring, and operational checks.
Configure the governance baseline
Thegovernance section is the deployment-authored baseline delivered to clients after personalization. It controls:
Per-agent managed settings are agent-native and version-aware:
Baseline reconciliation
On startup, the Control API compares:- The baseline previously loaded from
blue.yaml. - The current organization revision, including dashboard edits.
- The newly mounted
governancesection.
blue.yaml.
The Control API detects baseline changes from the normalized document, not from the authored revision string. You do not need to manually increment that seed value; use source control and deployment image tags to identify authored releases.
Configure the package catalog
package_catalog defines choices displayed on the dashboard’s Extensions page. Catalog entries are not automatically installed. When an administrator selects one, Blue copies its immutable recipe into an organization governance revision.
platform_sources when helper binaries differ by operating system or architecture. Adapter paths must be archive-relative and identify only content Blue knows how to activate; package installation does not run arbitrary installer scripts.
Validate and roll out changes
1
Review secret boundaries
Confirm that database URLs, private keys, tokens, encryption material, bootstrap passwords, and gateway administrator keys are references rather than literals.
2
Validate YAML and deployment templates
Run the release bundle’s validation workflow. Locally, parse
blue.yaml, lint the chart, and render Kubernetes resources:3
Review infrastructure and image changes
Review the OpenTofu plan and the organization image diff. Pin the upstream Blue image to the intended release rather than relying on
latest.4
Deploy and inspect startup
Wait for the Helm rollout and inspect Control API logs for YAML parsing, missing references, migration failures, and baseline reconciliation notices.
5
Verify public behavior
Check the dashboard and Control API health endpoints, sign in as an administrator, then run
blue setup, blue login, blue status, and a governed agent launch from a test workstation.A complete rollout has healthy service probes, no unresolved environment references, the expected governance revision in the dashboard, and matching desired/applied revisions on a test client.
