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