Skip to content

Commit 852af4a

Browse files
Merge pull request #78 from infinityabundance/codex/phase98-product-truth-pass
Define product core and support posture docs
2 parents 6c6c97b + fbce4db commit 852af4a

11 files changed

Lines changed: 803 additions & 130 deletions

README.md

Lines changed: 94 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -24,60 +24,53 @@
2424

2525
---
2626

27-
## What is RootStream?
27+
## Current Status
2828

29-
RootStream is a **lightweight, encrypted, peer-to-peer game streaming solution** designed specifically for Linux. Design goals include:
29+
RootStream currently supports one primary product path:
3030

31-
-**No accounts required** - Each device has a unique cryptographic identity
32-
-**No central servers** - Direct peer-to-peer connections
33-
-**Minimal compositor dependencies** - Uses kernel DRM/KMS directly when available
34-
-**Fewer permission popups** - Bypasses PipeWire/portal stack after initial video group setup
35-
-**Zero-configuration** - Share a QR code, instant connection
36-
-**Hardware accelerated** - VA-API (Intel/AMD) encoding when available
37-
-**Low memory footprint** - ~15MB baseline (varies by enabled features)
38-
-**Strong encryption** - Ed25519 + ChaCha20-Poly1305 (libsodium)
31+
- Linux host via `rootstream host`
32+
- Linux peer via `rootstream connect <code>`
33+
- direct peer-to-peer networking on a LAN or similarly controlled network
34+
- pairing/bootstrap via `rootstream --qr`, peer codes, and local discovery where available
3935

40-
## Why RootStream?
36+
Repository surfaces such as the KDE client, Windows client, web dashboard, Android, iOS, VR, and infrastructure code exist in-tree, but they are not the default supported product path today.
4137

42-
### The Problem
38+
Start with these truth sources:
4339

44-
Current Linux streaming solutions (Steam Remote Play, Parsec, Sunshine) suffer from:
40+
- [Product Core](docs/PRODUCT_CORE.md)
41+
- [Support Matrix](docs/SUPPORT_MATRIX.md)
42+
- [Core Path](docs/CORE_PATH.md)
4543

46-
| Issue | Steam | Parsec | Sunshine | **RootStream** |
47-
|-------|-------|--------|----------|----------------|
48-
| Requires account |||| **** |
49-
| PipeWire dependency |||| **** (bypasses) |
50-
| Permission dialogs | Constant | Sometimes | Sometimes | **Rarely¹** |
51-
| Compositor resilience | Low | Low | Low | **Higher²** |
52-
| Consumer GPU support | Limited³ ||| **Yes⁴** |
53-
| Stream encryption |||| **** |
54-
| Open source |||| **** |
44+
## Not Yet Supported As Defaults
5545

56-
¹ After initial video group membership setup
57-
² Uses kernel-stable DRM/KMS APIs (10+ year stability)
58-
³ NVFBC disabled on GeForce cards
59-
⁴ Intel/AMD via VA-API; NVIDIA via VDPAU wrapper
46+
Do not treat these as part of the current default supported path:
6047

61-
### The Solution
48+
- KDE as the primary desktop client
49+
- Windows as the primary peer platform
50+
- Android or iOS as supported client platforms
51+
- the React dashboard or optional web backend as the default management path
52+
- VR / Proton as part of the supported baseline experience
53+
- cloud-managed or account-based RootStream deployments
54+
- benchmark numbers as settled product guarantees
6255

63-
RootStream takes a **radically different approach**:
64-
```
65-
Traditional Stack (7+ layers, more failure points):
66-
┌─────────────────────────────────────────────┐
67-
│ App → Compositor → PipeWire → Portal → │
68-
│ → Permission Dialog → FFmpeg → Encoder │
69-
└─────────────────────────────────────────────┘
70-
Estimated: 30-56ms latency | 500MB memory
56+
## What is RootStream?
7157

72-
RootStream Stack (3 layers, kernel-stable APIs):
73-
┌─────────────────────────────────────────────┐
74-
│ DRM/KMS → VA-API → ChaCha20-Poly1305 → UDP │
75-
└─────────────────────────────────────────────┘
76-
Target: 14-24ms latency | ~15MB memory baseline
77-
```
58+
RootStream is a Linux-first native peer-to-peer game streaming project. The repository is broader than the current support commitment, so the most important distinction is between what exists in code and what the project currently supports.
7859

79-
> **Note**: Performance numbers are design targets. Actual performance varies by hardware,
80-
> network conditions, and system configuration. See "Reality vs. Claims" section below.
60+
What is evidence-backed today:
61+
62+
- no required account or hosted control-plane in the supported core path
63+
- native Linux host and peer entrypoints in the root executable
64+
- libsodium-based cryptographic primitives
65+
- QR or peer-code bootstrap for the native flow
66+
- local discovery and backend fallback code in the native runtime
67+
68+
What is not yet a top-level support commitment:
69+
70+
- a benchmark-backed latency or memory proof set
71+
- a clean NVIDIA-first product story
72+
- KDE as the default desktop client
73+
- web, mobile, VR, or cloud-managed deployment as equal first-class product lanes
8174

8275
---
8376

@@ -96,45 +89,39 @@ Target: 14-24ms latency | ~15MB memory baseline
9689
9790
### 🎮 Optimized for Gaming
9891

99-
- **Low Latency Target** - 14-24ms end-to-end on LAN (varies by hardware and network)
100-
- **High Framerate Support** - Target 60 FPS at 1080p, 30 FPS at 4K (depends on encoder capability)
101-
- **Hardware Acceleration** - VA-API (Intel/AMD) and optional NVENC fallback (NVIDIA)
102-
- **Adaptive Quality** - Prioritizes framerate consistency
103-
- **Input Injection** - Virtual keyboard/mouse via uinput (requires video group membership)
92+
- **Linux-first native runtime** - Host and peer flows exist in the root executable
93+
- **VA-API acceleration path** - Intel/AMD Linux acceleration story is the clearest evidence-backed path today
94+
- **Adaptive and fallback-oriented design** - Multiple capture, discovery, audio, and encode paths exist in the native runtime
95+
- **Input forwarding** - Native input paths exist for the Linux flow
96+
- **Performance targets exist** - Benchmark-backed proof is still being tightened; treat headline numbers as targets rather than settled guarantees
10497

10598
### 🎥 Stream Recording (Phase 18)
10699

100+
- **Current maturity: Preview** - Recording code and CLI exposure exist, but recording is not yet the primary supported product story
107101
- **Multi-Codec Support** - H.264 (fast, universal), VP9 (better compression), AV1 (best compression)
108102
- **Quality Presets** - Fast, Balanced, High Quality, and Archival modes
109103
- **Container Formats** - MP4 (universal compatibility), Matroska/MKV (advanced features)
110104
- **Audio Options** - Opus passthrough (no re-encoding) or AAC encoding
111105
- **Smart Storage** - Automatic disk space monitoring and cleanup of old recordings
112106
- **Instant Replay** - Save the last N seconds of gameplay (buffer feature)
113107

114-
> **Note**: Recording feature requires FFmpeg libraries. See `src/recording/README.md` for details.
115-
116-
### 💡 Actually Easy to Use
108+
> **Note**: Recording feature requires FFmpeg libraries. See `src/recording/README.md` for details and treat it as preview rather than the supported default path.
117109
118-
1. **Install RootStream**
119-
```bash
120-
make && sudo make install
121-
```
122-
123-
2. **Show your QR code**
124-
```bash
125-
rootstream --qr
126-
```
110+
### Current Core Workflow
127111

128-
3. **Scan on another device**
129-
- Instant pairing, no typing 44-character keys
112+
1. Build the native Linux binary.
113+
2. Start the host with `rootstream host`.
114+
3. Generate/share host identity with `rootstream --qr`.
115+
4. Connect from another Linux machine with `rootstream connect <peer_code>`.
130116

131-
4. **Auto-connect on LAN**
132-
- mDNS discovery finds peers automatically
117+
See [docs/CORE_PATH.md](docs/CORE_PATH.md) for the canonical path and [docs/SUPPORT_MATRIX.md](docs/SUPPORT_MATRIX.md) for adjacent surfaces that are preview or experimental.
133118

134119
---
135120

136121
## Installation
137122

123+
> **Support note**: The current supported product core is Linux-first. Intel/AMD VA-API is the clearest supported acceleration path today. NVIDIA-related instructions are kept here because the repository contains NVIDIA-oriented code and package assumptions, but they should not be read as a settled support guarantee.
124+
138125
### Arch Linux
139126

140127
#### Dependencies by GPU
@@ -183,7 +170,7 @@ vainfo
183170
**Expected output:**
184171
- **Intel**: `iHD driver` or `i965 driver`
185172
- **AMD**: `Radeon` or `AMD Radeon`
186-
- **NVIDIA**: `VDPAU backend` or `nvidia`
173+
- **NVIDIA**: output varies by driver stack; treat NVIDIA results as less settled than the Intel/AMD VA-API path
187174

188175
---
189176

@@ -247,7 +234,7 @@ sudo dnf install gcc make libdrm-devel libva-devel gtk3-devel \
247234

248235
### First Time Setup
249236

250-
1. **Generate your identity**
237+
1. **Generate host identity material**
251238
```bash
252239
rootstream --qr
253240
```
@@ -259,23 +246,35 @@ sudo dnf install gcc make libdrm-devel libva-devel gtk3-devel \
259246
╚══════╝
260247
```
261248

262-
2. **Share with another device**
263-
- Scan the QR code with your phone/tablet
264-
- Or copy/paste the text code
249+
2. **Start the Linux host**
250+
```bash
251+
rootstream host
252+
```
253+
254+
3. **Connect from the Linux peer**
255+
```bash
256+
rootstream connect <peer_code>
257+
```
265258

266-
3. **That's it!**
267-
- Devices auto-connect when on same network
268-
- Or manually: `rootstream connect <peer_code>`
259+
4. **Optional convenience**
260+
- mDNS discovery may help on compatible local networks
261+
- peer-code sharing remains the clearest documented bootstrap path
269262

270263
### Daily Use
271264

272-
**Tray App (Recommended)**
265+
**Canonical supported path**
266+
```bash
267+
rootstream host
268+
rootstream --qr
269+
rootstream connect kXx7Y...@gaming-pc
270+
```
271+
272+
**Alternate Linux tray entrypoint**
273273
```bash
274274
rootstream
275275
```
276-
- System tray icon shows status
277-
- Left-click: Show your QR code
278-
- Right-click: Menu (connect, view peers, quit)
276+
- Available when GUI dependencies are present
277+
- Not the canonical path documented in `docs/CORE_PATH.md`
279278

280279
**Command Line**
281280
```bash
@@ -321,6 +320,7 @@ rootstream --replay-save last30s.mp4 # Save last 30 seconds
321320

322321
**Troubleshooting**
323322
- See `docs/TROUBLESHOOTING.md` for decode, black screen, input, and dependency diagnostics.
323+
- See `docs/SUPPORT_MATRIX.md` before treating alternate surfaces as supported.
324324

325325
**Identity Backup & Restore**
326326
RootStream stores identity keys in `~/.config/rootstream/`:
@@ -517,7 +517,7 @@ are validated vs. aspirational design targets.
517517
518518
- **Compositor crash resilience**: DRM/KMS bypasses compositor in theory, but not extensively tested
519519
520-
- **NVIDIA support**: NVENC backend exists but VDPAU wrapper performance not benchmarked
520+
- **NVIDIA support**: NVIDIA-oriented paths exist, but the repository does not yet present a clean benchmark-backed or support-committed NVIDIA story
521521
522522
#### 🎯 Aspirational / Not Fully Validated
523523
@@ -528,7 +528,7 @@ are validated vs. aspirational design targets.
528528
- **Security audit**: While using audited libraries (libsodium), RootStream's implementation
529529
has not undergone independent security audit
530530
531-
- **Cross-platform**: Currently Linux-only; Windows/macOS support is future work
531+
- **Cross-platform**: The supported core is Linux-to-Linux. A Windows client build path exists as preview; broader cross-platform support remains future work
532532
533533
- **Perfect forward secrecy**: Session key derivation uses ECDH, but no explicit ephemeral
534534
key rotation per-packet
@@ -624,26 +624,29 @@ A: They can intercept encrypted packets, but cannot decrypt without your private
624624
A: Only for internet streaming. LAN works without port forwarding.
625625

626626
**Q: Works over internet?**
627-
A: Yes, but you need to forward UDP port 9876. Consider VPN (Tailscale, ZeroTier) for easier setup.
627+
A: It may work with your own routing or VPN setup, but the current supported path is documented around LAN or similarly controlled private-network use.
628628

629629
**Q: Why not just use Steam Remote Play?**
630-
A: Steam requires their servers, uses PipeWire (breaks often), NVFBC disabled on consumer GPUs, no encryption, and constant permission dialogs on Wayland.
630+
A: RootStream is aimed at users who want a Linux-first native P2P path without required accounts. If you need a broader or more polished cross-platform product today, use the tool that fits your environment.
631631

632632
**Q: Will this work on my GPU?**
633-
A: Intel/AMD: Yes (VA-API). NVIDIA: Via VDPAU wrapper (slower but works). Run `vainfo` to check.
633+
A: Intel/AMD VA-API is the clearest supported acceleration story today. NVIDIA-related code exists, but the support story is still being cleaned up; see `docs/SUPPORT_MATRIX.md`.
634634

635635
**Q: Can I stream to Windows/Mac/Android?**
636-
A: Not yet. Linux-only currently. Cross-platform client planned.
636+
A: The supported core today is Linux-to-Linux. A Windows client build path exists as preview; Android, iOS, web, and VR remain outside the primary supported path.
637637

638638
**Q: Is this better than Parsec?**
639-
A: For Linux-to-Linux: Yes (lower latency, no account, encrypted). For other platforms: Use Parsec for now.
639+
A: Different goal. RootStream currently prioritizes a Linux-first native P2P path over broad platform coverage.
640640

641641
---
642642

643643
## Documentation
644644

645645
For more detailed information, see our documentation:
646646

647+
- **[Product Core](docs/PRODUCT_CORE.md)** - Supported product definition and non-goals
648+
- **[Support Matrix](docs/SUPPORT_MATRIX.md)** - Supported, preview, experimental, and roadmap surfaces
649+
- **[Core Path](docs/CORE_PATH.md)** - Canonical Linux host/peer workflow and checkpoints
647650
- **[User Guide](docs/user-guide.md)** - Complete usage instructions, installation steps, and troubleshooting
648651
- **[API Reference](docs/api.md)** - Full C API documentation with examples
649652
- **[Architecture](docs/architecture.md)** - Technical deep-dive into protocol, security model, and internals
@@ -701,9 +704,9 @@ including integration with GitHub Copilot, Claude, and ChatGPT.
701704

702705
## Clients
703706

704-
### KDE Plasma Native Client (Recommended)
707+
### KDE Plasma Client (Preview)
705708

706-
RootStream now features a **native KDE Plasma Qt/QML client** for the best Linux desktop experience:
709+
A separate KDE Plasma Qt/QML client exists in-tree:
707710

708711
```bash
709712
cd clients/kde-plasma-client
@@ -713,15 +716,13 @@ make -j$(nproc)
713716
sudo make install
714717
```
715718

716-
**Features:**
717-
- Native Qt 6 / QML interface
718-
- KDE Plasma integration
719-
- Hardware-accelerated decoding (VA-API)
720-
- PulseAudio/PipeWire audio support
721-
- AI logging mode for debugging
722-
- Comprehensive settings management
719+
Current status:
720+
721+
- visible desktop client target with its own build system
722+
- not the canonical supported client path
723+
- subtree README still marks several core runtime areas as in progress
723724

724-
See **[clients/kde-plasma-client/README.md](clients/kde-plasma-client/README.md)** for complete documentation.
725+
See **[clients/kde-plasma-client/README.md](clients/kde-plasma-client/README.md)** for subtree-specific details, and see **[docs/SUPPORT_MATRIX.md](docs/SUPPORT_MATRIX.md)** before treating it as a supported default.
725726

726727
## Contributing
727728

docs/ARCHITECTURE.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# RootStream Technical Architecture
22

3+
This document explains subsystem structure and intended technical boundaries. It is not the source of truth for support status, roadmap scope, or current execution progress.
4+
5+
Use these documents for neighboring questions:
6+
7+
- Support status: [`docs/SUPPORT_MATRIX.md`](SUPPORT_MATRIX.md)
8+
- Supported product scope: [`docs/PRODUCT_CORE.md`](PRODUCT_CORE.md)
9+
- Current execution work: [`docs/microtasks.md`](microtasks.md)
10+
- Claims evidence: [`docs/audits/claims_audit.md`](audits/claims_audit.md)
11+
312
## Design Philosophy
413

514
RootStream is built on one core principle: **Use the kernel APIs directly**. Every abstraction layer adds latency, complexity, and failure points. We bypass them all.
@@ -45,7 +54,7 @@ UDP socket
4554
- Uses kernel APIs (stable for 10+ years)
4655
- Reduced permission requirements (video group membership)
4756
- Reduced compositor dependencies
48-
- Target latency: 14-24ms (varies by hardware; see Performance section)
57+
- Latency targets exist, but benchmark-backed proof belongs in dedicated benchmark and performance docs rather than this architecture summary
4958

5059
## Component Details
5160

@@ -104,10 +113,10 @@ munmap(pixels, size);
104113
**What is VA-API?**
105114
Video Acceleration API - hardware video encoding/decoding interface.
106115
107-
**Supported Hardware:**
116+
**Current acceleration codepaths in tree:**
108117
- Intel: All modern integrated + discrete GPUs
109118
- AMD: AMDGPU driver (GCN 1.0+)
110-
- NVIDIA: Via VDPAU wrapper (lower performance)
119+
- NVIDIA: NVIDIA-oriented code exists in-tree, but the current public support story is still being reconciled
111120
112121
**How It Works:**
113122
```c

0 commit comments

Comments
 (0)