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
..
2026-07-10 18:06:06 +01:00
2026-07-11 02:31:17 -07:00
2026-07-11 06:30:57 -07:00
2026-07-11 13:13:50 -04:00
2026-07-11 10:16:34 -07:00
2026-07-11 06:15:41 -07:00
2026-06-22 17:17:48 +00:00
2026-07-11 20:32:59 +05:30
2026-07-11 06:15:41 -07:00
2026-07-11 06:15:41 -07:00
2026-07-10 10:42:36 +01:00
2026-07-10 17:47:32 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 02:31:17 -07:00
2026-07-11 06:30:57 -07:00
2026-06-17 22:04:48 +08:00
2026-06-21 07:40:06 +02:00
2026-07-10 13:34:03 +01:00
2026-07-11 02:31:17 -07:00
2026-07-07 16:13:55 -07:00
2026-07-07 00:39:59 +01:00
2026-06-16 19:13:44 +02:00
2026-06-16 19:13:44 +02:00
2026-07-09 01:32:13 -05:00
2026-06-20 11:08:34 +08:00
2026-06-20 11:08:34 +08:00
2026-07-11 02:31:17 -07:00
2026-07-11 02:31:17 -07:00
2026-07-10 10:42:36 +01:00
2026-07-11 06:15:41 -07:00
2026-07-03 20:20:28 -07:00
2026-06-21 07:40:06 +02:00
2026-07-05 08:00:23 -04:00
2026-06-23 17:13:39 +02:00
2026-06-23 17:08:08 +02:00
2026-07-11 02:31:17 -07:00
2026-07-11 06:30:57 -07:00
2026-07-11 06:15:41 -07:00
2026-06-23 14:01:29 +02:00
2026-07-11 02:31:17 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 19:13:52 +08:00
2026-06-20 21:36:42 +02:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 07:28:20 -07:00
2026-07-11 07:28:20 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 07:28:20 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 15:17:41 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 02:31:17 -07:00
2026-07-11 06:15:41 -07:00
2026-07-09 23:28:11 +01:00
2026-07-07 15:48:08 +01:00
2026-07-11 06:15:41 -07:00
2026-07-07 15:17:41 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 15:17:41 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-03 20:20:28 -07:00
2026-07-10 13:00:50 +01:00
2026-07-11 06:15:41 -07:00
2026-06-21 19:59:55 +02:00
2026-07-11 06:15:41 -07:00
2026-06-21 21:39:41 +02:00
2026-07-05 01:56:40 -04:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-06-23 17:30:37 +02:00
2026-07-11 06:15:41 -07:00
2026-07-09 16:36:31 +01:00
2026-07-07 11:55:57 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 01:09:51 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 03:27:14 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-04 23:19:38 +01:00
2026-07-07 11:55:57 -07:00
2026-07-10 02:13:41 -07:00
2026-06-20 22:16:26 +02:00
2026-07-11 06:15:41 -07:00
2026-07-04 14:56:50 -04:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-06-23 17:37:53 +02:00
2026-07-11 06:15:41 -07:00
2026-06-21 22:19:54 +02:00
2026-07-10 20:24:53 +01:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-06-26 18:28:35 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-10 00:21:26 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 15:17:41 -07:00
2026-07-11 06:15:41 -07:00
2026-06-19 10:40:18 -07:00
2026-07-11 06:15:41 -07:00
2026-07-10 11:54:08 +01:00
2026-07-11 06:15:41 -07:00
2026-06-20 03:32:08 +02:00
2026-07-11 07:28:20 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-07 11:55:57 -07:00
2026-06-23 17:27:32 +08:00
2026-07-11 06:15:41 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 03:04:11 -07:00
2026-07-11 03:04:11 -07:00
2026-06-20 20:12:30 +02:00
2026-07-06 04:20:58 -07:00
2026-06-21 18:04:47 +02:00
2026-07-09 22:33:33 +01:00
2026-07-11 06:15:41 -07:00
2026-06-22 18:44:21 +08:00
2026-06-28 17:22:26 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-06-20 21:41:34 +02:00
2026-07-11 00:44:16 +01:00
2026-07-04 23:19:38 +01:00
2026-07-07 16:13:55 -07:00
2026-07-11 06:30:57 -07:00
2026-07-11 06:30:57 -07:00
2026-07-05 02:01:51 -07:00
2026-07-11 06:15:41 -07:00
2026-07-06 14:52:53 -04:00
2026-07-11 12:48:27 +08:00
2026-06-23 09:51:38 +02:00
2026-07-06 17:09:40 -07:00
2026-06-20 03:15:30 +02:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-06-23 13:43:44 +02:00
2026-07-11 06:15:41 -07:00
2026-06-20 02:02:37 +02:00
2026-06-21 10:21:58 +08:00
2026-07-11 00:51:57 -07:00
2026-06-23 16:26:42 +02:00
2026-06-16 07:39:44 +02:00
2026-07-06 10:26:51 -07:00
2026-07-01 01:51:50 -07:00
2026-07-11 06:15:41 -07:00
2026-06-26 15:01:15 -07:00
2026-06-23 16:46:39 +02:00
2026-07-11 06:15:41 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 06:15:41 -07:00
2026-06-24 13:24:43 +08:00
2026-06-22 19:11:46 +08:00
2026-07-11 06:15:41 -07:00
2026-07-07 15:17:41 -07:00
2026-07-11 13:45:27 +08:00
2026-07-11 06:15:41 -07:00
2026-07-11 12:48:27 +08:00
2026-07-11 01:33:47 +01:00
2026-07-07 11:55:57 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-03 15:36:11 +00:00
2026-07-10 11:54:08 +01:00
2026-07-11 06:15:41 -07:00
2026-07-10 17:47:32 -07:00
2026-07-11 04:54:27 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 02:31:17 -07:00
2026-07-10 19:28:49 -07:00
2026-07-10 11:54:08 +01:00
2026-07-04 00:03:49 -07:00
2026-07-11 14:00:53 +08:00
2026-06-23 19:18:51 -05:00
2026-06-16 15:59:02 +02:00
2026-06-22 21:07:57 -04:00
2026-07-01 20:24:38 -05:00
2026-07-10 10:42:36 +01:00
2026-06-21 21:39:41 +02:00
2026-07-01 20:24:38 -05:00
2026-07-01 22:05:26 -05:00
2026-06-15 19:27:55 +02:00
2026-07-01 22:05:26 -05:00
2026-06-15 19:27:55 +02:00
2026-07-10 10:42:36 +01:00
2026-07-01 22:05:26 -05:00
2026-07-10 11:54:08 +01:00
2026-07-10 10:42:36 +01:00
2026-07-11 15:57:55 +08:00
2026-06-21 22:19:54 +02:00
2026-07-10 11:54:08 +01:00
2026-06-15 14:23:57 +08:00
2026-07-11 00:34:10 -07:00
2026-07-10 13:33:20 -07:00
2026-06-24 20:35:50 +01:00
2026-07-11 06:15:41 -07:00
2026-07-07 15:17:41 -07:00
2026-07-07 16:13:55 -07:00
2026-07-11 02:31:17 -07:00
2026-06-20 21:44:09 +02:00
2026-06-21 11:15:14 +02:00
2026-07-11 06:15:41 -07:00
2026-07-11 19:57:54 +08:00
2026-07-11 06:30:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-10 20:16:19 +01:00
2026-07-07 16:13:55 -07:00
2026-07-08 08:01:00 -07:00
2026-07-04 08:22:39 -07:00
2026-07-11 02:31:17 -07:00
2026-07-11 06:15:41 -07:00
2026-06-21 22:02:05 +02:00
2026-07-11 19:57:54 +08:00
2026-07-11 02:31:17 -07:00
2026-07-11 12:48:27 +08:00
2026-07-11 02:26:06 -07:00
2026-07-04 08:00:15 +02:00
2026-07-11 06:15:41 -07:00
2026-07-11 12:48:27 +08:00
2026-07-11 06:15:41 -07:00
2026-06-19 10:26:02 +08:00
2026-07-11 06:15:41 -07:00
2026-07-11 02:31:17 -07:00
2026-07-10 13:33:20 -07:00
2026-07-04 15:13:31 -06:00
2026-07-07 11:55:57 -07:00
2026-07-08 08:01:00 -07:00
2026-07-07 11:55:57 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-10 14:50:00 -07:00
2026-07-07 16:13:55 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 09:26:08 -07:00
2026-06-21 11:15:14 +02:00
2026-07-11 06:15:41 -07:00
2026-07-07 00:07:05 +01:00
2026-07-10 22:24:36 -07:00
2026-07-05 13:33:04 -04:00
2026-07-11 06:15:41 -07:00
2026-06-21 15:18:57 +02:00
2026-07-11 06:15:41 -07:00
2026-07-11 01:09:51 -07:00
2026-07-11 06:15:41 -07:00
2026-07-10 11:54:08 +01:00
2026-07-11 06:15:41 -07:00
2026-07-05 08:00:23 -04:00
2026-07-11 07:28:20 -07:00
2026-07-10 16:48:11 +01:00
2026-07-11 02:31:17 -07:00
2026-06-21 17:51:44 +02:00
2026-07-04 06:51:03 -04:00
2026-06-23 13:34:20 +02:00
2026-06-24 10:22:56 +08:00
2026-07-04 06:51:03 -04:00
2026-07-11 01:09:51 -07:00
2026-07-07 16:13:55 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 12:48:27 +08:00
2026-07-11 06:30:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 12:48:27 +08:00
2026-06-15 14:23:57 +08:00
2026-07-10 17:47:32 -07:00
2026-07-10 17:47:32 -07:00
2026-07-10 11:32:24 -07:00
2026-07-10 17:47:32 -07:00
2026-07-11 06:15:41 -07:00
2026-07-10 02:06:53 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 09:44:19 -07:00
2026-07-11 06:15:41 -07:00
2026-07-05 08:00:23 -04:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 02:26:06 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 06:15:41 -07:00
2026-07-05 08:00:23 -04:00
2026-07-11 06:15:41 -07:00
2026-07-07 10:22:07 +01:00
2026-06-20 22:37:26 +08:00
2026-07-10 19:18:47 -07:00
2026-06-20 20:07:50 +02:00
2026-06-23 14:08:20 +08:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-06 02:24:37 -07:00
2026-07-11 06:15:41 -07:00
2026-06-21 21:53:58 +02:00
2026-07-11 06:15:41 -07:00
2026-07-11 03:04:11 -07:00
2026-07-11 06:15:41 -07:00
2026-07-10 23:30:57 +01:00
2026-07-11 06:15:41 -07:00
2026-07-11 02:31:17 -07:00
2026-07-10 22:13:33 -07:00
2026-06-24 22:54:00 +08:00
2026-07-04 06:40:45 -04:00
2026-06-19 08:24:16 +08:00
2026-06-17 00:55:54 +02:00
2026-07-11 00:07:59 -07:00
2026-07-11 06:30:57 -07:00
2026-07-11 06:15:41 -07:00
2026-06-23 13:44:14 +08:00
2026-06-17 12:50:18 +02:00
2026-07-05 01:56:40 -04:00
2026-06-21 07:40:06 +02:00
2026-06-21 07:40:06 +02:00
2026-06-21 07:40:06 +02:00
2026-07-11 06:15:41 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 01:09:51 -07:00
2026-07-11 02:31:17 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 00:51:57 -07:00
2026-06-19 02:21:10 +02:00
2026-07-06 02:58:59 -07:00
2026-07-10 08:18:44 -07:00
2026-07-11 01:03:30 +01:00
2026-07-11 06:30:57 -07:00
2026-06-18 23:26:21 +02:00
2026-06-18 23:33:44 +02:00
2026-07-11 06:15:41 -07:00
2026-07-09 23:06:44 +01:00
2026-07-11 06:30:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 00:58:14 -07:00
2026-07-11 06:15:41 -07:00
2026-07-06 07:46:08 -07:00
2026-07-06 10:26:51 -07:00
2026-07-11 02:50:53 -07:00
2026-07-11 06:15:41 -07:00
2026-06-23 12:40:25 +02:00
2026-07-05 07:33:54 -07:00
2026-07-07 16:59:51 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 12:48:27 +08:00
2026-07-11 02:31:17 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 15:17:41 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-07 11:55:57 -07:00
2026-06-20 02:31:40 +08:00
2026-07-11 06:15:41 -07:00
2026-07-11 12:48:27 +08:00
2026-06-26 16:43:51 -07:00
2026-07-10 13:33:20 -07:00
2026-07-11 06:15:41 -07:00
2026-07-10 13:33:20 -07:00
2026-07-11 06:15:41 -07:00
2026-06-21 18:43:05 +02:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-07-11 02:49:53 -07:00
2026-07-10 20:16:19 +01:00
2026-07-11 01:09:51 -07:00
2026-07-07 11:55:57 -07:00
2026-07-11 06:15:41 -07:00
2026-06-20 15:35:33 +02:00
2026-07-11 06:15:41 -07:00
2026-07-11 01:58:16 -07:00
2026-06-21 11:15:14 +02:00
2026-06-21 11:15:14 +02:00
2026-07-10 10:42:36 +01:00
2026-07-11 02:31:17 -07:00
2026-07-11 06:15:41 -07:00
2026-07-07 11:55:57 -07:00
2026-07-02 00:21:41 -07:00
2026-06-21 11:15:14 +02:00