Plugin author docs¶
Everything you need to write, test and publish a Mumcord plugin. Licence of these docs and of
../template/: Apache-2.0.
| Page | What it covers |
|---|---|
| Getting started | Create, build and load your first plugin in five minutes |
| Manifest and package | manifest.json, translations, assets and the .mcplugin package |
| API reference | The mumcord-plugin-sdk modules, events and limits |
| Permissions | Every permission, its risk level and what it unlocks |
| Building | The mumcord-plugin CLI, targets and reproducible builds |
| Testing | Unit tests, loading in Developer mode, a local test registry |
| Publishing | Signing, the pull request to the official registry, updates |
| Third-party repositories | Running your own plugin repository |
The exact registry file formats are specified in
plugin-registry-format.md
in the Mumcord repository.
The model in one minute¶
- A plugin is a small WebAssembly component written in Rust. It runs in a strict sandbox with a memory limit and a time limit per call, and it can only use the host interfaces its granted permissions allow.
- A plugin never draws pixels. It describes its interface as a tree of built-in building blocks (text, buttons, meters, lists, inputs) and Mumcord renders it with the user's theme.
- Plugins talk to the same plugin of other Mumcord users in the channel through standard Mumble plugin data messages. No server changes are needed, and people on other Mumble clients are not affected.
- Users see the permission list before installing. Updates that ask for more permissions wait for approval.
Licences¶
- The template, these docs and the
mumcord-plugin-sdkcrate are Apache-2.0: you may use them in a plugin under any OSI-approved licence. - The source of the
mumcord-plugincommand line tool is Apache-2.0, but the built binary links code from Mumcord's AGPL-3.0 crates (the package and manifest checks are shared with the client). Treat the binary as AGPL-3.0 software. This does not affect the plugins you build with it. - Official plugins in this repository are AGPL-3.0. Your own plugin may use any OSI-approved
licence; the manifest
licensefield must be an SPDX identifier.