Plugin and Marketplace Authoring
A plugin extends Wayland Core with new providers or tools without changing the engine. This page is an overview of the authoring surface. The authoritative reference is docs/plugin-authors.md and docs/marketplace-format.md in the engine repository.
Choose a runtime
Section titled “Choose a runtime”A plugin runs in one of a few ways, picked in the manifest:
- Subprocess: the engine launches your binary and talks to it. Point
[runtime.subprocess]at the binary path. - WASM: a sandboxed WebAssembly module with explicit host capability flags (each defaults to off).
- mcp-bridge: set the kind to
mcp-bridgeand use[runtime.subprocess]to point at an MCP server binary, so an existing MCP server becomes a plugin.
The manifest
Section titled “The manifest”Each plugin ships a manifest that declares its identity, runtime, the capabilities it provides (providers, tools), and its permission needs. Manifests are designed to stay byte-compatible across engine versions, so a manifest written for an older engine keeps loading.
Permissions
Section titled “Permissions”The model separates capability (what the plugin can offer) from ownership (what it is allowed to touch). A plugin requests the capabilities it needs; the engine grants only those. WASM plugins additionally gate host access behind per-capability flags that default to closed.
Sign and distribute
Section titled “Sign and distribute”Distribution is signed:
- Generate a keypair once, as the author.
- Place your public key (
signing.pub) in the trust anchor directory so the engine recognizes you. - Sign the plugin payload (the binary or
.wasm).
The engine verifies the signature before it loads a plugin.
Install and manage
Section titled “Install and manage”Install by plugin name from the local registry (the default) or a GitHub org, and manage the set from the CLI:
wayland-core plugin available # list installable pluginswayland-core plugin install <name> # default source: local registrywayland-core plugin install <name> --source github://<org> # GitHub Releases on that orgwayland-core plugin list # list installed pluginswayland-core plugin remove <name> # remove a plugininstall takes a positional plugin name plus an optional --source flag (default local). The GitHub form is github://<org> (org only, no repo path).
The marketplace index
Section titled “The marketplace index”The marketplace is an allowlist index (a versioned envelope of entries, each describing a plugin and where to fetch it). The engine caches it and uses it to resolve installable plugins. See docs/marketplace-format.md for the entry schema.