RustDesk is an open-source remote desktop application written in Rust that provides an alternative to commercial solutions like TeamViewer and AnyDesk. The project is designed for self-hosting, allowing users to maintain full control over their data and infrastructure without relying on third-party servers. The application works out of the box with minimal configuration required and supports multiple platforms including Windows, Linux, macOS, Android, and iOS through both desktop and mobile implementations.
The core architecture is built around several specialized libraries. The hbb_common library handles video codecs, configuration management, TCP/UDP networking, protocol buffers, and file transfer utilities. The scrap library manages screen capture functionality across platforms, while the enigo library provides platform-specific keyboard and mouse control. A dedicated clipboard library implements file copy and paste operations for Windows, Linux, and macOS. The server component manages audio, clipboard, input, and video services along with network connections, while the client initiates peer connections. The rendezvous mediator communicates with RustDesk servers to establish either direct TCP hole-punching connections or relayed connections when direct connection is not possible.
RustDesk supports multiple user interface implementations. The original Sciter-based UI is now deprecated, with development focused on Flutter for both desktop and mobile platforms. The Flutter implementation includes web client support through JavaScript integration. The application features a connection manager, file transfer capabilities, and TCP tunneling functionality as demonstrated in the project's screenshots.
The project demonstrates strong community engagement and active maintenance. The repository has attracted contributors who also work on major projects like Microsoft's VSCode and TypeScript, suggesting the codebase maintains professional quality standards.
Building RustDesk requires a Rust development environment and C++ build tools, with dependencies managed through vcpkg for libraries like libvpx, libyuv, opus, and aom. The project provides multiple build approaches including raw compilation steps, platform-specific instructions for Ubuntu, openSUSE, Fedora, and Arch Linux, and Docker-based building for containerized environments. The README is available in 26 languages, reflecting the project's international user base and community translation efforts.
Users can download binary releases or nightly builds directly from the GitHub releases page. The application is also available through distribution channels including F-Droid for Android and Flathub for Linux. The project welcomes contributions and provides documentation through its CONTRIBUTING.md file, along with an FAQ section addressing common questions. RustDesk offers flexibility in server infrastructure, allowing users to leverage the public rendezvous and relay servers, set up their own servers, or implement custom server solutions using the provided rustdesk-server-demo as a reference.