Files
rmon/docs/ui-spec.md
T
2026-04-11 21:11:15 +02:00

1.7 KiB

RMon UI Specification

Technology

  • Framework: egui + eframe (immediate-mode Rust GUI)
  • Render backend: glow (OpenGL 2.1+)
  • Plotting: egui_plot for interactive panels.
  • Async runtime: tokio (runs in a background thread).

Deployment

Single binary embedding the statically-linked Agent binary.

UI Layout

Top Toolbar

  • 🚀 Connect...: Opens the connection dialog.
  • 🔌 Disconnect: Closes current session.
  • 💀 Kill Agent: Terminates the remote agent process.
  • ⚙ Configure Agent: Opens the remote configuration editor.

Connection Dialog (Modal)

Allows configuring:

  • SSH Host: alias from ~/.ssh/config.
  • Agent Port: remote port (default 7891).
  • Local TCP Addr: local tunnel entry point.

Remote Configuration Editor (Modal)

  • Full-screen TOML editor for the agent's config.toml.
  • Save & Apply: Pushes configuration to the agent.
  • Refresh: Pulls the latest configuration from the agent.

Status Bar (Bottom)

  • Displays current connection state (✔ Connected / ✘ Disconnected).
  • Shows host and port details when connected.

Signal Tree (Left Panel)

  • Displays all available signals from the agent.
  • Checkboxes to subscribe/unsubscribe from live data.

Plot Area (Central Panel)

  • Vertical scroll area containing live plots.

Connection Flow

  1. User clicks 🚀 Connect... and enters details.
  2. UI checks if agent is running on remote host via SSH.
  3. UI deploys agent binary if missing.
  4. UI starts agent process (nohup).
  5. UI establishes SSH local port forward tunnel.
  6. UI connects TCP client to local tunnel end.
  7. Protocol handshake and initial signal list fetch.