Skip to content

Plugin Distribution

Document ID: PLG-006
File Path: docs/08-plugin-sdk/distribution.md
Version: 1.0.0
Status: Draft
Owner: AI Platform Team
Last Updated: 2026-06-27


This document defines how plugins are packaged, signed, published, and pulled — the supply chain from a developer’s build to a verified install on the platform.

Distribution is where trust is established: every package must be verifiable, tamper-evident, and traceable to its publisher before any code runs.


A plugin is distributed as a single content-addressed archive:

github-1.4.0.wovyrpkg
├── plugin.yaml # manifest
├── artifacts/ # wasm / binaries / images (each digest-pinned)
├── schemas/ # input/output/config JSON schemas
├── LICENSE
├── README.md
├── SBOM.json # software bill of materials
└── MANIFEST.sig # detached signature over a digest manifest

The archive is identified by the digest of its digest manifest (a list of every file and its hash), so any byte change yields a new identity.


Build → compute digest manifest → sign manifest with publisher key → attach MANIFEST.sig
  • Publishers sign with a key bound to their marketplace identity.
  • Keyless/transparency-log signing (Sigstore-style) is supported so signatures are publicly verifiable without distributing keys.
  • The signature covers the whole package (manifest + all artifacts), so partial tampering is detectable.

  • Each package carries an SBOM listing dependencies and their versions.
  • Build provenance (who/what/when built it, from which source) is recorded and attestable, enabling supply-chain policies like “only allow plugins built by trusted CI.”
  • Provenance and SBOM are checked at install per tenant policy.

RegistryUse
Public MarketplaceCommunity + verified publishers (see Marketplace)
Private registryOrg-internal plugins, not publicly listed
MirrorCached copy for air-gapped/enterprise deployments
Local fileDirect install from a .wovyrpkg (dev/testing)

A deployment can configure multiple sources with precedence (e.g. private over public) and an allowlist of trusted publishers.


wovyr plugin publish
Validate manifest + schemas + SBOM
Verify signature + provenance
Run automated checks (compat, lint, optional security scan)
Store artifacts (content-addressed) + index version
Emit plugin.published

Publishing to stable may require passing automated checks and (for the public marketplace) review — see Marketplace §6.


Plugin Engine pull
Fetch package by name@version from configured registry
Verify digest manifest + signature + provenance + SBOM policy
Check publisher allowlist + platform compatibility
Stage artifacts (verified by digest) → ready to register

Verification is mandatory and fail-closed: an unverifiable or policy-violating package is never staged. This mirrors the Tool Runtime supply-chain checks.


  • A publisher or the platform can revoke a version (compromised key, critical CVE). Revocation is distributed via a signed revocation list.
  • The Plugin Engine checks the revocation list on install and periodically for installed plugins; a revoked version is force-disabled and operators alerted.
  • Revocation composes with Versioning §9.

  • An enterprise mirror is populated from the public marketplace (or curated) and serves installs without internet access.
  • Signatures and provenance are verified against mirrored trust roots.
  • Revocation lists are imported on a controlled cadence.

GuaranteeMechanism
AuthenticityPublisher signature
IntegrityContent-addressed digest manifest
TraceabilityBuild provenance attestation
TransparencyPublic signing/transparency log
Composition visibilitySBOM
RecallSigned revocation list

RequirementTarget
Signature verification< 100 ms
Provenance/SBOM policy check< 200 ms
Pull (cached)< 500 ms
Revocation propagationminutes



VersionDateDescription
1.0.02026-06-27Initial Plugin Distribution specification