Manage packages in the dashboard
You must have theadmin role to see Extensions in the dashboard sidebar.
Open Extensions
http://127.0.0.1:3000/extensions in the Compose deployment, or select Extensions in the administrator sidebar.Choose extensions
Review executable content
Choose an audience
Configure overrides
Publish extension changes
package_catalog.packages to the deployment’s blue.yaml. You can still select Add extension to add a custom digest-pinned package.
Deploy to specific members
Open an extension’s details and choose Specific members under Deployment audience. Search by email and select every person who should receive the complete package bundle. Audience choices are independent per extension, so one revision can deploy different packages to different groups of people. MCP servers remain organization-wide. Targeting uses the workspace user’s stable identity. Suspended and removed users cannot authenticate, but their existing assignments are retained and resume if access is restored. Inactive assignments remain visible to administrators and can be removed; inactive users cannot be newly selected. The Control API removes untargeted packages and their harness overrides before returning governance configuration. Changing an audience creates a new revision, so the normal client reconciliation deactivates a package when a user is removed from its audience. Mirrored private artifacts are also available only when the current package audience includes the requesting user. Public source URLs remain subject to their host’s access controls.Add a custom package
Use the Add extension form when an extension is not in the curated catalog:- Enter a stable package ID, display name, and version.
- Choose a managed GitHub/Bitbucket connection and enter
namespace/repositoryplus a ref, or inspect a public GitHub repository or HTTPS archive. Managed repositories may be private; credentials remain in the control plane. The form records the source and computed SHA-256, and mirrors managed repository artifacts. - For each supported harness, choose a component type and enter its path relative to the archive root. Add separate mappings for skills, subagents, hooks, plugin directories, plugin modules, and platform-specific helper binaries. Set Harness available from and Harness available before when the package supports only part of that harness’s release history. Use layout intervals only when paths or component types change inside that availability range.
- Review the capability table, then select Add to pending changes.
- Review the extension inventory. It shows the package, harness, enabled state, capability type, archive path, and expected managed local location.
- Select Publish extension changes to create a governance revision.
Add an extension from a public repository or archive
Public GitHub repositories do not require a managed repository connection. In the Public repository or archive tab, enter one of these source forms:github:owner/repository@reffor a public GitHub repository. The ref may be a branch, tag, or full commit SHA. Blue resolves it to an immutable commit and records the corresponding GitHub codeload URL.- An immutable public HTTPS
.tar.gzURL. Blue uses the URL as supplied and does not resolve a branch or tag encoded in it.
https://github.com/owner/repository; it returns HTML rather than a package archive. Prefer a release tag or full commit SHA when using the GitHub form. Although Blue resolves a branch to the current commit during inspection, an explicit immutable ref makes the administrator’s intent easier to audit.
Inspect the public source
github:BlocksOrg/agent-extensions@v1.2.0, then select Inspect source. Blue resolves GitHub refs, downloads at most 100 MiB, and computes the SHA-256 digest shown for review.Map the extracted paths
skills/secure-code-review/SKILL.md is mapped as agent-extensions-<commit>/skills/secure-code-review.Publish the extension
artifact_id; each client downloads the recorded public URL directly and accepts it only when its SHA-256 matches the governance revision.Scope a package to harness versions
Package availability and layout are separate contracts:- Harness available from maps to inclusive adapter
introduced. - Harness available before maps to exclusive adapter
before. - Layout introduced and Layout before define a nested variant selected only within the adapter availability range.
- Top-level component fields form the fallback layout when no variant matches.
Add an extension from a managed repository
A deployment operator must first configure a GitHub or Bitbucket connection and allow it for your organization. Administrators select configured connections in the dashboard; they never enter repository credentials there. See the managed repository connection guide for the operator setup.Open the managed repository form
Choose a connection
Enter the repository and ref
main, v1.2.0, or a 40-character commit SHA. The repository namespace must match one of the allowed namespaces shown below the field.Inspect the source
Describe the extension
Map the capabilities
SKILL.md, regardless of where it lives in the repository. A folder containing several skill folders remains supported for compatibility. Codex and Claude subagents and hooks still require a native plugin mapping; OpenCode hooks are plugin modules. For a helper, also enter its command name and platform key.Publish the change
Example: deploy one private skill to every developer
Suppose the platform team maintains asecure-code-review skill in the private GitHub repository BlocksOrg/agent-extensions. They want every developer governed by the dev organization policy to receive it in Codex and Claude.
Create the skill bundle in the repository
SKILL.md:shared-skills/secure-code-review/SKILL.md:Push an immutable version
Authorize the repository connection
BlocksOrg/agent-extensions, configures the connection, and allows the BlocksOrg namespace for the Blue organization named dev:Inspect the private repository
Choose the skill for Codex and Claude
secure-code-review, version 1.0.0, and display name Secure code review. Then add one mapping for each target harness:.codex-plugin or .claude-plugin manifests, and unrelated-project is not activated.Publish it to the organization
dev organization.Verify the rollout
blue apply to reconcile immediately. Otherwise, their background agent installs the digest-pinned artifact on its next policy poll. On Clients, verify that active clients have applied the new revision and that the package is not reported as failed or drifted.“Everyone” means every authenticated developer receiving this organization policy whose machine has an allowed, compatible harness. It does not grant repository access to developers and does not affect users in another Blue organization.Source metadata
Troubleshoot repository inspection
Client lifecycle
Login stores authentication without writing agent configuration. The background agent keeps the configured default agent current on every policy poll. Other agents receive their managed packages just in time when launched through Blue. Runblue apply to reconcile the default agent immediately.
Package failures are isolated: other packages can still converge. A governed harness launch is blocked if one of its required packages failed to activate.
Installation and teardown
Archives are downloaded with a 100 MiB limit, verified against their configured SHA-256 digest, and extracted only after rejecting absolute paths, path traversal, links, and special files. Installed versions live under the harness-managed XDG configuration directory rather than user-owned native extension directories. When a package is removed from the managed configuration, the CLI removes its harness activation. Unreferenced content is deleted only when it still matches the recorded tree hash. Locally modified content is quarantined and reported on the Clients page instead of being silently deleted.Package contents
Each package declares an immutablesource_ref, a SHA-256 digest, and adapters for one or more harnesses. A managed repository package also declares an organization-scoped artifact_id; source_ref remains human-readable provenance. Packages such as native CLI helpers may also declare digest-pinned platform_sources; when that map is present, the client requires an exact <os>-<arch> match. An adapter can expose:
