Why
GPUs are expensive and idle most of the day. The idea: make a gaming PC rentable over the open internet — securely, with real session lifecycle — built layer by layer to learn the systems side properly.
What works today
- Streaming pipeline — Sunshine (host) ↔ Moonlight (client) video/input streaming over a WireGuard tunnel, end to end.
- Host agent — a Rust Windows service that launches and terminates games on command, verifies the right window actually appeared, and runs a disconnect watchdog — spawning from Session 0 into the user session via
CreateProcessAsUser, with a helper binary just to enumerate user-desktop windows from SYSTEM context. - Coordinator backend — Rust (axum + tokio + SQLx/SQLite) on AWS, speaking WebSocket to the agent and HTTP to operator tooling. Replaced an earlier Node prototype.
Next on the roadmap: renter-facing API and session ownership, multi-tenant lifecycle, billing, and a renter client.
Architecture
- ClientMoonlight, anywhere on the internet
- BackendRust on AWS — sessions, commands
- TunnelWireGuard 10.0.0.0/24
- AgentRust Windows service on the gaming PC
- StreamSunshine → video back to client
The interesting engineering is in the corners: making a SYSTEM-context Windows service reliably start a game into the logged-in user's session, proving the game actually launched, and tearing everything down safely when a renter disconnects mid-session.