Skip to Content
v0.8.0 · shippedNative mobile SDKs, optional Sentry enrichment, and bring-your-own keys/storage. Read the changelog →
Admin consoleKnowledge graph
Bug graph · Surface overlays inventory.yaml on the same canvas · · open live demo ↗

Knowledge graph

The Graph page renders your project’s bug graph as an interactive, force-directed layout. It’s the fastest way to see which components are on fire and which bugs are clustered together — without reading individual reports.


Node types

NodeSizeColourClick action
ReportSeverity (critical = largest)Red gradientOpens report detail drawer
ComponentBlast radius (cached, refreshed every 15 min)BlueShows blast-radius panel
Fix attemptFixedGreenOpens fix drawer with PR link
Inventory Action (Surface mode)AmberShows Action + expected_outcome

Edges connect nodes that share a Bug-Ontology tag, land on the same component, or are linked by the reports_against graph edge that classify-report writes when it matches a report to an inventory Action node.


Blast radius

Click any component node to see its blast radius panel:

  • Open reports — count by severity in the last 30 days.
  • Affected routes — pages in inventory.yaml that touch this component.
  • Last fix — most recent fix attempt, its PR URL, and the synthetic-monitor verdict.
  • Related components — components that frequently co-appear in the same report.

Blast radius is cached in blast_radius_cache and refreshed every 15 minutes by pg_cron. You can force a refresh from the panel’s context menu.


Surface mode

Toggle Surface in the graph header to overlay your inventory.yaml nodes on the bug graph. This shows:

  • Page nodes anchored to their routes.
  • Element and Action nodes attached to the pages they belong to.
  • Dead corners — high-traffic pages with no expected_outcome assertions — highlighted in amber so you know where to add coverage next.

Surface mode requires at least one accepted inventory.yaml proposal. See User stories · Inventory for how to generate one.


Cypher console

If Apache AGE is enabled for your Supabase project, a Cypher button appears in the graph header. Write any MATCH / RETURN against the same underlying graph:

MATCH (c:Component)-[:HAS_REPORT]->(r:Report {severity: 'critical'}) WHERE r.created_at > now() - interval '7 days' RETURN c.name, count(r) AS open_criticals ORDER BY open_criticals DESC LIMIT 10

Results render as a data table below the graph. All Cypher queries are written to the audit log with the executing user and timestamp.

Apache AGE is an optional Postgres extension. Enable it in Self-hosting → Supabase setup or ask Mushi Cloud support to enable it for your managed project.


Keyboard shortcuts

KeyAction
SpacePause / resume force simulation
FFit graph to window
EscClose any open drawer
⌘ KOpen command palette (search nodes by name)
ScrollZoom in / out
Drag nodePin / unpin position

See also

Last updated on