mattxslv / childstream
git clone https://github.com/mattxslv/childstream.git
Stream games from a second Windows desktop while you keep using your PC - via Windows child sessions + Sunshine
—
stars, 24h
—
stars, 7 days
+79
stars, 30 days · #2,835
79
★ total
8
forks · 1 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageC#
LicenseMIT
Created2026-09-22 (28d ago)
Last push28d ago
Watchers1
OwnerUser
Links
README excerpt
# ChildStream **Stream games from a second Windows desktop while you keep using your PC — free, open, no license unlocks.** ChildStream is a proof of concept that replicates the core idea of multiseat streaming tools (like Duo) using only documented Windows features: - A **child session** — a second, fully independent Windows logon session created via the Win32 `WTSEnableChildSessions` API and the RDP ActiveX control's `ConnectToChildSession` property - A portable **Sunshine** instance running *inside* that session on its own ports - Any **Moonlight** client (Artemis on Android works great) connecting to it Result: your phone/tablet/TV streams a game from the second desktop at up to ~120 fps, while the physical desktop stays fully usable at its native refresh rate (verified 143 Hz on the host while streaming 2800×1272 @ 120 fps). [code] ## Requirements - Windows 10/11 **Pro** (tested on Windows 11 Pro 25H2) - A GPU with a hardware encoder (NVENC / AMF / QSV) - .NET Framework 4.x (preinstalled on Windows) - A password-capable Windows account (child session logon uses `MACHINE\user` + password; if you use a Microsoft account with Windows Hello only, allow password sign-in) ## Setup [code] The script: 1. Compiles `ChildStream.exe` from source (csc, no build tools needed) 2. Enables child sessions (`WTSEnableChildSessions`) 3. Allows RDP connections (child sessions are loopback RDP) 4. Raises the session compositor rate (`DWMFRAMEINTERVAL = 8` → ~120 fps) 5. Downloads portable Sunshine and configures it on base port **48989** (coexists with an existing host like Apollo/Vibepollo on 47989) 6. Adds a firewall rule + startup hook that auto-starts Sunshine **only inside child sessions** 7. Creates a desktop shortcut Then: 1. Launch **Child Session** from the desktop 2. Enter your Windows password once (stored DPAPI-encrypted, machine-local) 3. Set Sunshine web UI credentials: `Sunshine\Sunshine\sunshine.exe --creds ` 4. Pair Moonlight/Artemis with ` :48989` (PIN via `https:// :48990`) 5. Play ## Usage notes - **Keep ChildStream running while streaming** — minimize it to the tray. The child session's display exists only while the viewer is attached; closing the app breaks capture until you reconnect (it auto-reconnects on relaunch). - The session itself survives viewer disconnects — games keep running. - To fully end the session: sign out from inside it. - If your Microsoft account password is rejected, log on as `MACHINE\username` (the launcher does this automatically). ## Limitations (vs. commercial tools) - One child session max (Windows limitation), same user as the console session - Refresh limited by the RDP compositor (~60–125 fps depending on build; `DWMFRAMEINTERVAL` tweak required) - No per-session HDR - A viewer connection must stay attached (commercial tools ship a custom indirect display driver to avoid this) ## Uninstall - Delete the repo folder, the desktop shortcut, and `C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\chil