Repository navigation
Per-pack dashboard widgets #208
Description
Context
The OpenRange dashboard is domain-agnostic — it shows the world
graph, builder lineage, and request log. That's the right baseline.
But each domain has a natural visualization the generic graph view
doesn't capture:
- Cyber: service topology + vuln chain + attack path
- Trading: order book depth + P&L curve + order timeline
- Robotics: 3D scene + trajectory + collision/contact events
- Social / negotiation: dialogue tree + intent graph
Asking the dashboard to know about each of these doesn't scale —
the dashboard would accumulate domain logic. The right move is
packs ship their own widgets.
What this issue tracks
Add a plugin point so packs can register pack-specific dashboard
widgets. The dashboard core renders the generic views; each
installed pack contributes its own panels.
Open design questions — design doc PR before code:
- Where does widget code live? In the pack package? A sibling
package? Loaded as a JS bundle from the pack folder? - How are widgets loaded? Entry point on the Python side
(openrange.dashboard.widgets) that returns JS+CSS strings? Or
bundled JS shipped alongside the pack? - What's the data contract? Widgets need access to pack-defined
state (graph nodes by type, request log filters, custom event
streams). Define a stable widget API so widgets don't break on
every dashboard refactor.
Why it matters
Without this, every new pack that lands either lives without
domain-shaped visualization (annoying) or pushes its UI logic into
core dashboard code (doesn't scale). Plugin point lets each pack
own its inspection surface.
Where to start
src/openrange/dashboard/— current dashboard package.src/openrange/core/pack.py—PackABC; the new hook would
go alongsideverifier_helpers/runtime_backings/
default_builder.src/openrange/packs/cyber_webapp_offense_v1/codegen/discovery.py
— the cyber discovery payload is what a cyber-specific widget
would render.
Acceptance
- Design doc PR with the widget API + loading mechanism.
- Reference implementation: cyber pack ships a
topologywidget
that visualizes the service graph + oracle path better than the
generic view. - Generic dashboard renders without the widget when no pack widgets
are installed.
Notes
Don't design this in isolation. Ship the inspector improvements
(#206) first; if the resulting view is good enough that pack-specific
widgets aren't urgent, this issue can wait.
Activity
[-][roadmap] Pluggable per-pack dashboard widgets[/-][+]Pluggable per-pack dashboard widgets (cyber topology, trading order book, robotics scene)[/+][-]Pluggable per-pack dashboard widgets (cyber topology, trading order book, robotics scene)[/-][+]Per-pack dashboard widgets[/+]larstalian commentedon Oct 12, 2026
No longer involved with this project, so closing my open issues. Feel free to reopen anything you still want to track.