A LAN-first remote desktop for fast, private, direct connections.
An independently maintained RustDesk fork built for LANs, routed private networks, and VPNs.
English · 简体中文
Why SubnetDesk · Features · Download · Quick start · Build
SubnetDesk focuses on one clear use case: remote control between devices that can already reach each other. It removes the public device-ID, rendezvous, relay, cloud account, proxy, and automatic public-update paths from RustDesk, replacing them with direct endpoint connections and local device discovery.
That makes it a good fit for home labs, offices, classrooms, on-site support, and private networks connected by WireGuard, Tailscale, OpenVPN, or another VPN.
| SubnetDesk | Typical RustDesk deployment | |
|---|---|---|
| Connection | Direct IP address or hostname | Device ID through rendezvous, with optional relay |
| Discovery | Automatic mDNS discovery on the LAN | Device ID or address book |
| Server dependency | No coordination server required | Public or self-hosted rendezvous/relay server |
| Best suited for | LANs, routed private networks, and VPNs | Internet and cross-NAT access |
Important
SubnetDesk does not provide Internet rendezvous or relay services. The two devices must be reachable through the same LAN, a routed private network, or a VPN.
| Capability | Details | |
|---|---|---|
| 🔎 | Local discovery | Find nearby devices automatically over mDNS. |
| ⚡ | Direct connections | Connect by IP address or hostname using a configurable TCP port. |
| 🔐 | Access protection | Authenticate with a username and password; passwords are stored as Argon2id hashes. |
| 🛡️ | Device verification | Verify and remember endpoint fingerprints before trusting a device. |
| 🌐 | Network allowlist | Restrict incoming connections to selected CIDR networks. |
| ⭐ | Fast reconnection | Keep recent devices, favorites, and stable device identities. |
| 🖥️ | RustDesk experience | Retain remote control, clipboard, audio, and file-transfer capabilities without a public coordination server. |
Download stable packages from GitHub Releases. For the newest changes, use the nightly release or artifacts from GitHub Actions.
| Platform | Architectures | Packages |
|---|---|---|
| Windows | x86_64, ARM64 | Portable .exe, .msi installer |
| macOS | Intel, Apple Silicon | .dmg |
| Linux | x86_64, ARM64 | .deb, .rpm, .AppImage, .flatpak; Arch package on x86_64 |
| Android | ARM64, ARMv7, x86_64, universal | .apk |
Note
Nightly packages are development builds. Prefer the latest stable release for daily use.
- Install and open SubnetDesk on both devices.
- On the controlled device, open LAN settings, set a username and password, and enable LAN discovery. The default port is
21118. - On the controller, select a discovered device or enter
hostname:port/IP:portmanually. - Verify the device fingerprint on first connection, then connect.
- Both devices can route to each other.
- TCP port
21118(or your configured port) is allowed by the host firewall. - mDNS is available when automatic discovery is needed; direct address entry still works without it.
- The controlled device's CIDR allowlist includes the controller's network.
- On Linux, see host readiness notes for SELinux, Wayland, and login-screen guidance.
- Traffic stays on the network path between your devices; SubnetDesk does not require a public coordination service.
- Passwords are persisted as Argon2id hashes rather than plaintext.
- Device fingerprints provide trust-on-first-use verification and help detect an unexpected endpoint identity change.
- CIDR allowlists let the controlled device limit which source networks may connect.
As with any remote-control software, expose the listening port only to trusted networks, use a strong unique password, and verify fingerprints through a separate trusted channel when possible.
Clone the repository with its submodules, then run the Flutter desktop build:
git clone --recurse-submodules https://github.com/zibo-chen/SubnetDesk.git
cd SubnetDesk
./build.py --flutter --hwcodecThe build requires Rust, Flutter, and platform-specific native dependencies. The native package workflow is the source of truth for pinned tool versions, target architectures, and packaging steps.
Bug reports, feature ideas, and pull requests are welcome. Before opening a change, check the existing issues and keep changes focused on the LAN/VPN-first product scope.
SubnetDesk is based on RustDesk and retains its open-source foundations. SubnetDesk is an independent project and is not an official RustDesk release.
Licensed under the GNU Affero General Public License v3.0. Use remote-control software only on systems you own or are authorized to administer.

