Plugin Management
What this guide covers
Operator workflow for installing, trusting, inspecting, auditing,
and troubleshooting Stigmem plugins. Plugins are opt-in Python
packages loaded at node startup through the stigmem.plugins entry
point group. The default install runs without plugins.
Production deployments should keep plugin signing required, pin plugin package versions, and review every declared capability before rollout.
For author-facing package structure and examples, see the Plugin Author Guide. For security review inputs, see the Plugin Capability Reference.
Production workflowโ
- Review the package. Confirm the plugin name, version, declared hooks, declared capabilities, dependencies, and signing identity.
- Install the package into the node environment. Use the same Python environment that runs
stigmemso entry point discovery can find the plugin. - Configure signing trust. Add accepted signing identities to
STIGMEM_PLUGIN_TRUSTED_PUBLISHERS. Use the override list only for explicit, documented exceptions. - Restart the node. Plugin discovery and registration are startup-only. There is no hot reload or runtime unload path in v0.9.0aN.
- Inspect registration and health. Use
stigmem plugins listandstigmem plugins describe. - Review audit events. Confirm registration, trust decision, and any handler denial or error events.
Install a plugin packageโ
For a source checkout:
python -m pip install /path/to/example-stigmem-plugin
For a pinned package:
python -m pip install 'example-stigmem-plugin==1.0.0'
For Docker deployments, build a derived image or otherwise install the plugin package into the container image used by the node. Avoid installing plugins manually inside a running container; that is not repeatable and will be lost on redeploy.
The package must expose an entry point in the stigmem.plugins group. Stigmem discovers those entry points, calls the manifest factory, resolves plugin dependencies, verifies signing/trust policy, and registers handlers during startup.
Configure signing and trustโ
Production defaults are fail closed:
STIGMEM_PLUGIN_SIGNING_REQUIREDtrueSTIGMEM_PLUGIN_TRUSTED_PUBLISHERSSTIGMEM_PLUGIN_TRUST_OVERRIDE_PUBLISHERSExample:
STIGMEM_PLUGIN_SIGNING_REQUIRED=true
STIGMEM_PLUGIN_TRUSTED_PUBLISHERS=builder@example.com,release-bot@example.com
STIGMEM_PLUGIN_TRUST_OVERRIDE_PUBLISHERS=
Use STIGMEM_PLUGIN_TRUST_OVERRIDE_PUBLISHERS only when you have a documented operational reason to accept a specific signing identity outside the normal allowlist. Override registration remains audit-visible with trust_decision=operator_override.
Development-only unsigned loadingโ
STIGMEM_PLUGIN_SIGNING_REQUIRED=false
Do not use this in production.
When disabled, unsigned plugin loading is warning-visible in logs
and audit-visible with trust_decision=development_unsigned_override.
Inspect installed pluginsโ
stigmem plugins list
Example output:
example-stigmem-plugin 1.0.0 hooks=2 health=healthy signed_by=builder@example.com
For machine-readable output:
stigmem plugins list --json
Search the published plugin catalog:
stigmem plugins search tenant
Print install and enable commands for a known plugin:
stigmem plugins enable multi-tenant
Diagnose installed/enabled mismatches:
stigmem plugins doctor
stigmem doctor
Describe one plugin:
stigmem plugins describe example-stigmem-plugin
The describe command reports plugin name and version, signing identity, declared capabilities, registered hooks, dependencies, discovery source, and latest health status, message, and error summary when available.
Health checksโ
health_check is a lifecycle callable on PluginManifest, not a hook. The operator CLI polls plugin health when listing or describing plugins. Health is informational in v0.9.0aN: unhealthy plugins remain registered and their handlers stay active until a future policy layer changes that behavior.
healthydegradedunhealthyunknownAudit events to watchโ
Plugin registration and handler outcomes are written as audit events. Query audit data through your normal audit pipeline. For the admin audit API, see Audit & Quotas.
plugin.registeredplugin.registration_failedplugin.handler_deniedDeny. Metadata includes hook, handler name, plugin name, and reason.plugin.handler_errorFor production alerts, watch for:
Any registration_failed
During deploy.
Any development_unsigned_override
Trust decision.
operator_override w/o change record
Without an approved change record.
Repeated handler_error
Unexpected capability additions
After a plugin upgrade.
Troubleshootingโ
No plugins registeredstigmem; verify the package declares [project.entry-points."stigmem.plugins"]; restart the node.unsigned pluginsigned by untrusted identityCapabilityErrordegraded / unhealthystigmem plugins describe <name> --json; review health_message and health_error; check plugin logs and audit events.Upgrade and rollback checklistโ
Before upgrading a plugin:
- Read the release notes and compare the new manifest to the old one.
- Review added hooks and capabilities.
- Confirm the signing identity is expected.
- Deploy first in a non-production environment with production-like signing settings.
- Capture
stigmem plugins describe <name> --jsonbefore and after the upgrade.
To roll back, reinstall the previous pinned plugin version and restart the node.
Because registration is startup-only, a restart is required for the old handlers to replace the new ones.