A high-performance, low-latency remote desktop solution using WebRTC for real-time streaming with AV1 hardware encoding.
SlipStream enables secure, low-latency screen sharing over local networks using modern web technologies. The server captures the host display using the Windows Graphics Capture API and encodes it with AV1 hardware acceleration (NVENC, QSV, or AMF). Clients connect via any modern web browser without plugins.
- AV1 Hardware Encoding - Leverages GPU encoders (NVIDIA NVENC, Intel QSV, AMD AMF) with software fallback
- Ultra-Low Latency - Optimized pipeline for sub-50ms end-to-end latency on local networks
- WebRTC Transport - Encrypted peer-to-peer streaming with automatic ICE negotiation
- System Audio - Captures and streams system audio via Opus codec
- Full Input Control - Complete mouse, keyboard, and touch input support
- Multi-Monitor - Dynamic monitor switching during active sessions
- Touch Gestures - Trackpad and direct touch modes with pinch-to-zoom
- Authentication - PIN-based authentication with rate limiting
- Windows 10/11 (64-bit)
- Visual Studio 2022 with C++ Desktop workload
- DirectX 11 compatible GPU
- vcpkg package manager
- Modern web browser with WebRTC support (Chrome, Firefox, Edge, Safari)
- Hardware video decoding recommended for best performance
+-------------------------------------------------------------------+
| HOST (Server) |
+-------------------------------------------------------------------+
| |
| +-------------+ +-------------+ +-----------------------+ |
| | Screen |--->| AV1 |--->| WebRTC | |
| | Capture | | Encoder | | Data Channel | |
| +-------------+ +-------------+ +-----------+-----------+ |
| | |
| +-------------+ +-------------+ | |
| | Audio |--->| Opus |----------------+ |
| | Capture | | Encoder | | |
| +-------------+ +-------------+ | |
| | |
| +-------------+ | |
| | Input |<----------------------------------+ |
| | Handler | |
| +-------------+ |
| |
+-------------------------------------------------------------------+
|
| DTLS/SRTP Encrypted
| Local Network
v
+-------------------------------------------------------------------+
| CLIENT (Browser) |
+-------------------------------------------------------------------+
| |
| +-------------+ +-------------+ +-----------------------+ |
| | WebRTC |--->| AV1 |--->| WebGL2 | |
| | Receive | | Decoder | | Renderer | |
| +-------------+ +-------------+ +-----------------------+ |
| |
| +-------------+ +-------------+ |
| | Audio |<---| Opus | |
| | Playback | | Decoder | |
| +-------------+ +-------------+ |
| |
| +-------------+ |
| | Input |---> (sent to server via WebRTC) |
| | Capture | |
| +-------------+ |
| |
+-------------------------------------------------------------------+
# Install vcpkg
git clone https://github.com/microsoft/vcpkg.git C:\vcpkg
cd C:\vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg integrate installbuild.batThe build process will:
- Install dependencies via vcpkg (libdatachannel, FFmpeg, Opus, etc.)
- Configure the project with CMake
- Build the Release executable
Output: build\bin\Release\SlipStream.exe
run.batOn first run, you'll configure:
- Username (3-32 alphanumeric characters)
- PIN (6 digits)
Configuration is saved to auth.json.
- Open a web browser on any device on the same network
- Navigate to
http://<HOST_IP>:6060 - Enter the server URL if not auto-detected
- Authenticate with username and PIN
{
"username": "admin",
"pin": "123456"
}Dependencies are automatically managed by vcpkg:
- libdatachannel (WebRTC)
- cpp-httplib (HTTP server)
- nlohmann-json (JSON parsing)
- opus (Audio codec)
- openssl (TLS/DTLS)
- ffmpeg (AV1 encoding)
The server hosts these files on port 6060:
| File | Description |
|---|---|
index.html |
Main application shell |
styles.css |
UI styling |
js/network.js |
WebRTC connection management |
js/renderer.js |
WebGL2 video rendering |
js/input.js |
Mouse, keyboard, touch handling |
js/media.js |
Video and audio decoding |
js/state.js |
Application state management |
js/ui.js |
Settings panel and controls |
- Click canvas - Capture mouse (pointer lock)
- ESC - Release mouse capture
- All keys - Passed through to host
- One finger drag - Move cursor
- Tap - Left click
- Long press + drag - Drag operation
- Two finger tap - Right click
- Two finger drag - Scroll
- Pinch - Zoom view
- Touch - Move cursor to touch position
- Tap - Left click
- Long press + drag - Drag operation
- NVIDIA NVENC - Lowest latency, best quality
- Intel QSV - Good latency, integrated GPU friendly
- AMD AMF - Good performance on AMD GPUs
- libsvtav1 - Fast software fallback
- libaom-av1 - Universal software fallback
- Use wired network connections when possible
- Select frame rate matching host display refresh rate
- Ensure GPU hardware encoding is active
- Client browser should use hardware video decoding
Cannot connect to server
- Verify server is running (console shows
[LIVE]when streaming) - Check firewall allows port 6060 (TCP) and 50000-50100 (UDP)
- Ensure devices are on the same network
Video not displaying
- Check authentication succeeded
- Verify browser supports AV1 decoding
- Try refreshing the page
vcpkg not found
- Set
VCPKG_ROOTenvironment variable - Or install vcpkg to
C:\vcpkg
Encoder initialization failed
- Update GPU drivers
- Verify DirectX 11 support
- Check FFmpeg codec availability
High latency
- Check network connection quality
- Reduce frame rate in settings
- Verify hardware encoding is active (check console output)
Choppy video
- Lower frame rate
- Check client CPU/GPU usage
- Ensure hardware video decoding is enabled in browser
- All WebRTC streams are encrypted with DTLS
- PIN-based authentication with rate limiting (3 attempts)
- Sessions are isolated per connection
- Designed for trusted local networks
build_installer.batCreates either:
- NSIS installer (.exe) if NSIS is installed
- Portable ZIP package otherwise
Business Source License (Personal-Online / No-Company) v1.1
See LICENSE.txt for full terms.
© 2025-2026 Daniel Chrobak