Skip to content

Package Registry

The package registry stores versioned WASM node packages, their metadata, permissions, compiled artifacts, access rules, and review history.

Use the desktop app’s Store → Packages view to search the registry and open a package detail page. A detail page can show:

  • package metadata and current status;
  • exported nodes;
  • requested permissions;
  • available versions;
  • access or purchase requirements;
  • installation state.

Installing a package downloads the selected version into the local registry cache. Installed packages appear under Library → Packages, where you can check for updates, update a package, or uninstall it.

Open Library → Packages → Publish. The current wizard has four steps:

  1. Upload WASM — select a file with a valid WebAssembly header.
  2. Manifest — enter the package ID, name, version, description, license, links, and keywords.
  3. Permissions — choose resource tiers and capabilities.
  4. Review — verify the binary and metadata, then submit.

The client uploads the binary and submits a versioned manifest to the registry. The backend hashes the binary, rejects duplicate package versions, extracts node definitions, and prepares a platform artifact when compilation is configured.

  • Use a stable reverse-domain ID such as com.example.image-tools.
  • Increment the semantic version for every published artifact.
  • A package ID and version pair is immutable.
  • Keep the manifest’s permissions aligned with the node definitions exported by the binary.

New packages are private by default. A successfully compiled private version can become active for its members without public publication.

Making a package public is a separate governance step:

  1. Complete the package metadata and README.
  2. Request publication.
  3. The package or version enters pending_review.
  4. An administrator with the global ManagePackages permission reviews it.
  5. The reviewer can approve, reject, request changes, comment, or flag the submission.

There is no guaranteed review time. Use the package detail and publication-review history as the source of truth.

StatusMeaning
pending_reviewA package or version is waiting for a publication decision
activeThe version is usable by users who have access
rejectedThe submitted version did not pass review
deprecatedStill represented in the registry but discouraged
disabledNot usable
yankedA specific released version is excluded from normal version selection

Status and visibility are different. An active package can still be private.

AreaEvidence to check
BinaryValid WASM, node extraction, and compilation result
PermissionsDeclared capabilities match the implementation and description
Node contractPins, schemas, defaults, and permissions are internally consistent
MetadataID, version, description, categories, links, and release notes are accurate
SafetyExternal hosts, storage access, OAuth scopes, and model access are justified
MaintenanceRepository, license, documentation, and ownership are clear

A verified flag is registry metadata set by administrators. Treat it as an additional trust signal, not a replacement for reviewing permissions and package provenance.

Publishing an update creates a new version record without immediately replacing the package’s current active artifact. On approval, the registry promotes the reviewed version and its extracted node definitions. Rejecting the pending version leaves an already-active package version available.

This separation prevents an unreviewed update from silently changing a public package.

The registry can display package-level resource and capability declarations, including:

AreaExamples
ResourcesMemory and timeout tier
NetworkHTTP, allowed hosts, WebSocket, TCP, UDP, DNS
StorageNode- or user-scoped storage
Runtime contextVariables, cache, streaming, A2UI
ServicesOAuth and model access

Request the smallest useful set. An empty allowed-host list with HTTP enabled means unrestricted hosts, not no hosts.

Before publishing:

  • run the template tests and load the package in a representative flow;
  • verify every exported node and pin;
  • remove unused permissions;
  • confirm that secrets are never embedded in the binary or manifest;
  • document external data transfer and expected costs;
  • publish a new version instead of replacing an existing artifact.