← All apps Side project

lendmypc

A personal cloud-gaming platform: rent out a Windows gaming PC over the internet, on demand — video and input streaming coordinated by a Rust backend on AWS talking to an agent on the gaming machine.

Role
Solo — design, systems, infra
Platform
Rust · Windows · AWS · WireGuard
Status
In development — core pipeline working
Links
Source private — walkthrough on request

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.

Stack

RustTokioAxumSQLx / SQLite WebSocketsWireGuardWindows services Sunshine / MoonlightAWS