Skip to content

[Feature] Live cluster visualizer (shipped in package) #204

Description

@pathosDev

Size / Priority

  • Size: L — UI work + framework integration.

Rationale

Operators monitoring a live cluster benefit from a visual topology: which nodes, which shards, what's the gossip flow, what messages are slow. Akka had this via separate tools; for a self-contained "open browser → see cluster" experience, ship a small SPA in the package.

Design sketch

  • Backend: extend management HTTP endpoint with /cluster/visualizer/* routes.
  • WebSocket: stream live cluster events (member up/down, shard moves, gossip ticks, hot-actor mailbox depths).
  • SPA: small React/Svelte/Vue bundle served from /cluster/visualizer. ~200KB gzipped target.
  • Views:
    • Topology graph (nodes + connections).
    • Shard distribution heatmap.
    • Recent gossip / membership changes.
    • Per-actor hot-list (highest mailbox depth, slowest handlers).
    • Cluster events timeline.

Integration

Out of scope / non-goals

  • Production-grade monitoring — that's Prometheus/Grafana. This is dev/diagnostics.
  • Auth — relies on existing management-endpoint auth.

Open design questions

  1. Framework choice for SPA: React (familiar), Svelte (smaller bundle), or vanilla. Recommend Svelte.
  2. Topology layout: force-directed vs ring vs custom. Recommend force-directed.
  3. Update rate: 1Hz vs higher. Recommend 1Hz default.

Test plan

  1. Open /cluster/visualizer → topology renders.
  2. Membership change reflected within 1s.
  3. Shard move animates.
  4. Hot-actor list updates.
  5. Bundle size ≤ 200KB gzipped.
  6. Works without external CDN (everything bundled).

Acceptance criteria

  • /cluster/visualizer SPA + supporting endpoints.
  • Live event stream.
  • Topology + heatmap + timeline views.
  • Documentation.
  • Test suite.
  • CHANGELOG entry under "New: Cluster visualizer SPA".

Pre-implementation checklist

  • Framework choice.
  • Bundle size budget agreed.
  • Build pipeline integrated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpriority: lowNice-to-have / niche / demand-driven

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions