v0.2.0
MultiSeat v0.2.0
Major update — ApolloVibe fork, security hardening, keyboard/mouse isolation, and several quality-of-life improvements.
Upgrade note: The API key is now always required. On first start after upgrading, a key is auto-generated at
C:\ProgramData\MultiSeat\api-key.txt. Read it withGet-Content "C:\ProgramData\MultiSeat\api-key.txt"and paste it into the dashboard Settings page. Set"ApiKey": "disabled"inappsettings.jsonto opt out on trusted networks.
What's new
ApolloVibe — new streaming backend
Switched from the unmaintained logabell/Apollo fork to vibesoftwarecoder/Apollo (ApolloVibe) — a clean rebase of the mic passthrough patches onto the latest ClassicOldSong/Apollo HEAD.
- Async NVENC encoding, improved frame timing, color matrix fixes, and AV1 support (all from upstream ClassicOldSong/Apollo HEAD)
stream_micmic passthrough retained (requires logabell/moonlight-qt-mic client)- Proper version string and branding; update check points to our fork
- Fixed multi-instance UUID isolation:
file_statewritten explicitly per seat so each seat has its ownsunshine_state.json
Keyboard/mouse session isolation
MultiSeatInputHook.dll is now built and deployed automatically by install-service.ps1 (requires MSYS2 UCRT64 at C:\msys64). Low-level WH_KEYBOARD_LL / WH_MOUSE_LL hooks route input to the correct seat session.
Moonlight pairing persistence
Pairing now survives seat teardown and re-provision — no more PIN re-entry when a seat is restarted. Apollo config directories are keyed by account name instead of a GUID.
Unpair Moonlight clients from the dashboard
Each seat card shows its paired clients and lets you remove individual clients or unpair all at once.
NVENC quality presets
Three presets selectable per seat:
- Latency — P1, no two-pass, lowest encode latency
- Balanced (default) — P4, quarter-res two-pass, spatial AQ
- Quality — P7, full-res two-pass, spatial AQ, higher VBV
Streaming Tips page
New /tips page in the dashboard covering client-side frame generation (Lossless Scaling, DLSS Swapper, AMD AFMF), network tuning, audio/mic setup, and HDR status.
Dashboard improvements
- Blue CONNECTED badge when a Moonlight client is actively streaming
- Provisioning step progress display
- Seat status colour accents
Security
- API key authentication now always enforced (was optional/bypassable with empty key)
- Account names validated against a strict whitelist at all API entry points
- Path traversal guard in Apollo config builder
- Shell metachar guard in junction creation
- Firewall rule descriptions no longer include account names
api-key.txtexcluded from git tracking
Bug fixes
- SudoVDA UUID detection fixed for RDP sessions (Apollo logs empty friendly name inside RDP — fall back to 1000 Hz refresh-rate heuristic)
- RDP trust dialog fully suppressed headlessly on every seat provision
- Junction cleanup on teardown no longer throws ("The parameter is incorrect")
- Slow service shutdown fixed (parallel teardown, longer stop timeout)
- Audio routing:
audiomode:i:1+ paired VAC device assignment - Mic default capture device set correctly inside seat session
Prerequisites
Same as v0.1.0 — see README Installation for the full list. The prerequisites script now downloads ApolloVibe v2026.4.30-multiseat.3 automatically.