Skip to main content
Deployment and alerting are plugin seams. Adding a plugin requires no registration code and no import changes: the loader discovers the directory on startup, and the UI renders a config form from the manifest.

Plugin layout

A plugin is a directory under plugins/{deploy,alert}/<name>/ with two files:

manifest.yaml

Metadata plus a config_schema. Each field becomes a form input in the UI:
secret fields are stored as given but masked (••••••••) when read back.

plugin.py

The class must be named Plugin and is constructed with the saved config dict (available as self.config). Subclass AlertPlugin or DeployPlugin from thumper.plugins.base.
Implement alert(event) - deliver the event, raise on failure. The router logs a failure and keeps going, so one bad plugin never drops the alert.
See Alert integrations for the full event dict. The base class also provides a test() that sends a clearly-labeled synthetic event through your real send path.
Raise PluginError for expected failures (missing config, unreachable target); the API surfaces the message.

Test it

Drop the directory in, restart the server, and the plugin appears under Integrations with a generated config form. Verify it loads: