plugins/. The folder name is the plugin identity and must be a valid Python identifier.
plugins/warehouse/
Declare the plugin
metadata.name must match the folder. The optional PEP 621 project name and version must match plugin.yaml. Its static dependencies join the root environment solve.
Export the application-owned singleton
plugin.py exports one public Plugin subclass and the singleton named plugin. Keep SDK clients on that singleton, and expose a bounded invocation view through PluginContext:
plugins/warehouse/plugin.py
start() or connect to services. Runtime startup activates plugins in dependency order and calls stop() in reverse order.
Add optional plugin content
Managed mode composes declared content into the owning agent. Advanced mode accepts declared lifecycle extensions but rejects populated managed-content directories because the native target owns its own composition.
Add plugin dependencies
Userequires.plugins when this plugin depends on another local Runtime Plugin:
plugins/warehouse/plugin.yaml
harnest env sync instead of creating isolated environments.
Add lifecycle behavior
Declare exactly which Harnest surfaces the plugin contributes.