Skip to content

Plugin System Overview

Document ID: PLG-001
File Path: docs/08-plugin-sdk/overview.md
Version: 1.0.0
Status: Draft
Owner: AI Platform Team
Last Updated: 2026-06-27


This document specifies the plugin system of the Wovyr AI Platform — the Plugin SDK developers use to build extensions and the Plugin Engine service that installs, governs, and loads them.

The plugin system is what makes the platform extensible without forking or recompiling it: tools, providers, memory backends, policies, and workflow activities all arrive as plugins.


The plugin system is responsible for:

  • An SDK + manifest format for authoring capabilities
  • Packaging, signing, and publishing plugins
  • Installing plugins: signature verification, dependency resolution, compatibility checks
  • Registering capabilities with their host subsystems
  • Lifecycle: enable, disable, upgrade, rollback, uninstall
  • Permission grants and consent
  • Isolated loading/execution of plugin code
  • Marketplace distribution and discovery

It is not responsible for:


Marketplace / Registry
│ publish / pull
Plugin Engine ──► verify + resolve + register
├──► Tool Runtime (tool capabilities)
├──► LLM Gateway (provider capabilities)
├──► Memory Engine (memory_backend capabilities)
├──► Policy Engine (policy capabilities)
└──► Workflow Engine (workflow_activity capabilities)
└── plugin.* events ──► Event Bus

The Plugin Engine is the control plane for extensions: it owns the catalog of installed plugins and routes each capability to the subsystem that hosts it. See C4 Container §4.7.


my-plugin/
├── plugin.yaml # manifest: identity, capabilities, permissions, compat
├── capabilities/ # one or more capability implementations
│ ├── tools/
│ ├── providers/
│ └── activities/
├── artifacts/ # compiled wasm / binaries / images
├── LICENSE
├── README.md
└── SIGNATURE # detached signature + provenance

The manifest is the contract; the Plugin API defines it in full. Tool capabilities follow the Tool Framework package structure.


The Plugin SDK provides traits, a manifest schema, codegen, and a CLI (wovyr plugin new|build|sign|publish) so a developer can scaffold, implement, and package a capability.

The Plugin Engine verifies the package signature, resolves dependencies, checks platform-API compatibility, and stages the plugin (see Versioning).

Each capability is registered with its host (a tool into the Tool Registry, a provider into the Provider SDK registry, etc.).

Plugins request permissions; operators/tenants grant them. The Policy Engine enforces grants at runtime. See Permissions.

Untrusted plugin code runs sandboxed — tool plugins via the Tool Runtime, others via the loading model in Sandbox.


1. Pull package (Marketplace / registry / file)
2. Verify signature + provenance
3. Parse manifest; validate schema
4. Check platform-API compatibility (semver range)
5. Resolve plugin dependencies
6. Present requested permissions for grant/consent
7. Stage artifacts (content-addressed)
8. Register capabilities (disabled)
9. Enable → capabilities become live
10. Emit plugin.installed / plugin.enabled

Failure at any step aborts cleanly with no partially-registered capabilities.


Trust classSourceDefault isolation
First-partyPlatform teamIn-process / native
VerifiedReviewed + signed third-partySandboxed (WASM/container)
CommunityMarketplace, unreviewedSandboxed (gVisor/microVM), restricted permissions

Trust class composes with tenant policy floors, exactly as in Tool Runtime §3 Trust Classification.


ModeDescription
EmbeddedPlugin Engine in the all-in-one dev binary; local plugin dir
StandaloneDedicated Plugin Engine service (enterprise default)
Air-gappedPrivate registry mirror; no public marketplace access

service-plugin-engine/
├── api/ # install / enable / disable / upgrade / list
├── registry/ # installed-plugin catalog + capability index
├── verifier/ # signature + provenance verification
├── resolver/ # dependency + compatibility resolution
├── loader/ # capability loading + routing to hosts
├── permissions/ # grant + consent management
├── marketplace/ # registry/marketplace client
├── telemetry/ # plugin.* events, metrics, audit
└── main.rs
sdk-plugin/ # the authoring SDK (separate crate)
├── manifest/
├── traits/
├── codegen/
└── cli/

This corresponds to the engine-plugin crate in the DDD module map.


RequirementTarget
Install (verify + resolve + register)< 3 s typical
Enable/disable< 200 ms (no restart)
Capability load (cold)host-dependent (see Tool Runtime)
Compatibility check< 50 ms
Availability (Plugin Engine)99.99%

  • All packages are signature- and provenance-verified before install.
  • Plugins run with least privilege; unrequested access is impossible.
  • Untrusted plugins are sandboxed and may be quarantined instantly.
  • Install/enable/disable are audited and emit plugin.* events.

See Permissions, Sandbox, and the planned 13-security/ section.


The Plugin Engine emits plugin.installed, plugin.enabled, plugin.disabled, plugin.upgraded, and plugin.published events to the Event Bus, plus metrics (install success rate, active plugins, capability load latency) and audit records.




  • Cross-language plugins via the WASM component model
  • Capability hot-reload with zero in-flight disruption
  • Plugin dependency lockfiles and reproducible installs
  • AI-assisted plugin scaffolding and review
  • Revenue-share monetization in the marketplace

VersionDateDescription
1.0.02026-06-27Initial Plugin System Overview