4.2 KiB
4.2 KiB
Session Log: GuruRMM v0.4.0 Build with Tray Icon
Date: 2025-12-20 Focus: Tray icon implementation, cross-platform builds
Summary
Built GuruRMM v0.4.0 with new system tray application for Windows.
Completed
-
Tray Icon Implementation (from previous session)
- IPC infrastructure in
agent/src/ipc.rs(Named Pipe for Windows) - TrayPolicy struct for admin-controlled visibility
- Tray app crate with menu, icon states, IPC client
- SVG icon assets (green/yellow/red/gray states)
- IPC infrastructure in
-
Compilation Fixes
- Fixed
device_id::get_device_id()return type (String, not Result) - Added
TrayPolicyUpdatematch arm in WebSocket handler - Added
last_checkinandtray_policyfields to Windows service AppState - Fixed tray-icon API change (
set_menureturns unit now)
- Fixed
-
Cross-Platform Builds
- Installed mingw-w64 via Homebrew on Mac
- Added
x86_64-pc-windows-gnutarget to Rust - Configured cargo for Windows cross-compilation
Build Results (v0.4.0)
| Component | Target | Size | Location |
|---|---|---|---|
| Agent | Linux x86_64 | 3.3 MB | Build server: ~/gururmm/agent/target/release/gururmm-agent |
| Agent | Windows x64 | 2.8 MB | Local: agent/target/x86_64-pc-windows-gnu/release/gururmm-agent.exe |
| Tray App | Windows x64 | 1.6 MB | Local: tray/target/x86_64-pc-windows-gnu/release/gururmm-tray.exe |
Architecture
┌─────────────────┐ Policy ┌─────────────────┐
│ RMM Server │ ──────────────► │ Agent Service │
│ (WebSocket) │ │ (Background) │
└─────────────────┘ └────────┬────────┘
│ IPC
│ (Named Pipe)
▼
┌─────────────────┐
│ Tray App │
│ (User Session) │
└─────────────────┘
- Named pipe:
\\.\pipe\gururmm-agent - Agent runs as SYSTEM, tray runs in user session
- Policy controls: visibility, menu items, allowed actions
Key Files
New Files
agent/src/ipc.rs- Named pipe IPC server, TrayPolicy, AgentStatustray/Cargo.toml- Tray app crate configtray/src/main.rs- Entry pointtray/src/tray.rs- Tray icon managementtray/src/menu.rs- Dynamic menu buildingtray/src/ipc.rs- Named pipe clientassets/icons/*.svg- Tray icon states
Modified Files
agent/Cargo.toml- Version 0.4.0, Windows IPC featuresagent/src/main.rs- IPC server integration, AppState fieldsagent/src/service.rs- Added last_checkin, tray_policy to AppStateagent/src/transport/mod.rs- Added TrayPolicyUpdate to ServerMessageagent/src/transport/websocket.rs- Handle TrayPolicyUpdate
Build Server (172.16.3.30)
- SSH:
guru@172.16.3.30orroot@172.16.3.30 - Rust: Installed via rustup
- Note: Requires sudo for apt (password needed)
- Linux binary:
~/gururmm/agent/target/release/gururmm-agent
Cross-Compile from Mac
# Windows agent
cd agent && cargo build --release --target x86_64-pc-windows-gnu
# Windows tray
cd tray && cargo build --release --target x86_64-pc-windows-gnu
Pending Tasks
- Deploy Windows binaries to downloads server
- Implement tray launcher in agent (auto-launch in user sessions)
- Add TrayPolicy to server data model and site settings API
- Dashboard UI for tray policy management
- Mac/Linux tray support (Unix domain socket instead of named pipe)
Credentials Reference
Build Server (172.16.3.30)
- SSH: guru/root with key
- PostgreSQL: gururmm / gururmm / 43617ebf7eb242e814ca9988cc4df5ad
Site Code
- Main Office:
SWIFT-CLOUD-6910
URLs
- Dashboard: https://rmm-api.azcomputerguru.com/
- API: https://rmm-api.azcomputerguru.com/api/
- WebSocket: wss://rmm-api.azcomputerguru.com/ws