Plugin Manifest
Plugin API v1: install
@gordo-labs/tape-plugins-sdk(opens in a new tab). It validates this JSON-serializable shape without loading plugin code or importing Desktop.
A manifest is the compatibility and least-privilege declaration checked before activation. The SDK requires these top-level fields:
{
"id": "community-metadata-notes",
"packageId": "@example/music-hub-community-metadata-notes",
"name": "Community Metadata Notes",
"version": "0.1.0",
"tier": "community",
"distribution": "sideloaded",
"description": "A user-reviewable metadata proposal.",
"statement": "Proposes metadata only after explicit user review.",
"source": { "visibility": "open-source", "license": "MIT" },
"defaultEnabled": false,
"permissions": ["library.metadata.read", "metadata.propose", "ui.contribute"],
"capabilities": [],
"entrypoints": { "worker": "dist/plugin.js" },
"isolation": { "storageScope": "private" },
"compatibility": { "musicHubDesktop": ">=0.2.0 <1.0.0", "pluginApi": "1" }
}id is a stable lowercase slug, version is semver, and
compatibility.musicHubDesktop is a bounded semver comparator range.
compatibility.pluginApi is one or more numeric API versions separated by
||. A community plugin cannot declare preinstalled distribution.
contributes is optional and declarative. It may contain workspaces, detail
tabs, context actions, commands, settings, enrichment providers and background
jobs. Community v1 hosts activate the matching declarations from the verified
bundle descriptor.json; the manifest remains the reviewable capability
declaration. A contribution does not grant a capability by itself: its matching
permission must be declared and granted.
The exact host acceptance policy is tier-specific. Core plugins are bundled with an app release; community bundles must pass the additional bundle verification rules. Treat the manifest as a public compatibility promise and make breaking changes in a new major version.