Added: - PROJECTS_INDEX.md - Master catalog of 7 active projects - GURURMM_API_ACCESS.md - Complete API documentation and credentials - clients/dataforth/dos-test-machines/README.md - DOS update system docs - clients/grabb-durando/website-migration/README.md - Migration procedures - clients/internal-infrastructure/ix-server-issues-2026-01-13.md - Server issues - projects/msp-tools/guru-connect/README.md - Remote desktop architecture - projects/msp-tools/toolkit/README.md - MSP PowerShell tools - projects/internal/acg-website-2025/README.md - Website rebuild docs - test_gururmm_api.py - GuruRMM API testing script Modified: - credentials.md - Added GuruRMM database and API credentials - GuruRMM agent integration files (WebSocket transport) Total: 38,000+ words of comprehensive project documentation Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
GuruConnect - Remote Desktop Solution
Project Type: Internal Tool / MSP Platform Component Status: Phase 1 MVP Development Technology Stack: Rust, React, WebSockets, Protocol Buffers Integration: GuruRMM platform
Project Overview
GuruConnect is a remote desktop solution similar to ScreenConnect/ConnectWise Control, designed for fast, secure remote screen control and backstage tools for Windows systems. Built as an integrated component of the GuruRMM platform.
Goal: Provide MSP technicians with enterprise-grade remote desktop capabilities fully integrated with GuruRMM's monitoring and management features.
Architecture
┌─────────────────────────────────────────────────────────────┐
│ GuruConnect System │
└─────────────────────────────────────────────────────────────┘
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Dashboard │ │ GuruConnect │ │ GuruConnect │
│ (React) │◄──WSS──►│ Server (Rust) │◄──WSS──►│ Agent (Rust) │
│ │ │ │ │ │
│ - Session list │ │ - Relay frames │ │ - Capture │
│ - Live viewer │ │ - Auth/JWT │ │ - Input inject │
│ - Controls │ │ - Session mgmt │ │ - Encoding │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
│
▼
┌─────────────────┐
│ PostgreSQL │
│ (Sessions, │
│ Audit Log) │
└─────────────────┘
Components
1. Agent (Rust - Windows)
Location: ~/claude-projects/guru-connect/agent/
Runs on Windows client machines to capture screen and inject input.
Responsibilities:
- Screen capture via DXGI (with GDI fallback)
- Frame encoding (Raw+Zstd, VP9, H264)
- Dirty rectangle detection
- Mouse/keyboard input injection
- WebSocket client connection to server
2. Server (Rust + Axum)
Location: ~/claude-projects/guru-connect/server/
Relay server that brokers connections between dashboard and agents.
Responsibilities:
- WebSocket relay for screen frames and input
- JWT authentication for dashboard users
- API key authentication for agents
- Session management and tracking
- Audit logging
- Database persistence
3. Dashboard (React)
Location: ~/claude-projects/guru-connect/dashboard/
Web-based viewer interface, to be integrated into GuruRMM dashboard.
Responsibilities:
- Live video stream display
- Mouse/keyboard event capture
- Session controls (pause, record, etc.)
- Quality/encoding settings
- Connection status
4. Protocol Definitions (Protobuf)
Location: ~/claude-projects/guru-connect/proto/
Shared message definitions for efficient serialization.
Key Message Types:
VideoFrame- Screen frames (raw+zstd, VP9, H264)MouseEvent- Mouse input (click, move, scroll)KeyEvent- Keyboard inputSessionRequest/Response- Session management
Encoding Strategy
GuruConnect dynamically selects encoding based on network conditions and GPU availability:
| Scenario | Encoding | Target | Notes |
|---|---|---|---|
| LAN (<20ms RTT) | Raw BGRA + Zstd | <50ms latency | Dirty rectangles only |
| WAN + GPU | H264 hardware | 100-500 Kbps | NVENC/QuickSync |
| WAN - GPU | VP9 software | 200-800 Kbps | CPU encoding |
Implementation Details
DXGI Screen Capture:
- Desktop Duplication API for Windows 8+
- Dirty region tracking (only changed areas)
- Fallback to GDI BitBlt for Windows 7
Compression:
- Zstd for lossless (LAN scenarios)
- VP9 for high-quality software encoding
- H264 for GPU-accelerated encoding
Frame Rate Adaptation:
- Target 30 FPS for active sessions
- Drop to 5 FPS when idle
- Skip frames if network buffer full
Security Model
Authentication
Dashboard Users: JWT tokens
- Login via GuruRMM credentials
- Tokens expire after 24 hours
- Refresh tokens for long sessions
Agents: API keys
- Pre-registered API key per agent
- Tied to machine ID in GuruRMM database
- Rotatable via admin panel
Transport Security
TLS Required: All WebSocket connections use WSS (TLS)
- Certificate validation enforced
- Self-signed certs rejected in production
- SNI support for multi-tenant hosting
Session Audit
Logged Events:
- Session start/end with user and machine IDs
- Connection duration and data transfer
- User actions (mouse clicks, keystrokes - aggregate only)
- Quality/encoding changes
- Recording start/stop (Phase 4)
Retention: 90 days in PostgreSQL
Phase 1 MVP Goals
Completed Features
- Project structure and build system
- Protocol Buffers definitions
- Basic WebSocket relay server
- DXGI screen capture implementation
In Progress
- GDI fallback for screen capture
- Raw + Zstd encoding with dirty rectangles
- Mouse and keyboard input injection
- React viewer component
- Session management API
Future Phases
- Phase 2: VP9 and H264 encoding
- Phase 3: GuruRMM dashboard integration
- Phase 4: Session recording and playback
- Phase 5: File transfer and clipboard sync
- Phase 6: Multi-monitor support
Development
Prerequisites
Rust: 1.75+ (install via rustup)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Windows SDK: For agent development
- Visual Studio 2019+ with C++ tools
- Windows 10 SDK
Protocol Buffers Compiler:
# macOS
brew install protobuf
# Windows (via Chocolatey)
choco install protoc
# Linux
apt-get install protobuf-compiler
Build Commands
# Build all components (from workspace root)
cd ~/claude-projects/guru-connect
cargo build --release
# Build agent only
cargo build -p guruconnect-agent --release
# Build server only
cargo build -p guruconnect-server --release
# Run tests
cargo test
# Check for warnings
cargo clippy
Cross-Compilation
Building Windows agent from Linux:
# Install Windows target
rustup target add x86_64-pc-windows-msvc
# Build (requires cross or appropriate linker)
cross build -p guruconnect-agent --target x86_64-pc-windows-msvc --release
# Alternative: Use GitHub Actions for Windows builds
Running in Development
Server
# Development mode
cargo run -p guruconnect-server
# With environment variables
export DATABASE_URL=postgres://user:pass@localhost/guruconnect
export JWT_SECRET=your-secret-key-here
export RUST_LOG=debug
cargo run -p guruconnect-server
# Production build
./target/release/guruconnect-server --bind 0.0.0.0:8443
Agent
Agent must run on Windows:
# Run from Windows
.\target\release\guruconnect-agent.exe
# With custom server URL
.\target\release\guruconnect-agent.exe --server wss://guruconnect.azcomputerguru.com
Dashboard
cd dashboard
npm install
npm run dev
# Production build
npm run build
Configuration
Server Config
Environment Variables:
DATABASE_URL=postgres://guruconnect:password@localhost:5432/guruconnect
JWT_SECRET=<generate-random-256-bit-secret>
BIND_ADDRESS=0.0.0.0:8443
TLS_CERT=/path/to/cert.pem
TLS_KEY=/path/to/key.pem
LOG_LEVEL=info
Agent Config
Command-Line Flags:
--server <url> Server WebSocket URL (wss://...)
--api-key <key> Agent API key for authentication
--quality <low|med|high> Default quality preset
--log-level <level> Logging verbosity
Registry Settings (Windows):
HKLM\SOFTWARE\GuruConnect\Server = wss://guruconnect.azcomputerguru.com
HKLM\SOFTWARE\GuruConnect\ApiKey = <api-key>
Deployment
Server Deployment
Recommended: Docker container on GuruRMM server (172.16.3.30)
# docker-compose.yml
version: '3.8'
services:
guruconnect:
image: guruconnect-server:latest
ports:
- "8443:8443"
environment:
DATABASE_URL: postgres://guruconnect:${DB_PASS}@db:5432/guruconnect
JWT_SECRET: ${JWT_SECRET}
volumes:
- ./certs:/certs:ro
depends_on:
- db
Agent Deployment
Method 1: GuruRMM Agent Integration
- Bundle with GuruRMM agent installer
- Auto-start via Windows service
- Managed API key provisioning
Method 2: Standalone MSI Installer
- Separate install package
- Manual API key configuration
- Service registration
Monitoring and Logs
Server Logs
# View real-time logs
docker logs -f guruconnect-server
# Check error rate
grep ERROR /var/log/guruconnect/server.log | wc -l
Agent Logs
Location: C:\ProgramData\GuruConnect\Logs\agent.log
Key Metrics:
- Frame capture rate
- Encoding latency
- Network send buffer usage
- Connection errors
Session Metrics
Database Query:
SELECT
machine_id,
user_id,
AVG(duration_seconds) as avg_duration,
SUM(bytes_transferred) as total_data
FROM sessions
WHERE created_at > NOW() - INTERVAL '7 days'
GROUP BY machine_id, user_id;
Testing
Unit Tests
# Run all unit tests
cargo test
# Test specific module
cargo test --package guruconnect-agent --lib capture
Integration Tests
# Start test server
cargo run -p guruconnect-server -- --bind 127.0.0.1:8444
# Run agent against test server
cargo run -p guruconnect-agent -- --server ws://127.0.0.1:8444
# Dashboard tests
cd dashboard && npm test
Performance Testing
# Measure frame capture latency
cargo bench --package guruconnect-agent
# Network throughput test
iperf3 -c <server> -p 8443
Troubleshooting
Agent Cannot Connect
Check:
- Server URL correct?
wss://guruconnect.azcomputerguru.com - API key valid? Check GuruRMM admin panel
- Firewall blocking? Test:
telnet <server> 8443 - TLS certificate valid? Check browser:
https://<server>:8443/health
Logs:
Get-Content C:\ProgramData\GuruConnect\Logs\agent.log -Tail 50
Black Screen in Viewer
Common Causes:
- DXGI capture failed, no GDI fallback
- Encoding errors (check agent logs)
- Network packet loss (check quality)
- Agent service stopped
Debug:
# Check agent service
Get-Service GuruConnectAgent
# Test screen capture manually
.\guruconnect-agent.exe --test-capture
High CPU Usage
Possible Issues:
- Software encoding (VP9) on weak CPU
- Full-screen capture when dirty rects should be used
- Too high frame rate for network conditions
Solutions:
- Enable H264 hardware encoding (if GPU available)
- Lower quality preset
- Reduce frame rate to 15 FPS
Key References
RustDesk Source:
~/claude-projects/reference/rustdesk/
GuruRMM:
~/claude-projects/gururmm/ and D:\ClaudeTools\projects\msp-tools\guru-rmm\
Development Plan:
~/.claude/plans/shimmering-wandering-crane.md
Session Logs:
~/claude-projects/session-logs/2025-12-21-guruconnect-session.md
Integration with GuruRMM
Dashboard Integration
GuruConnect viewer will be embedded in GuruRMM dashboard:
// Example React component integration
import { GuruConnectViewer } from '@guruconnect/react';
function MachineDetails({ machineId }) {
return (
<div>
<h2>Machine: {machineId}</h2>
<GuruConnectViewer
machineId={machineId}
apiToken={userToken}
/>
</div>
);
}
API Integration
Start Session:
POST /api/sessions/start
Authorization: Bearer <jwt-token>
Content-Type: application/json
{
"machine_id": "abc-123-def",
"quality": "medium"
}
Response:
{
"session_id": "sess_xyz789",
"websocket_url": "wss://guruconnect.azcomputerguru.com/ws/sess_xyz789"
}
Roadmap
Phase 1: MVP (In Progress)
- Basic screen capture and viewing
- Mouse/keyboard input
- Simple quality control
Phase 2: Production Ready
- VP9 and H264 encoding
- Adaptive quality
- Connection recovery
- Performance optimization
Phase 3: GuruRMM Integration
- Embedded dashboard viewer
- Single sign-on
- Unified session management
- Audit integration
Phase 4: Advanced Features
- Session recording and playback
- Multi-monitor support
- Audio streaming
- Clipboard sync
Phase 5: Enterprise Features
- Permission management
- Session sharing (invite technician)
- Chat overlay
- File transfer
Project History
2025-12-21: Initial project planning and architecture design 2025-12-21: Build system setup, basic agent structure 2026-01-XX: Phase 1 MVP development ongoing
License & Credits
License: Proprietary (Arizona Computer Guru internal use)
Credits:
- Architecture inspired by RustDesk
- Built with Rust, Tokio, Axum
- WebRTC considered but rejected (complexity)
Support
Technical Contact: Mike Swanson Email: mike@azcomputerguru.com Phone: 520.304.8300
Status: Active Development - Phase 1 MVP Priority: Medium (supporting GuruRMM platform) Next Milestone: Complete dirty rectangle detection and input injection