Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

kunkundi/crossdesk

Productivity & Utilities

Cross-platform remote desktop for controlling computers from desktop, browser, mobile, or terminal clients.

4,771
477
C++
NOASSERTION
2 years old

What CrossDesk does

CrossDesk is a remote desktop tool that runs on Windows, macOS, and Linux as both controller and controlled host, with browser, iOS, Android, and terminal clients for remote access. Device-to-device sessions can be established through a 9-digit device ID via a signaling server, or directly over LAN by IP and port without cloud signaling. It builds on the MiniRTC project and supports self-hosting of signaling and TURN relay services.

Beyond simple screen sharing, the desktop client includes multi-display switching, H.264/AV1 hardware codecs, remote audio, text clipboard sync, two-pane file transfer, and a DeskHub "desktop wall" for previewing and controlling multiple machines, including group control and bulk file distribution. A terminal CLI renders remote desktops as ANSI or pixel graphics, and an MCP service lets compatible agents observe and operate a remote machine with live monitoring and human takeover.

Quick start

  1. Install CrossDesk on the computer you want to control. Choose the package for your OS and CPU architecture from the official site or GitHub Releases. macOS users must grant screen recording and accessibility permissions on first launch.
  2. In the controlled desktop, switch to ID connection mode and wait for the server connection status. Note the local device ID and connection password shown on screen.
  3. On another computer, enter the 9-digit ID, click connect, and enter the displayed password. Use the native mobile app or the web client if you prefer.
  4. For LAN access, switch both machines to IP direct mode, enter the peer's IP:port (default port 52888), and supply the 6-character alphanumeric password. No external network is required.

Terminal CLI

The CLI is available from npm and needs Node.js 22+. Install it globally and connect by device ID:

npm install -g @chunkdash/crossdesk-cli@latest
crossdesk-cli doctor --json
crossdesk-cli 123456789

Replace 123456789 with the target device ID. The client defaults to read-only and muted; press c to enable keyboard and mouse control. Use --renderer kitty or --renderer sixel for pixel output in terminals that support those protocols. The CLI does not currently support IP direct connection, audio, file transfer, clipboard sync, or trusted-device authentication.

Constraints

  • Windows requires Windows 10+ x64. macOS requires 14.0+ with separate Intel and Apple Silicon packages. Linux targets Ubuntu 20.04+ with glibc 2.31, amd64 or arm64.
  • iOS and Android clients are controller-only; phones cannot be controlled. HarmonyOS PC and mobile clients are development builds still under device verification.
  • Remote resolution changes require X11 and RandR on Linux; Wayland and XWayland are not supported for this feature.
  • The trusted-device restriction requires both ends to run compatible clients. Current CLI, iOS, Android, and HarmonyOS mobile clients do not implement this authentication.
  • The MCP feature is only usable when built from source and requires Codex or DSH as host.
  • CrossDesk is licensed under GPL-3.0-only. Self-hosting requires deploying the separate signaling and TURN server and configuring both ends to use it.

HotRepo's take

CrossDesk recorded 13 new stars in the C++ daily ranking on 2026-11-14, placing as high as second on that day's language list. That single snapshot shows concentrated attention within the C++ community, but it is one day's data and does not by itself indicate sustained growth or adoption. The project's breadth is notable: it ships desktop, mobile, web, CLI, and MCP surfaces plus a self-hostable server, so readers evaluating it should weigh feature coverage against the platform-specific gaps documented above, especially the controller-only mobile clients and missing trusted-device support in the CLI.

Written by AI from the project's README, updated . The project's own docs are the source of truth.

You might also like

  1. rustdesk/rustdesk-serverSelf-host the RustDesk remote desktop ID and relay servers for private remote access.Rust10,673