blue.yaml.
The mounted blue.yaml is also reconciled at Control API startup. A deployment change creates a revision when it changes the effective policy. Dashboard changes win when both sources changed the same field; the service logs the skipped paths without logging their values.
Source-of-truth boundary
Store organization decisions in the deploymentgovernance section:
- allowed harnesses
- managed harness settings, which can also be changed from Harnesses
- global gateway type; client-to-proxy authentication is fixed to bearer
- session-upload opt-in
GET /governance-config to an authenticated user with an active OAuth session.
Publishing a change
1
Edit the deployment YAML
Change the smallest policy block needed in the mounted
blue.yaml.2
Deploy the change
Restart the Control API. It validates and reconciles the new baseline into an immutable revision.
3
Reconcile clients
Developers can run
blue apply immediately. Daemons pick up the revision on their next TTL poll.4
Verify rollout
Use the Clients page to compare desired and applied revisions and inspect managed-file health.
Harness settings
Open Harnesses in the administrator sidebar. Its metadata-driven table lists the available harnesses; each row’s Edit dialog provides an optional semantic-version range and a YAML editor scoped to that agent’smanaged_config. The server validates both before publishing them and records the minimum compatible Blue client when version pinning is enabled.
Saving replaces only the selected agent’s managed_config and preserves packages, MCP servers, and every other policy block. Each save uses the current base revision, so a concurrent policy change must be reloaded instead of being overwritten.
Extensions
Open Extensions in the administrator sidebar. Package cards show immutable versions, digests, harness compatibility, and included skills, subagents, hooks, plugins, or helper executables. The MCP servers tab manages local-command and remote-URL servers and the agents that receive each definition. See Managed packages for the complete package lifecycle. Custom packages use the same normalized schema as catalog entries. The source inspector acceptsgithub:owner/repository@ref for public GitHub repositories, public HTTPS archives, or an allowed deployment-managed GitHub/Bitbucket repository connection. Public GitHub refs are resolved to immutable codeload URLs and downloaded directly by clients. Managed repository refs are resolved to immutable commits and mirrored into organization-scoped storage. Every inspected source displays its exact SHA-256, and archives are capped at 100 MiB. Review the complete adapter inventory and digest before saving.
Per-harness overrides can disable a package or provide adapter settings. They cannot change the organization-approved archive or digest. All Extension tabs share one pending-change state and publish through the same revision checks.
Reconcile with deployment YAML
The user menu’s Current deployment configuration dialog combines the mounted server and catalog sections with the complete current governance revision and provides Copy and Download actions. Use it when dashboard changes should become the new deployment baseline. Existing environment and file references are preserved. Literal database credentials, SCIM tokens, gateway secrets, and repository credentials are replaced by usableos.environ/NAME references and listed above the export.
Managed-repository extensions include their connection, repository, requested ref, resolved commit, and digest in the export. On startup Blue reuses a matching artifact or mirrors the exact pinned commit again; a missing connection or digest mismatch is rejected.
The Clients page reports each package as applied or drifted. Package failures are isolated, so unrelated packages can converge, but a governed launch does not proceed while one of its required packages failed for that harness.
See Harness version compatibility for version routing and Governance configuration for field definitions and examples.