Prerequisites
Before you begin, ensure you have:- Windows 10/11 (build 1903+) with a GPU (NVIDIA, AMD, or Intel)
- Visual Studio 2022 with C++ desktop development workload
- Node.js 18+ and npm
- Redis (download from redis.io)
- Git for cloning the repository
This quickstart uses
localhost for all components. For production deployment, see the Deployment Guide.Setup Steps
Install Redis
Start Redis server on the default port (6379):Leave this terminal window open. Redis is required for signaling server coordination.
Start the Signaling Server
Navigate to the Server directory and install dependencies:The signaling server will start on
ws://localhost:3002. Keep this terminal open.Start the Matchmaker Service
In a new terminal, start the matchmaker:The matchmaker will listen on
http://localhost:3000. This service handles host registration and client matching.Build and Run the Host
Open The host will:
DisplayCaptureProject.sln in Visual Studio 2022 and build the solution (x64, Debug or Release).Before running, ensure config.json is in the same directory as the executable. Use the default config or customize for your needs.Run the host:- Generate a unique Room ID (displayed in console)
- Register with the matchmaker
- Start capturing the target process (configured in
config.json) - Wait for client connections
Start the Client
In a new terminal, serve the client HTML:Open your browser to
http://localhost:8080Connect and Stream
In the browser client:
- Click “Find Match” to automatically discover the host
- The client will connect via WebRTC signaling
- Once connected, you’ll see the host’s screen streaming in real-time
- Use keyboard and mouse to interact with the remote session
Alternatively, you can manually enter the Room ID displayed by the host console.
Verify the Connection
Once connected, you should see:- Client Browser: Live video stream with low latency (under 50ms typical)
- Host Console: Connection status and performance metrics
- Performance Overlay: FPS, latency, and bitrate indicators in the client
Configuration
The defaultconfig.json provides sensible defaults for local testing. Key settings to adjust:
Target Process
Video Quality
- Lower
preset(p1-p7) = faster encoding, higher latency - Higher
bitrateStart= better quality, more bandwidth
Audio
processLoopback to capture only the target process audio (Windows 11+).
Troubleshooting
Client can't find host
Client can't find host
Possible causes:
- Matchmaker not running on port 3000
- Host hasn’t sent heartbeat to matchmaker
- Host status is “busy” instead of “idle”
WebRTC connection fails
WebRTC connection fails
Possible causes:
- Signaling server not running on port 3002
- Redis not running on port 6379
- Firewall blocking WebSocket connections
No video or audio
No video or audio
Possible causes:
- Target process not running
- GPU encoder not available
- Audio device not configured
High latency or stuttering
High latency or stuttering
Possible causes:
- CPU/GPU overload
- Network bandwidth insufficient
- Incorrect encoder preset
Next Steps
Now that you have a working setup:Architecture
Understand how components work together
Configuration
Explore advanced configuration options
Deployment
Deploy to production with Railway, Docker, or Kubernetes
API Reference
Learn about the Matchmaking and Signaling APIs