hstoct26.du.gtpg

Dhurta Host

Browser-based Windows remote desktop. Self-hosted, zero infrastructure cost, no paid services.

How it works

Browser  ──WebRTC P2P──▶  Windows PC
   │                           │
   └──── Cloudflare Tunnel ────┘
          (signaling only)

Stack

Layer Technology
Host Agent C# .NET 8, ASP.NET Core Kestrel, WinForms tray
Screen capture Windows.Graphics.Capture API, DXGI fallback (Phase 2)
Input injection Win32 SendInput (Phase 2)
Tunnel Cloudflare Tunnel (free)
STUN stun.l.google.com, stun.cloudflare.com (free, no account)
TURN relay Self-hosted coturn (Phase 2)
Frontend React 19, Vite 6, TypeScript, Tailwind CSS, Zustand
Auth Argon2id, JWT HS256, access keys (base32)
Storage SQLite (WAL mode)

Security

See docs/security.md for full details.

Phase status

Phase Description Status
1 Auth, signaling, access keys, tray ✅ Complete
2 Screen streaming (WGC + JPEG frames) Planned
3 WebRTC P2P upgrade Planned
4 Input forwarding Planned
5 TURN relay + reconnect Planned
6 Installer (Inno Setup) Planned

Quick start

Host Agent

cd host-agent/src/DhurtaHost
dotnet run

The agent starts Kestrel on port 8765, launches a Cloudflare Quick Tunnel, and shows the URL in a tray balloon tip.

Web frontend (dev)

cd web
npm install
npm run dev        # http://localhost:5173

Repository layout

dhurta-host/
├── host-agent/src/DhurtaHost/   # C# .NET 8 host agent
├── web/                         # React + Vite frontend
├── infrastructure/
│   ├── cloudflared/             # Named tunnel config template
│   └── coturn/                  # TURN relay config template
├── docs/
│   ├── security.md
│   ├── setup-windows.md
│   └── cloudflare-setup.md
└── .github/workflows/
    └── deploy-web.yml           # GitHub Pages deploy

License

MIT