MyWebScrcpy is a Go + WebCodecs Android mirroring and control service that works right in the browser with no client install, supporting H.264/H.265/AV1 decode, touch and keyboard control, and file management.
- v2026.10.28
- Published at
- 17h ago
- 8
- Stars
- 0
- Download
- Synced at
- 15h ago
Latest release
v2026.10.28Oct 27, 2026, 08:58 PMREADME
Project Overview
MyWebScrcpy puts an Android device's screen and controls inside a browser tab: the Go server pushes its embedded scrcpy-server to the device over ADB, video frames travel to the browser via WebSocket and render through WebCodecs hardware decoding, while touch and keyboard events are injected back. The client side needs zero installation, and a single binary embeds both the frontend assets and scrcpy-server.
| Item | Value |
|---|---|
| Form | Go single-binary service + browser frontend (Vue) |
| Codecs | H.264 / H.265 / AV1, WebCodecs hardware decode |
| Client | Chrome 94+, no client install needed |
| API | HTTP / WebSocket with a built-in OpenAPI listing |
| Device link | ADB (USB or network) |
Plug the phone into ADB, then mirror, tap and manage files right in the browser.
Core Capabilities
- Mirroring and control: click, drag, wheel, right-click-back, text injection and shortcuts; mobile browsers support touch, with one-tap rotate and fullscreen
- Player inspector: color picking (HEX/RGB with a 240px magnifier), UI Automator XML tree linked with XPath element location, and live foreground package/activity queries
- ADB terminal: a web shell on xterm.js with a real PTY, supporting Tab completion and arrow-key history
- File manager: browse shared storage
/storage/emulated/0with upload/download, move, rename, batch delete and undo - Controlled recording: record MP4 from the shared H.264 session, auto-stop from 1 minute to 8 hours, with device audio optional
- Big-screen monitoring: multi-device wall in small/medium/large layouts, with picture-in-picture and auto-reconnect
- Python Vision: a separate WebSocket lets Python subscribe to the video session and overlay recognition boxes and automated actions on the picture
Quick Deploy
git clone https://github.com/liuzhuogood/MyWebScrcpy.git
cd MyWebScrcpy
bash scripts/build.sh
./mywebscrcpyOpen http://localhost:8080 in the browser and click a device to mirror; mirroring, monitoring and file management live at /player, /dashboard and /files. On first macOS run, clear the unsigned-app quarantine with sudo xattr -rd com.apple.quarantine.
API and Integration
After startup, /api-docs.html lists all endpoints and /api/openapi.json provides the machine-readable catalog. Recording endpoints look like POST /api/recordings?serial=..., with matching routes for query, stop, download and delete.
Use Cases
- Frontend and automation engineers debugging real devices remotely
- Testers who need a UI inspector with XPath location
- A monitoring wall driving many devices from one host
- Demoing a phone screen without installing remote-control clients
Requirements
| Item | Requirement |
|---|---|
| Server | Go 1.25.5+ (build), ADB |
| Browser | Chrome 94+ (WebCodecs) |
| Device | USB debugging or network ADB enabled |
Notes
- ADB required: the device must be connected to the host via USB debugging or network ADB — this is not wireless casting
- Desktop shell in progress: the v1.20 Tauri wrapper is experimental; existing server usage is unchanged
- XML snapshots are static: UI Automator dumps are momentary, and self-drawn views may expose no nodes