HIP-1329: Plugins — Dynamic Process and Host Control. Status Final. Hanzo architectural specification.
/v1/plugins is the canonical capability for plugins within the Hanzo Cloud platform. Package plugin is what each host is running, and how to change it: enable, disable, reload, or pin a service to a version. The implementation is hanzoai/cloud apps/plugins and plugin/plugins (HIP-0106, HIP-0139). All operations are native, composable, and authenticated against Hanzo IAM (HIP-0026).
Before this specification, plugins operations lacked a unified canonical surface or were scattered across disparate endpoints. Under HIP-0139 (§1), every cloud capability maps 1:1 with exactly one plugin binary, one address prefix, one client class, and one authoritative specification. This eliminates duplicate implementations and ensures strict physical isolation, predictable billing, and orthogonal composability across the estate.
The key words MUST, MUST NOT, and SHOULD are to be interpreted as in RFC 2119.
The plugins capability answers exclusively under its assigned route prefixes:
| Method | Path | Summary | |---|---|---| | GET | /v1/admin/plugins | Reports what each host is actually running: every loaded plugin with its version, pid, ... | | POST | /v1/admin/plugins/{name}/disable | Stops the plugin. | | POST | /v1/admin/plugins/{name}/enable | Brings a stopped or disabled plugin back on the artifact it already has: the zero Plugi... | | POST | /v1/admin/plugins/{name}/reload | Swaps a plugin for another build without dropping a request. |
Data is isolated physically per organization using cloud.OrgDB: {DataDir}/orgs/{org}/plugins.db. Isolation is strictly enforced at the filesystem and OS level; no cross-tenant queries are permitted. Where temporal or timeseries data is captured, postings are signed and immutably appended.
Every request reaching /v1/plugins MUST present a valid Hanzo IAM bearer token (HIP-0026, HIP-0111). Anonymous requests are rejected at the edge gateway before invoking the plugin. The executing principal is extracted from the token and bound to the request context.