Install and manage plugins
What it does
Section titled “What it does”A plugin arrives as a signed ZIP package, and every plugin is written, developed, and shipped exclusively by Speednet. You install it once for your user account, then enable it per project from the Desktop app or the CLI. Browse what’s available on the plugin catalog before you start.
What it consists of
Section titled “What it consists of”Installing extracts the signed package to ~/.speedwave/plugins/<slug>/. If the plugin is an MCP service, Speedwave also builds its container image from the package; a resource-only plugin has no image to build and skips that step entirely. Speedwave keeps a separate state folder at ~/.speedwave/plugin-state/<slug>/, where it leaves a marker if that image build fails.
How it works
Section titled “How it works”Run the install command with the path to the package:
speedwave plugin install ./my-plugin.zip- Speedwave verifies the package’s Ed25519 signature and validates its manifest. This is the same check described in Binary authenticity: only a package signed with the right key gets past this step.
- It extracts the plugin to
~/.speedwave/plugins/<slug>/. - If the plugin is an MCP service, Speedwave builds its container image. A resource-only plugin has no image to build and skips this step entirely.
- Speedwave registers the plugin.
Before any of that runs, the Desktop install overlay peeks at the ZIP to show the plugin’s name and whether it declares an MCP service (the signal for a container build), without verifying the signature or extracting to a permanent location. The real install still re-verifies the signature from scratch.
The command reports these phases as verifying, extracting, and building, and exits 0 either way:
- Installed: the plugin is on disk and, for an MCP plugin, its image built. Speedwave prints
Plugin '<name>' (<slug>) installed successfully. - Installed with a deferred build: the image build failed, for example from a network outage or a broken
Containerfile. Speedwave printsPlugin '<name>' (<slug>) installed; image build failed and will retry on next launchto stderr instead.
Enable the plugin for a project with:
speedwave plugin enable <service_id> --project my-projectEnabling requires a verified plugin, and it fails if the plugin’s files no longer match what was signed. Reinstalling a signed package clears that.
Set it up
Section titled “Set it up”- Open Plugins in the left nav rail.
- Click $ install plugin and pick the signed
.zippackage. - Once it appears in the list as signed (
✓ ed25519), flip its toggle on for the project.
- Install the package:
speedwave plugin install ./my-plugin.zip. - Enable it for a project:
speedwave plugin enable <service_id> --project my-project. - Check what’s installed at any time with
speedwave plugin list, which shows each entry’s name and version with a[verified]or[UNVERIFIED: <reason>]marker.listskips the startup signature audit, so it keeps working even while that audit is failing for another plugin. - Remove a plugin with
speedwave plugin remove my-plugin. This deletes~/.speedwave/plugins/<slug>/and its sibling state folder~/.speedwave/plugin-state/<slug>/. It does not delete the project credentials you entered for the plugin or its config entries: clean those up from the Desktop app, or delete the token folders yourself.
Changelog tab
Section titled “Changelog tab”If a verified plugin’s package ships a CHANGELOG.md, its plugin details in Desktop show a Changelog tab alongside the rest, so you can check what changed before you update. The changelog is covered by the same signature as the rest of the package, and the tab only appears once the plugin is verified: an unverified plugin shows no changelog, even if the package contains one.
Security boundaries
Section titled “Security boundaries”Speedwave audits every installed plugin’s signature before running most CLI commands, and a package that no longer matches what was signed makes the command exit 2 until you reinstall it or remove it.
plugin install, plugin list, and plugin remove are exempt from that startup audit, since they’re the commands you reach for to fix a plugin that’s failing it. remove works even on a plugin that fails signature verification, which makes it the way to recover from a tampered install.