# LinkAndroid: An Electron Desktop Client for ADB, Scrcpy and Python Automation

> LinkAndroid is an Electron, Vue 3 and TypeScript desktop app that wraps ADB and scrcpy into a GUI for mirroring, file management, shell access and scheduled Python tasks. It is aimed at people who want scrcpy control without typing scrcpy commands, and it pays for that convenience with a heavier runtime and a download-only install.

**modstart-lib/linkandroid** — Link Android and PC easily! 全能手机连接助手！

- Repository: https://github.com/modstart-lib/linkandroid
- Website: https://linkandroid.com
- Stars: 2,614 · Forks: 223
- Language: TypeScript
- License: Apache-2.0
- Published: 2026-09-28 · Updated: 2026-09-28 · Language: en
- Canonical page: https://hysenlabs.com/projects/modstart-lib-linkandroid

## What LinkAndroid actually replaces

The project describes itself as an all-in-one Android phone connection assistant, built on Electron with TypeScript and Vue 3. The problem it targets is fragmentation of the desktop Android workflow. Mirroring, screen recording, file transfer, APK installation, log inspection and shell commands normally mean four or five separate tools with different flags and different connection handling. LinkAndroid puts them behind one device list.

The audience is not Android platform engineers. It is developers, QA testers and support staff who already know what ADB is but do not want to keep a terminal open next to a file manager. The README lists device grouping and multi-device connection, which points at the same person: someone testing the same build on two or three handsets and switching between them repeatedly.

## The Electron shell, the ADB layer and the HTTP server

The repository layout tells you most of the architecture. There is an electron/ directory for the main process, a page/ directory for the renderer, and src/ for shared TypeScript. The package.json main field points at dist-electron/main/index.js, and the dev script runs vite, which starts the Vite dev server and the Electron window together. The debug block sets VITE_DEV_SERVER_URL to http://127.0.0.1:3344/, so the renderer talks to a local dev server during development.

Screen mirroring is delegated to scrcpy rather than reimplemented. The README credits scrcpy for low-latency mirroring and lists reverse control, an OTG mode that turns the PC into a keyboard and mouse emulator, and a camera mirroring mode with selectable resolution and frame rate. Device discovery covers four paths: USB, QR-code wireless pairing, a six-digit pairing code, and manual IP:port entry, plus mDNS discovery on the local network.

Automation is the part that is not just a scrcpy wrapper. Tasks are written in Python and can be scheduled with Cron expressions, run against multiple devices, and triggered remotely. That remote trigger is an HTTP server on port 53070 with Bearer Token authentication and five documented endpoints: POST /api/devices, POST /api/task/list, POST /api/task/get, POST /api/task/run and POST /api/task/history. The run endpoint accepts an optional deviceId and falls back to the first online device when it is omitted. That fallback is convenient for a single-device setup and a source of surprise in a lab with several phones attached.

## Installing LinkAndroid and running a first task

There are two install paths. For normal use, the README says to download the installer for Windows, macOS or Linux from linkandroid.com and run it. For development, the README states the project has only been tested under Node.js 20, so match that version before starting.

Clone the repository and install dependencies:

```bash
git clone https://github.com/modstart-lib/linkandroid.git
cd linkandroid
npm install
```

Then start the development mode, which the README says launches the Electron window automatically:

```bash
npm run dev
```

On macOS the Makefile wraps this with a process kill and an environment init script, which is worth using if a previous Electron instance is still holding the port:

```bash
make dev
```

Once the window is open, connect a device over USB. The README describes USB as plug-and-play, so the device should appear in the device list without further configuration. From there, the mirror button opens the scrcpy view and the ADB Shell panel opens a terminal against the selected device. To build a distributable rather than run from source, the README documents npm run build for a full electron-builder package and npm run build:preview for a Vite build with no packaging.

## Where LinkAndroid is the wrong tool

The install path is the first constraint. The README points every platform at the download page and does not document a package-manager route such as Homebrew, winget or a distribution repository. On Linux that matters: scrcpy ships in most distributions, and installing LinkAndroid means fetching a package from a website instead of from the system's own repositories.

The second constraint is the runtime. An Electron application carries a full browser engine. The README does not publish a package size, but the framework choice is stated plainly in the badge, and that choice is what makes the cross-platform GUI possible. If your only need is a mirror window on one machine, upstream scrcpy is a smaller dependency with fewer layers between you and ADB.

The third is the HTTP API. It is a local server with Bearer Token authentication, and the README does not describe TLS, IP allowlisting or a bind-address option. Anyone exposing port 53070 beyond localhost is making a decision the documentation does not cover. The README also does not document a rollback procedure for the packaged application, so plan upgrades around the changelog.md file in the repository root rather than assuming an in-app downgrade path.

## LinkAndroid compared with Escrcpy and plain scrcpy

Escrcpy appears in the related search data and is the closest comparison: it is also a GUI front end for scrcpy. The difference visible in this repository is scope. LinkAndroid bundles file management, APK installation and uninstallation, a Cron-scheduled Python task runner, an HTTP API and AI model configuration on top of mirroring. That is a broader surface, and it means more of the application is maintained by this project rather than by the scrcpy authors.

Plain scrcpy is the opposite trade. It does one thing, starts from a command line, and has no task scheduler, no file browser and no REST endpoints. If your workflow already lives in shell scripts, scrcpy plus adb plus a file sync tool covers the same ground with less to install. LinkAndroid earns its place when the same operations need to be handed to someone who will not open a terminal, or when the Cron task runner replaces a set of ad hoc scripts.

## Licence and the cost of keeping up

The project is licensed under Apache-2.0, and package.json carries the same identifier. That is a permissive licence, but note that the repository is marked private in package.json, which concerns publishing to npm and does not restrict use of the source under the licence file. Because mirroring is delegated to scrcpy, the licence and update cadence of that upstream project also affect what you get. The README does not state which scrcpy version is bundled.

On maintenance, the last push to the default branch was on 2026-09-18, the same day as the v2.3.0 release, with v2.2.0 on 2026-09-11 and v2.1.0 on 2026-08-03. Releases are frequent, and the repository is not archived. The version in package.json is 2.4.0-beta, which is ahead of the published v2.3.0 release, so the default branch carries unreleased work. The Makefile exposes a version bump target, make update-version VERSION=2.3.0, which is the project's own mechanism for keeping the version string consistent. Upgrading means downloading a new package and re-checking your task scripts against changelog.md, since the README does not describe a migration procedure between versions.

## Conclusion

Adopt LinkAndroid if you want scrcpy-grade mirroring plus file, app and shell management in one window, and if you are willing to install from the packages at linkandroid.com rather than build from source. Skip it if you only need a single scrcpy session on Linux, where the upstream binary is smaller and has fewer moving parts, or if you need a documented rollback path, because the README does not describe one. Before committing, confirm that your device exposes wireless debugging for the QR and pairing-code flows, that port 53070 is free on the machine that will run the HTTP API, and that Node.js 20 is available if you intend to build from source.

## FAQ

### What is LinkAndroid used for?

It connects an Android phone to a PC over USB or Wi-Fi and provides screen mirroring and reverse control through scrcpy, screen capture and MP4 or GIF recording, file and app management, an ADB Shell terminal, and Python task automation that can run on a Cron schedule.

### How do I install LinkAndroid on Windows, macOS or Linux?

The README directs all three platforms to the download page at linkandroid.com for an installer. Building from source requires cloning the repository, running npm install, and then npm run dev, and the README states the project has only been tested under Node.js 20.

### Does LinkAndroid expose an API for remote control?

Yes. The README documents a built-in HTTP server on port 53070 with Bearer Token authentication and endpoints for listing devices, listing and fetching tasks, running a task, and reading task history. The run endpoint accepts an optional deviceId and otherwise selects the first online device.

### Is LinkAndroid the same as scrcpy?

No. LinkAndroid uses scrcpy for the mirroring layer, as the README states, and adds a graphical device manager, file and app management, an ADB Shell panel, a Python task runner and an HTTP API around it.

## Sources

- [License: Apache-2.0](https://github.com/modstart-lib/linkandroid/blob/main/LICENSE)
- [modstart-lib/linkandroid on GitHub](https://github.com/modstart-lib/linkandroid)
- [Project website](https://linkandroid.com)
- [README](https://github.com/modstart-lib/linkandroid/blob/main/README.md)
- [Releases](https://github.com/modstart-lib/linkandroid/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/modstart-lib-linkandroid
