Plugin registry
PluginRegistry — the central object that holds loaded plugins, manages their lifecycle, and provides access by kind+name.
Plugin manifest
The dagstack.toml schema — required and optional fields, kinds, runtimes, and resource requirements.
Plugin discovery
The discover(path) function — recursive directory walk, dagstack.toml discovery rules, exclusions, and limitations.
Plugin kinds
What a plugin kind is, the built-in kinds, and how to declare your own kind through a hookspec.
Runtimes
The three runtime adapters — in_process, mcp_stdio, mcp_http. How to choose, how to declare, and what they imply for serialisation and lifecycle.
Dispatch
Five dispatch classes — how the system decides which plugin (or plugins) handles a call. An overview for plugin-system users.
Resources (Resources DI)
How the plugin-system injects HTTP clients, database connections, clocks, and randomness sources through PluginContext.resources — protocols, standard implementations, and test substitutions.
Runtime invariants
Eight behavioural invariants every plugin must observe — the rules that keep a plugin operable across orchestration environments without conditional code.