53 lines
1.7 KiB
Markdown
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.
|