Skip to content
Asterios Raptis edited this page May 21, 2026 · 9 revisions

PluginForge Wiki

Application-agnostic plugin framework built on pluggy.

PluginForge wraps pluggy and adds the layers that pluggy does not provide: YAML configuration, plugin lifecycle, enable/disable, dependency resolution, FastAPI integration, Alembic migration support, and i18n.

Quick Links

Architecture Overview

PluginManager
├── Config (YAML)             - app.yaml, plugins/*.yaml, i18n/*.yaml
├── Discovery                 - Entry points + dependency resolution
├── Diagnostics (v0.6.0)      - DiscoveryResult / PluginState / PluginError
├── Lifecycle                 - init -> activate -> deactivate (+ hot-reload)
├── Live Config Refresh (v0.6.0) - refresh_config() + on_config_changed hook
├── Config Overlay (v0.10.0)    - merge_app_config(overlay) recursive-merge entry point
├── Entry Point Rediscovery (v0.6.0) - rediscover() picks up newly-installed plugins
├── Version Gating (v0.6.0)   - api_version / min_app_version with configurable severity
├── Application Identity (v0.7.0/v0.9.0) - target_application / app_id; mismatch and missing-target both hard-filter
├── Lifecycle Visibility (v0.9.0) - PluginState timestamps + source, inspect_plugin aggregator, event hooks
├── Hooks (pluggy)            - @hookspec / @hookimpl
├── Extensions                - get_extensions(type) for interface-based queries
├── Health Checks             - Plugin health monitoring
├── Security                  - Plugin name validation, path traversal prevention
├── FastAPI (optional)        - Route mounting with configurable prefix (idempotent since v0.8.0)
├── Test Helpers (v0.8.0)     - pluginforge.testing.IsolatedPluginManager + MockPlugin
├── Alembic (optional)        - Migration directory collection
└── i18n (optional)           - Multilingual strings from YAML

Requirements

  • Python 3.11+
  • pluggy >= 1.5.0
  • PyYAML >= 6.0
  • packaging >= 21.0 (added as a direct dependency in v0.6.0 for Version comparison)

Clone this wiki locally