This roadmap is not a contract and it is not the source of truth for current support.
Use docs/PRODUCT_CORE.md for the supported product definition, docs/SUPPORT_MATRIX.md for current surface maturity, and docs/microtasks.md for active execution work.
This document should describe future work, hardening targets, and deferred ambitions only.
Core principles (these NEVER change):
- Linux-first
- Low latency over convenience
- Minimal dependencies
- No custom cryptography
- Clarity over cleverness
Goal: End-to-end Linux ↔ Linux streaming that is boringly reliable.
-
Harden the existing Linux peer/client path
- VA-API decode path
- Basic frame presentation (SDL2 or DRM/KMS)
- Input capture + injection (keyboard/mouse)
- Clean connect/disconnect flow
-
Deterministic latency instrumentation
- Host-side timestamps per stage (capture → encode → send)
- Optional log mode: p50/p95/p99 latency over time (host loop)
- Client-side timestamps per stage (recv → decode → present)
- Debug overlay (FPS + latency) on client
-
Identity & pairing
- Stable device identity key storage
- Human-readable peer fingerprint (for tray/CLI)
- Document backup/restore of identity keys
- Update
ARCHITECTURE.mdwith client-side architecture - Add basic troubleshooting for:
- Client cannot decode
- Black screen / no frames
- Input not working
Goal: Make RootStream the obvious choice for NVIDIA users and add solid low-latency audio.
-
Direct NVENC support on host
- Use NVIDIA SDK directly (no VA-API shim)
- Latency-focused presets
- Fallback/disable on unsupported GPUs
-
NVDEC support on client (optional but ideal)
- Detect NVIDIA hardware decode
- Benchmark vs VA-API path
- ALSA-based audio capture on host
- Opus encoding (small frame size: 2.5–5 ms)
- Audio transport in protocol
- Client-side Opus decode and playback
- A/V synchronization (shared clock model)
- Option to disable audio entirely
- GPU-specific documentation (Intel/AMD/NVIDIA)
- Audio troubleshooting (desync, stutter, missing audio)
Goal: Handle real desktops, not just single-monitor lab setups.
-
Multi-monitor selection
- Enumerate outputs/CRTCs
- Choose which monitor to stream
- Document behavior on hotplug / unplug
-
Better host UX
- Tray UI for monitor selection
- Quick toggle for “stream full desktop” vs “single monitor”
-
Stability & polish
- Fuzz-ish testing of packet handling
- Crash-resilient service mode
Goal: Turn RootStream into a clean reference implementation and protocol that others can target.
-
Formalize wire protocol in
PROTOCOL.md- Message types (control, video, audio, input)
- Version negotiation
- Compatibility rules
-
Headless / automation mode
-
rootstream host --headless --card /dev/dri/cardX - Use cases: render nodes, CI visualizations, remote GPU workloads
-
-
Harden the existing Windows client path into a supportable client-only lane
- Decode + input only
- LAN/VPN use, no cloud
-
Experimental hooks (documented)
- Pre-encode/post-decode hooks
- Input filters (for power users only)
These are explicitly not priorities, to protect RootStream’s identity:
- User accounts, central servers, or any “cloud” control-plane
- In-browser/WebRTC client
- “Install-everything for everyone” GUI installer
- Generic remote desktop for every OS under the sun
RootStream focuses on:
Secure, low-latency, Linux-centric game streaming
with transparent architecture and minimal moving parts.