-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
[Feature]: Plugin UI Extension System — Allow Plugins to Contribute Native Pages to Control UI #66944
Copy link
Copy link
Open
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.enhancementNew feature or requestNew feature or requestimpact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.Issue quality rating does not apply to this item.maturity:stableIssue affects a taxonomy feature currently scored M4/M5.Issue affects a taxonomy feature currently scored M4/M5.
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.enhancementNew feature or requestNew feature or requestimpact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.Issue quality rating does not apply to this item.maturity:stableIssue affects a taxonomy feature currently scored M4/M5.Issue affects a taxonomy feature currently scored M4/M5.
Type
Fields
Priority
None yet
Summary
Allow plugins to declare UI pages in
openclaw.plugin.jsonthat appear as native tabs inside the Control UI. Plugin pages are built as Lit Web Components (same tech stack as the main UI), dynamically discovered and loaded at runtime, sharing the same theme, Lit runtime, and gateway client. Users cannot distinguish plugin pages from built-in views.Problem to solve
The Control UI is currently a closed SPA — all navigation tabs and views are hardcoded at build time. Plugins can serve standalone pages via
registerHttpRoute()(e.g., thediffsplugin at/plugins/diffs/view/), but cannot contribute pages that render inside the main UI shell.This forces plugin UI into one of two bad options:
Concrete use case: the Skill Development Studio plugin needs a management page (skill list, recording controls) that should appear as a tab under the "agent" group — indistinguishable from built-in views like "agents" or "nodes".
Proposed solution
High-Level Flow
Architecture Diagram
Why Unified Tech Stack (Lit), Not iframe
--bg,--accent,--border...) automaticallygateway.request()(sync-style, typed)Alternatives considered
No response
Impact
Affected Users / Systems
Severity: Blocks Workflow
This is not a cosmetic issue. Without this capability, plugin authors face a hard architectural wall:
navigation.ts,app-render.ts, and the build pipeline — even when the feature is logically independent.Frequency: Every Plugin with a UI
This is not an edge case. It affects every plugin that needs more than a config form. Known upcoming cases:
skill-devbrowserAs the plugin ecosystem grows, this gap will block an increasing number of features.
Consequences Today
Evidence/examples
No response
Additional information
No response