# RMon: Remote Monitoring & Acquisition System RMon is a lightweight, high-performance remote data acquisition and monitoring system. It consists of a statically-linked **Agent** that runs on remote Linux machines and a cross-platform **UI** that manages the agent lifecycle and visualizes data in real-time. ## Key Features - **Zero-Dependency Agent**: Fully static `musl` binary. Copy and run on any Linux kernel ≥ 3.2. - **VSCode-Style Deployment**: The UI automatically deploys and starts the agent over SSH. No manual installation required on the remote side. - **Multi-Source Acquisition**: Support for UDP streams, CSV files, and custom Shell commands with Regex parsing. - **Optimized Storage**: Real-time circular buffers for live display and append-only binary logs for persistent historical data. - **Real-Time Visualization**: High-performance plotting using `egui` and `egui_plot`. ## Project Structure - `rmon-agent/`: The remote server that collects and stores data. - `rmon-ui/`: The desktop application for monitoring and management. - `rmon-common/`: Shared protocol definitions and data models. - `docs/`: Technical specifications and architectural details. ## Quick Start ### 1. Build the Agent (Static) The agent must be built for the target architecture. For a standard x86_64 Linux target: ```bash cargo build --release --target x86_64-unknown-linux-musl -p rmon-agent ``` ### 2. Run the UI ```bash cargo run -p rmon-ui ``` ### 3. Connect 1. Enter the **SSH Host** (alias from your `~/.ssh/config`). 2. Click **Connect**. The UI will automatically: - Check if the agent is running on the remote host. - Deploy the binary to `~/.rmon/agent` if missing. - Start a persistent instance. 3. Select signals from the tree to begin plotting. ## Documentation - [User Guide](USER_GUIDE.md): How to configure and use RMon. - [Developer Guide](DEVELOPER_GUIDE.md): Architecture, protocol, and how to add new sources. - [Agent Specification](docs/agent-spec.md) - [Protocol Reference](docs/protocol.md)