helios-remote/crates/client
Helios 1d019fa2b4
client: verbose CLI output, TOML config in APPDATA, desktop install
- install.ps1: place exe on Desktop instead of TEMP, start with visible window
- main.rs: banner on startup, [CMD]/[OK]/[ERR] prefixed logs with HH:MM:SS timestamps
- Config: switch from JSON to TOML (config.toml in %APPDATA%\helios-remote\)
- First-run wizard prompts for Relay URL + API Key (relay_code -> api_key)
- Add chrono + toml deps to Cargo.toml
2026-03-03 13:55:22 +01:00
..
src client: verbose CLI output, TOML config in APPDATA, desktop install 2026-03-03 13:55:22 +01:00
Cargo.toml client: verbose CLI output, TOML config in APPDATA, desktop install 2026-03-03 13:55:22 +01:00
README.md Add logo assets and update README 2026-03-02 18:16:05 +01:00

helios-client (Phase 2 — not yet implemented)

This crate will contain the Windows remote-control client for helios-remote.

Planned Features

  • Connects to the relay server via WebSocket (wss://)
  • Sends a Hello message on connect with an optional display label
  • Handles incoming ServerMessage commands:
    • ScreenshotRequest → captures the primary display (Windows GDI or windows-capture) and responds with base64 PNG
    • ExecRequest → runs a shell command in a persistent cmd.exe / PowerShell session and returns stdout/stderr/exit-code
    • ClickRequest → simulates a mouse click via SendInput Win32 API
    • TypeRequest → types text via SendInput (virtual key events)
  • Persistent shell session so cd C:\Users persists across exec calls
  • Auto-reconnect with exponential backoff
  • Configurable via environment variables or a client.toml config file

Planned Tech Stack

Crate Purpose
tokio Async runtime
tokio-tungstenite WebSocket client
serde_json Protocol serialization
windows / winapi Screen capture, mouse/keyboard input
base64 PNG encoding for screenshots

Build Target

cargo build --target x86_64-pc-windows-gnu

App Icon

The file assets/logo.ico in the repository root is the application icon intended for the Windows .exe. It can be embedded at compile time using a build script (e.g. via the winres crate).