Skip to main content
Managed repository connections let administrators import extension bundles from private GitHub and Bitbucket repositories. The Control API authenticates to the repository, resolves the requested branch or tag to an immutable commit, and mirrors the archive into organization-scoped object storage. Repository credentials never appear in governance configuration or reach developer machines. Clients receive an artifact_id and SHA-256 digest, then use their existing harness session to request a short-lived object-storage download.
Repository archives can contain executable hooks, plugins, and helper binaries. Grant repository access only to reviewed namespaces and inspect the capability mappings before publishing a package.

Prerequisites

Before adding a connection, prepare:
  • A dedicated, non-expiring S3-compatible bucket for package artifacts.
  • The organization slug used by Blue, such as the control_api.bootstrap.organization_slug value for the bootstrap organization.
  • A read-only GitHub App or Bitbucket access token.
  • A mounted PEM CA bundle when an enterprise provider uses a private certificate authority.
The Compose stack creates the package-artifacts MinIO bucket automatically. Production deployments must create the bucket separately and set HARNESS_PACKAGE_BUCKET.

Configure artifact storage

Package artifacts must not use the raw-session bucket because session retention policies may delete objects still referenced by historical governance revisions.
blue.yaml
Compose fixes the package-artifact bucket name in deploy/docker-compose.yml; setting HARNESS_PACKAGE_BUCKET in deploy/.env does not override it. Change the Compose service environment explicitly when you need another bucket. The Control API uses the same S3 endpoint, region, public endpoint, path-style setting, and ambient AWS credentials configured under control_api.blob_storage.

Configure a provider

Add connections under control_api.package_sources.connections. Connection IDs must contain only letters, numbers, hyphens, and underscores. Each organization entry maps a Blue organization slug to the repository namespaces it may import.
Create a GitHub App, grant it read-only Contents permission, and install it on the target organization or account. Select only the repositories Blue should import.
blue.yaml
app_id is the GitHub App ID, not the OAuth client ID. Blue creates a repository-scoped installation token when an administrator inspects a source.

Supply deployment secrets

Environment references use os.environ/NAME or env://NAME. File references use file:///absolute/path. Keep private keys and tokens outside the repository. For Compose, add the environment variables and read-only secret mounts to the Control API service:
docker-compose.override.yml
Connection secrets and referenced files are loaded when the Control API starts. Restart the service after rotating a key, token, URL reference, or CA bundle. Already mirrored artifacts remain installable after provider credentials change.

Control organization access

The organizations map is an authorization boundary, not a display filter. The Control API rejects a namespace before contacting the provider when it is not allowed for the authenticated administrator’s organization.
Namespace comparisons are case-insensitive. A "*" entry permits every namespace accessible to the connection credential and should be reserved for single-organization deployments with an equivalent trust boundary.

Start and verify the connection

1

Restart the Control API

Rebuild or restart the service after changing the server configuration or secrets.
2

Check startup health

Confirm the service starts without secret, URL, CA, database migration, or object-storage errors.
3

Inspect a repository

Open Extensions, select Add extension, then choose Managed repository. Select the connection, enter namespace/repository and a branch, tag, or commit, and select Inspect source.
4

Confirm immutable metadata

Verify that the form shows a resolved commit, archive size, and SHA-256 digest. Add the capability mappings and publish the pending governance revision.
5

Verify client installation

Run blue apply or launch an allowed harness. The client requests a fresh download with its harness session, verifies the digest, and installs the compatible package contents.

Configuration fields

Troubleshooting

See Managed packages for capability mapping and client installation behavior, and Production deployment for storage and secret-management requirements.