Every plugin ships a spanda.plugin.toml manifest at its root. This is separate from
spanda.toml (Spanda language packages).
[plugin]
name = "spanda-plugin-example"
version = "0.1.0"
publisher = "example"
description = "Example plugin"
license = "Apache-2.0"
type = "readiness"
[compatibility]
spanda_version = ">=0.4.0"
api_version = "v1"
[capabilities]
requires = [
"entity.read",
"readiness.read",
"device.read"
]
[security]
signed = true
sandbox = true
network = false
filesystem = "read-only"| Field | Required | Description |
|---|---|---|
name |
yes | Unique plugin identifier |
version |
yes | Semver plugin version |
publisher |
yes | Publisher slug |
description |
no | Human-readable summary |
license |
no | SPDX license identifier |
type |
yes | Plugin type (see plugins.md) |
| Field | Default | Description |
|---|---|---|
spanda_version |
>=0.4.0 |
Semver requirement for host Spanda |
api_version |
v1 |
Plugin host API version |
Install is rejected when the running Spanda version or API version is incompatible.
Plugins must declare every host capability they use. The runtime denies undeclared access.
Supported capabilities include entity.read, device.read, readiness.read, health.read,
report.generate, network.outbound, filesystem.read, and write variants.
| Field | Default | Description |
|---|---|---|
signed |
false |
Require Ed25519 artifact signature |
sandbox |
true |
Run inside sandbox (WASM default) |
network |
false |
Allow outbound network |
filesystem |
read-only |
Filesystem policy |
[hooks].enabled— lifecycle and event hooks[control_center]— panels, entity tabs, routes[cli].commands— namespaced CLI commands[[recovery.extensions]]— Recovery Orchestrator playbooks, strategies, validators (see recovery-playbooks.md)
[[recovery.extensions]]
kind = "playbook" # playbook | strategy | validator
name = "custom_sensor_reset"
description = "Reset custom sensor stack"
trigger = "sensor_failure"
strategy = "reinitialize"Example: examples/plugins/recovery-plugin/.
| File | Format |
|---|---|
plugin.wasm |
P0 sandboxed WASM (default) |
libplugin.so / .dylib / .dll |
P1 native (dev only) |
index.js |
P2 Control Center UI |