Docs / Reference / Plugin System

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.json isn't valid or wasn't served; the loader logs the failure.