Plugins

Plugin manifest

Declare a plugin's identity, runtime, requirements, capabilities and views.

Put manifest.json in the plugin directory. The host reads it before starting the executable. The repository's strict validator rejects unknown fields and checks the manifest against the host's accepted shape.

Manifest fields

FieldPurpose
schemaMust be 1 for the current format.
idUnique reverse-domain identifier, such as org.example.clock.
name, description, versionUser-facing identity and release version.
protocolProtocol major and minor required by the plugin. Current plugins use major 1.
execRelative path to the executable inside the installed plugin directory.
capabilitiesHost APIs the plugin requests.
requires.commandsExternal commands the plugin expects on the user's system.
widgets, panels, settingsViews and user-configurable values the host can expose.

The validator requires a non-empty name, description, version and executable path. It rejects duplicate or malformed IDs, unsupported protocol majors, unknown capabilities and absolute or parent-traversing executable paths. The exec path must stay inside the plugin directory.

The Cat manifest shows a complete example. It declares a bar widget, a 340×440 panel, settings, and the panels and settings capabilities. Use its structure as a reference; choose your own ID, version, dimensions and settings.

Catalog metadata

manifest.json describes what the runtime needs. catalog-meta.json supplies listing metadata such as category and author. The release tool combines these inputs into catalog.json and checks catalog identity, protocol, capabilities and required commands against the manifest in the tagged release.

The catalog's license field is optional. Do not add a manifest field for catalog-only data. See release packaging for the catalog metadata fields and checks.

Run the repository validator after changing a manifest:

go run ./tools/validate-manifests

This validates repository manifests and required media. It does not replace the catalog check against a published tag.