Skip to content

Plugin host protocol

Python plugins depend on steerable-plugin-sdk, not steerable-agent-runtime. A plugin host owns discovery and handler execution; the sidecar projects its tool descriptors into the loop through RPC.

The protocol is newline-delimited JSON-RPC 2.0 over a private process channel. Version 0.1.0 defines these sidecar-to-host methods:

Method Params Result
plugin.host.ping {protocolVersion} {status, protocolVersion, toolsCount}
plugin.tools.describe {} {tools: ToolDescriptor[]}
plugin.tool.invoke {name, arguments, context} ToolResult
plugin.list {} {plugins: PluginRecord[]}
plugin.enable {name} {plugin: PluginRecord}
plugin.disable {name} {plugin: PluginRecord}
plugin.reload {name} {plugin: PluginRecord}

ToolDescriptor contains name, description, schema, mode, exposure, requireConsent, concurrencySafe, and nullable plugin. ToolResult matches steerable-agent-protocol.

Protocol mismatch, malformed descriptors, unknown lifecycle targets, and handler failures are errors. A sidecar must not advertise a plugin tool until the host has completed plugin.host.ping and plugin.tools.describe.