Skip to main content

Pack catalog

The Pack catalog screen lets you browse the signed packs of the marketplace, read their version and SBOM, promote a version to production, suspend or resume a pack, run a preflight check before an install and manage the trusted publishers whose keys verify the signatures. Portal path: /marketplace/catalog. It is used by the tenant administrators and security officers (tenant_admin, security_officer); every member of the tenant reads the catalog.

What the screen shows​

Three tabs; Preflight is shown only to tenant_admin and security_officer (ROLES.marketplaceAdmins).

Packages tab, with the filter Domain and Filter, then Refresh:

ColumnContent
NameName of the pack.
DomainBusiness domain of the pack.
DescriptionDescription.
OwnerOwner of the pack.
Latest versionLast published version.
UpdatedDate of the last change.

A click on a line opens a side panel with the pack read from the API. Empty state: No package, "Publish a signed pack with the SDK to see it here."

Preflight tab: form "Checks compatibility, signature, permissions and secret references before an install." with Package, Version, Environment, Approved permissions, Configuration, Secret references and a Result area.

Trusted publishers tab, with Refresh and Add publisher:

ColumnContent
NameName of the publisher.
AlgorithmSignature algorithm of its key.
Statusactive or revoked.
ScopeScope of the key.
CreatedDate of registration.

A click on a line shows it in a side panel. Empty state: No publisher.

Actions​

Button or actionWhat it doesAPI callRoles
Tab Packages, Domain then FilterReads the packs, optionally of one domain.GET /v1/marketplace/packagesMember of the tenant
Click on a packOpens the detail panel.GET /v1/marketplace/packages/{name}Member of the tenant
Promote to productionDialog Approval. Without approval identifier, the production gates are checked and a four eyes approval is opened (the answer gives its identifier); with the identifier of an approved request, the latest version is promoted.POST /v1/marketplace/packages/{name}/versions/{version}/productiontenant_admin, security_officer
SBOMShows the SBOM of the latest version.GET /v1/marketplace/packages/{name}/versions/{version}/sbomMember of the tenant
Version detailsShows the latest version.GET /v1/marketplace/packages/{name}/versions/{version}Member of the tenant
Suspend the packDialog Reason (required); immediate kill switch of the pack, which suspends its installations. Shown unless the pack is suspended.POST /v1/marketplace/packages/{name}/statustenant_admin, security_officer
Resume the packDialog Approval, Reason; lifting a suspension goes through a four eyes approval. Shown for a suspended pack.POST /v1/marketplace/packages/{name}/statustenant_admin, security_officer
Tab Preflight, form then RunChecks compatibility, signature, permissions and secret references; shows the report.POST /v1/marketplace/preflighttenant_admin, security_officer
Tab Trusted publishers, RefreshReads the publishers.GET /v1/marketplace/publishersMember of the tenant
Add publisher then CreateForm Name (required), Public key (required, PEM -----BEGIN PUBLIC KEY-----).POST /v1/marketplace/publisherstenant_admin, security_officer
Revoke (publisher)Destructive confirmation; the packs signed with this key are no longer trusted. Shown unless revoked.POST /v1/marketplace/publishers/{name}/revoke (impact: GET /v1/lineage/graph)tenant_admin, security_officer

Roles​

From services/control-plane/src/eai/domains/marketplace/routes.py: reading needs a principal inside a tenant; promotion, pack status and publishers require TRUST_ROLES (tenant_admin, security_officer); the preflight requires tenant_admin or security_officer. platform_admin passes every check. The portal hides the write actions and the Preflight tab for the other roles.

Typical tasks​

Trust a new publisher​

  1. Add its key. Tab Trusted publishers > Add publisher: Name of the publisher, Public key in PEM, then Create. The key verifies the signature of every pack of this publisher. Expected result: a line with the status active. If it fails: publisher_invalid_key (HTTP 422) when the key cannot be read.

Check a pack before installing it​

  1. Read the version. Tab Packages, row menu > Version details, then SBOM. Expected result: two side panels with the manifest and the components. If it fails: marketplace_version_not_found (HTTP 404).
  2. Run the preflight. Tab Preflight: Package, Version, Environment prod, Approved permissions (for example rag:query, tools:invoke), then Run. Expected result: the report with every check. If it fails: preflight_failed (HTTP 422) lists the failed checks; fix them before the install.

Promote a version to production​

  1. Request the promotion. Row menu > Promote to production, leave Approval empty, submit. Expected result: the answer with pending_approval and an approval identifier. If it fails: the answer lists the production gate that failed.
  2. Have it approved, then apply. Other people decide the request in Approvals inbox; then run Promote to production again with the Approval identifier. Expected result: the promotion is applied. If it fails: the approval is not approved yet.

Troubleshooting​

SymptomCauseFix
No Preflight tab, no write actionYour role is neither tenant_admin nor security_officer.Ask a tenant administrator.
preflight_failed (HTTP 422)One check failed (compatibility, signature, permissions, secret references).Read the failed checks in the details and fix them.
marketplace_package_not_found / marketplace_version_not_found (HTTP 404)Unknown pack or version.Check the name and Latest version.
publisher_invalid_key (HTTP 422)The public key is not a valid PEM key.Paste the whole PEM block.
publisher_not_found (HTTP 404)Unknown publisher.Click Refresh.
package_suspended (HTTP 409)The pack is suspended by its kill switch.Resume the pack after approval.
forbidden (HTTP 403)The action needs tenant_admin or security_officer.Ask one of these roles.