Ws-scrcpy

ws-scrcpy is a web-based client for Genymobile/scrcpy, allowing you to mirror and control Android (and experimental iOS) devices directly through a web browser using WebSockets. Core Features

Browser-Based Control: Eliminates the need for a desktop application by using a browser to stream video and send input events (mouse, keyboard, touch).

Multiple Players: Supports several decoding methods including Mse Player (HTML5 Media Source Extensions), Broadway.js (software decoding via WebAssembly), and WebCodecs.

Cross-Device Support: Primarily built for Android (5.0+), but also includes components like ws-qvh for experimental iOS screen streaming and control.

Server Architecture: Operates as a Node.js server that interacts with the adb executable on the host machine. Technical Requirements

To run a self-hosted instance, your environment typically needs:

Server Side: Node.js (v10+), node-gyp, and the adb executable added to your system's PATH. ws-scrcpy

Client Side: A modern web browser supporting WebSockets, WebWorkers, and WebAssembly.

Device Side: Android 5.0+ with USB Debugging enabled in Developer Options. Deployment & Community Status

While the original project by NetrisTV has seen reduced activity, the community has maintained various forks and deployment options: Updated ws-scrcpy with docker, and few updated for 2025

This is a comprehensive, deep-dive guide into ws-scrcpy.

While the original scrcpy is the industry standard for high-performance mirroring, it is a command-line tool. ws-scrcpy (Websocket scrcpy) takes that core technology and wraps it in a web interface, allowing you to control your Android device from a browser.

This guide covers architecture, installation (Docker vs. Native), advanced configuration, security hardening, and troubleshooting. ws-scrcpy is a web-based client for Genymobile/scrcpy ,


6. Keyboard Mapping

Full keyboard pass-through (including media keys, Ctrl, Alt, and special characters) works seamlessly.

1. Remote Device Lab for QA Teams

Set up a Raspberry Pi with a USB hub and 4 Android phones. Run ws-scrcpy on the Pi, expose it via Nginx reverse proxy with basic authentication. Your QA team can access the lab from any browser.

4. Kiosk Management

Manage a fleet of Android-based kiosks or digital signage devices from a central web dashboard.

Option B: Tailscale / ZeroTier

Run ws-scrcpy on a VPN network. Only devices on your private VPN can access it.

Method B: Native (Node.js)

Use this method if you want to modify the source code or if Docker isn't an option.

  1. Clone the Repository:

    git clone https://github.com/NetrisTV/ws-scrcpy.git
    cd ws-scrcpy
    
  2. Install Dependencies: This project relies heavily on build tools for video decoding.

    npm install
    
  3. Configuration (First Run): The server configuration defaults are usually fine, but you can specify environment variables (see Section 6).

  4. Build the Frontend:

    npm run build
    
  5. Run the Server:

    npm start
    

    By default, this listens on port 8000.

Option 1: Run with Docker (Recommended)

docker run -it --rm \
  -p 8000:8000 \
  -v /dev/bus/usb:/dev/bus/usb \
  --privileged \
  ghcr.io/netristv/ws-scrcpy:latest

Then open http://localhost:8000 in your browser.