Plugin System¶
Overview¶
Third-party plugins are Python packages that follow the same module contract
as the built-in modules. MonsterOps discovers them via a monsterops.plugins entry-point group
(PEP 517). On startup, the loader imports each plugin's router, mounts it, fetches its
manifest.json, and sends it to the frontend — which dynamically loads the plugin's JS bundle and
registers its nav entries.
Installing a plugin¶
Install it like any Python package, then enable it by its entry-point name:
pip install your-monsterops-plugin
# .env
MONSTEROPS_PLUGINS=your_monsterops_plugin
Restart the service to load it.
No public plugins yet
The names above are illustrative — no third-party plugins are published yet. The extension point is in place for building your own.
Writing one¶
A plugin ships the same pieces a built-in module does: a router (FastAPI APIRouter), models.py,
schemas.py, and a static/manifest.json declaring its nav entries and JS bundle. Register it under
the monsterops.plugins entry-point group in your package metadata so the loader can find it.
Problems you may hit¶
- Plugin doesn't load — it isn't listed in
MONSTEROPS_PLUGINS, or its entry-point name doesn't match; check the app log on startup. - Nav entry missing — the
manifest.jsonisn't valid or wasn't served; the loader logs the failure.
Related¶
- Architecture — the module contract plugins follow
- Configuration —
MONSTEROPS_PLUGINS
MonsterOps