Files
2026-04-11 21:11:15 +02:00

53 lines
1.7 KiB
Markdown

# 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.