Skip to main content

Overview

Lasso’s LiveView dashboard provides real-time visibility into RPC routing, provider health, and cluster-wide metrics through an interactive web interface. The dashboard aggregates data from all cluster nodes and presents a unified view of the entire system.

Accessing the Dashboard

The dashboard is available at:
Multi-profile deployments can access specific profiles:

Dashboard Architecture

EventStream Aggregation

The dashboard uses a per-profile EventStream GenServer that consolidates all real-time events into batched updates, eliminating subscription explosion in multi-chain deployments. EventStream responsibilities:
  • Subscribes to PubSub topics for all chains in a profile
  • Batches events every 175ms for efficient LiveView updates
  • Deduplicates routing events by request ID
  • Computes per-provider metrics in real-time
  • Tracks circuit breaker states across the cluster
Subscribed PubSub topics (per profile):

Message Flow

Batch structure:

Initial Snapshot

On subscription, EventStream sends a complete snapshot of current state:

Dashboard Tabs

Overview Tab

Interactive network topology showing:
  • Chain nodes with provider counts and status indicators
  • Provider nodes with circuit breaker states and health
  • Live request animations flowing from chains to providers
  • Details panel with real-time metrics for selected chain/provider
Status indicators:

Metrics Tab

Cluster-wide performance metrics powered by MetricsStore:
  • Provider leaderboard (sorted by score)
  • Per-method performance with percentiles
  • Success rates and average latency
  • Multi-region comparison
Metrics are cached for 15 seconds with stale-while-revalidate semantics.

System Tab

VM-level metrics (when LASSO_VM_METRICS_ENABLED=true):
  • Memory usage
  • Process counts
  • Scheduler utilization
  • Message queue lengths

Cluster-Wide Metrics

MetricsStore

Caches aggregated metrics from all cluster nodes using :rpc.multicall/5. Configuration:
Cache operations:

Aggregation Logic

Metrics are weighted by call volume across nodes:
Minimum call threshold: Providers need ≥10 calls to be included in aggregates (prevents skew from cold-start nodes).

Cache Invalidation

MetricsStore invalidates all cached entries on topology changes:
Generation counter prevents stale completions from pre-invalidation async tasks.

Real-Time Provider Metrics

EventStream computes per-provider metrics from routing events:
Computation window: 60 seconds (configurable via @window_duration_ms).

Cluster Status Indicator

Fixed bottom-right indicator showing cluster health:
Staleness detection:
  • Updates marked stale after 30 seconds without new data
  • Stale indicator shown when last_update > 30s
  • Heartbeat messages every 2 seconds prevent false staleness

Network Topology Visualization

Canvas Layout

Providers positioned using force-directed graph algorithm:
Node types:
  • Chain nodes (left side): Octagon shapes
  • Provider nodes (right side): Circles with status colors

Request Animations

Live requests visualized as particles flowing from chain to provider:

Performance Optimizations

Event Batching

EventStream batches up to 100 events or waits 175ms before flushing:
Benefits:
  • Reduces LiveView messages from thousands/sec to ~6/sec
  • Coalesces state updates (latest-wins for health, circuits, blocks)
  • O(1) deduplication using seen_request_ids map

Lazy Ticking

EventStream only schedules tick timers when subscribers exist:
Idle termination: EventStream terminates after 30 seconds with no subscribers (transient restart).

Deduplication

Request IDs cached for 2 minutes to prevent duplicate routing events:

Configuration

Dashboard Settings

EventStream Tuning

MetricsStore Tuning

Troubleshooting

Dashboard Not Updating

Symptom: Cluster status shows “stale” or metrics frozen. Check EventStream status:
Verify PubSub subscriptions:

Metrics Not Aggregating

Symptom: Cluster metrics show 1/3 nodes or coverage errors. Check cluster topology:
Check RPC connectivity:

High Memory Usage

Symptom: EventStream memory growing unbounded. Check event counts:
Cleanup runs automatically:
  • seen_request_ids cleaned every 5 seconds
  • circuit_states and block_heights cleaned every 30 seconds

Summary

Lasso’s dashboard provides:
  • Real-time aggregation via EventStream (175ms batching)
  • Cluster-wide metrics via MetricsStore (15s cache, stale-while-revalidate)
  • Multi-region visibility with per-node latency breakdown
  • Interactive topology with live request animations
  • Efficient updates through batching, coalescing, and deduplication
  • Automatic scaling with lazy ticking and idle termination