openclaw/docs/gateway
Peter Steinberger 49b5b862ac
feat: node-hosted plugins — dynamic tools, MCP servers, and skills (#90431)
* feat: node-hosted plugins — dynamic tools, MCP servers, and skills

Nodes become declarative plugin hosts:
- node.pluginTools.update: node hosts publish plugin-registered agent tool
  descriptors; gateway materializes them as agent tools executing via
  node.invoke under the node command allowlist, with tools.effective
  invalidation and node online/offline removal.
- Trusted paired-node descriptors: no gateway-side plugin registration
  required; gateway.nodes.pluginTools.enabled off-switch (default on);
  description/count caps; deterministic node-prefixed collision names.
- Declarative node-hosted MCP: nodeHost.mcp.servers (McpServerConfig shape)
  starts MCP clients on the node host, publishes tools as pluginId node-mcp,
  executes via built-in mcp.tools.call.v1 with per-layer timeouts, failure
  isolation, and orphan-safe shutdown. No re-pairing when servers change.
- Node-hosted skills: node.skills.update publishes ~/.openclaw/skills
  content (64 skills/64KB/512KB caps both sides); gateway merges them into
  the skills snapshot while connected and exec host=node is available, with
  node:// locators, node-prefixed collisions, disabled command dispatch,
  and gateway.nodes.skills.enabled + nodeHost.skills.enabled switches.
- Security: node-supplied pluginIds cannot satisfy pluginId-scoped tool
  allowlists unless gateway-registered; reserved node-mcp id requires the
  core MCP descriptor shape; protocol registry kept out of public
  plugin-sdk dts.
- E2E: pond harness proves publication, MCP round-trip, skills locator, and
  disconnect/reconnect for all three surfaces.

* style: format node-plugin-tools test

* fix(skills): keep status loader unfiltered when eligibility is passed

skills.status started passing eligibility for the node-skill merge, which
flipped loadWorkspaceSkillEntries into filtered mode and dropped disabled
skills from status reports (QA plugin-lifecycle-hot-reload timeout). Status
now merges node skills explicitly around an unfiltered load. Also: regen
docs_map for new node docs sections; add the intentional node-host MCP
onclose suppression to the lint-suppression allowlist.
2026-07-11 10:16:34 -07:00
..
security fix(browser): block interaction-triggered navigation SSRF (#104254) 2026-07-11 04:30:33 -07:00
authentication.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
background-process.md fix: suspension and restart wait for background execs (#104172) 2026-07-10 22:56:17 -07:00
bonjour.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
bridge-protocol.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
cli-backends.md fix(anthropic): delegate adaptive Claude CLI effort (#103815) 2026-07-10 17:57:50 +01:00
config-agents.md chore: migrate active GPT-5.5 references to GPT-5.6 (#104452) 2026-07-11 06:30:57 -07:00
config-channels.md chore: migrate active GPT-5.5 references to GPT-5.6 (#104452) 2026-07-11 06:30:57 -07:00
config-tools.md chore: migrate active GPT-5.5 references to GPT-5.6 (#104452) 2026-07-11 06:30:57 -07:00
configuration-examples.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
configuration-reference.md feat(cloud-workers): pinned SSH tunnel runtime and provider-owned key resolution (#104553) 2026-07-11 09:26:08 -07:00
configuration.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
diagnostics.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
discovery.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
doctor.md Doctor: audit lint default selection (#100361) 2026-07-08 14:34:57 -07:00
external-apps.md docs(plugins): document safe external cron projection (#104227) 2026-07-10 23:26:40 -07:00
gateway-lock.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
health.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
heartbeat.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
index.md feat(gateway): add persisted crash-loop breaker and fatal-config exit contract 2026-07-06 06:45:55 +00:00
local-model-services.md docs: cover embedding local service leases 2026-07-11 16:22:22 +08:00
local-models.md fix(agents): keep exec visible for lean local models (#101607) 2026-07-07 12:46:26 +01:00
logging.md chore: migrate active GPT-5.5 references to GPT-5.6 (#104452) 2026-07-11 06:30:57 -07:00
multiple-gateways.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
network-model.md
openai-http-api.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
openresponses-http-api.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
openshell.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
opentelemetry.md fix: show exported tool results in trace viewers (#101371) 2026-07-07 17:14:30 +10:00
operator-scopes.md docs(security): clarify computer act authorization 2026-07-10 13:06:53 -05:00
pairing.md feat(gateway): auto-approve node pairing via SSH device-key verification (#104180) 2026-07-10 22:23:10 -07:00
prometheus.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
protocol.md feat: node-hosted plugins — dynamic tools, MCP servers, and skills (#90431) 2026-07-11 10:16:34 -07:00
remote-gateway-readme.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
remote.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
restart-recovery.md docs(gateway): document restart and crash recovery behavior (#103985) 2026-07-11 00:44:16 +01:00
sandbox-vs-tool-policy-vs-elevated.md fix(computer): prevent stale, replayed, and post-cancel desktop actions (#103422) 2026-07-10 06:47:56 +01:00
sandboxing.md fix: land ten small reliability fixes (#100483) 2026-07-06 00:08:51 +01:00
secrets-plan-contract.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
secrets.md Add Vault SecretRef plugin (#89255) 2026-07-09 05:30:12 -05:00
tailscale.md fix(gateway): preserve local access for specific binds (#98479) 2026-07-10 19:18:47 -07:00
tools-invoke-http-api.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
troubleshooting.md chore(pairing): retire vestigial node token plumbing and flatten cleanup claims (#103140) 2026-07-09 23:48:01 +01:00
trusted-proxy-auth.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00