[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81799":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":13,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},81799,"rust-desk-light","marlkiller\u002Frust-desk-light","marlkiller","Lightweight Rust remote administration toolkit with GUI-based device management, remote desktop, file transfer, terminal access, camera viewing, and local-first control features.","",null,"Rust",50,10,40,1,0,4,7,12,3.12,"Apache License 2.0",false,"main",[25,26,27,28,29,30,31,32],"rat","remote-access-tools","remote-admin-tool","remote-admin-trojan","remote-administration","remote-administration-tool","remote-administration-trojan","rust","2026-06-12 02:04:19","# Rust Desk Light - Remote Administration Tool (RAT)\n\n![Rust 2021](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRust-2021-orange)\n![Platforms](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-Windows%20%7C%20Linux%20%7C%20macOS-blue)\n![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache--2.0-green)\n\n**rust-desk-light** is a lightweight Rust **remote administration tool (RAT)**. It packs a GUI operator console, a CLI relay server, GUI & CLI endpoint clients, and a compact binary protocol. The toolkit supports device discovery, **remote management**, file transfer, remote desktop, camera preview, audio listening, and duplex voice chat – all running smoothly on Windows, Linux, and macOS.\n\n> Intended for authorized remote assistance, lab administration, and\n> development\u002Ftesting environments. Current transport is not end-to-end\n> encrypted; use trusted networks, VPNs, or other network-level protection for\n> sensitive deployments.\n\n## Overview\n\n| Binary | Type | Purpose |\n| --- | --- | --- |\n| `rdl-admin-gui` | GUI | Client control console. |\n| `rdl-server-cli` | CLI | Session and traffic relay. |\n| `rdl-client-gui` | GUI | Graphical endpoint client. |\n| `rdl-client-cli` | CLI | Headless endpoint client. |\n\nLinux desktop control targets X11 tools such as `maim`, ImageMagick `import`,\nand `xdotool`. macOS remote control needs Accessibility permission for the app\nthat launches the client, and screen capture may need Screen Recording\npermission.\n\n## Features\n\n| Area | Features |\n| --- | --- |\n| Device management | Online list, search, host info, reconnects, and cleanup. |\n| Remote management | Files, directories, terminal, processes, windows, startup, and drivers. |\n| System diagnostics | Registry, event logs, connections, performance, and computer info. |\n| Live control | Remote desktop, input, camera, audio, and two-way voice. |\n| Interaction tools | Messages, notifications, chat, clipboard, execution, and presets. |\n| Admin utilities | Client Builder and GeoIP-backed client map. |\n\n## Screenshots\n\n![Admin overview](docs\u002Fscreenshots\u002Fadmin-overview.png)\n\n![Client map](docs\u002Fscreenshots\u002Fclient-map.png)\n\n![Client overview](docs\u002Fscreenshots\u002Fclient-overview.png)\n\n## Quick Start\n\nStart the local development stack:\n\n```sh\n.\u002Fscripts\u002Fstart-dev.sh --release\n```\n\nWindows:\n\n```powershell\n.\\scripts\\start-dev.bat --release\n```\n\nFor a manual local run, start the server first, then clients, then admin:\n\n```sh\n.\u002Ftarget\u002Frelease\u002Frdl-server-cli --ip 0.0.0.0 --port 5169\n.\u002Ftarget\u002Frelease\u002Frdl-client-gui --ip 127.0.0.1 --port 5169\n.\u002Ftarget\u002Frelease\u002Frdl-admin-gui --ip 127.0.0.1 --port 5169\n```\n\n## Download\n\nPrebuilt release packages are available on the\n[GitHub Releases page](https:\u002F\u002Fgithub.com\u002Fmarlkiller\u002Frust-desk-light\u002Freleases).\n\n## Build\n\nRequires Rust stable and Git.\n\n```sh\nrustup update stable\ncargo check --workspace\ncargo build --workspace\ncargo build --workspace --release\n```\n\n\nIndividual build aliases:\n\n```sh\ncargo build-server-cli --release\ncargo build-client-gui --release\ncargo build-client-cli --release\ncargo build-admin-gui --release\n```\n\nUse `--profile release-size` for a smaller `rdl-client-cli` when needed.\n\nDebug binaries go to `target\u002Fdebug`; release binaries go to `target\u002Frelease`.\nWindows adds `.exe`.\n\nOn macOS, clear quarantine metadata if you run binaries extracted from a\ndownloaded archive:\n\n```sh\nxattr -cr .\u002Frdl-client-gui\nxattr -cr .\u002Frdl-admin-gui\nxattr -cr .\u002Frdl-server-cli\n```\n\n## Local App Packages\n\nUse the local packaging scripts to wrap the standalone GUI binaries as\nsystem-native app packages for the client and admin console. The packaged apps\nlaunch without a terminal window and are written to `dist\u002Fapps\u002F\u003Cplatform>\u002F`.\n\nWindows:\n\n```powershell\n.\\scripts\\package-apps.ps1 --release\n```\n\nmacOS\u002FLinux:\n\n```sh\n.\u002Fscripts\u002Fpackage-apps.sh --release\n```\n\nThe scripts build `rdl-client-gui` and `rdl-admin-gui`, package them separately,\nand include the application icon, config templates, and a short README. macOS\npackages are `.app` bundles; Linux packages are AppDir style directories with\n`.desktop` metadata and icons.\n\n`rdl-client-cli` is not included in these app packages because it does not ship a\nlocal graphical UI. Build it separately with `cargo build-client-cli --release`\nwhen you need the command-line endpoint.\n\n## Configuration\n\nConfig files are created automatically on first run:\n`~\u002F.config\u002Frust-desk-light\u002F` on macOS\u002FLinux, `%APPDATA%\\rust-desk-light\\` on\nWindows. The files in `config\u002F` are templates.\n\n```sh\nmkdir -p ~\u002F.config\u002Frust-desk-light\ncp config\u002Fserver.template.toml ~\u002F.config\u002Frust-desk-light\u002Fserver.toml\ncp config\u002Fclient.template.toml ~\u002F.config\u002Frust-desk-light\u002Fclient.toml\ncp config\u002Fadmin.template.toml ~\u002F.config\u002Frust-desk-light\u002Fadmin.toml\n```\n\nUse `--config PATH` for repo-local or custom config files. Startup arguments\noverride config files. Client binaries generated by the admin Client Builder can\nalso carry an embedded read-only config in the client executable itself; that\nembedded client config has the highest priority and overrides startup arguments.\nUse a freshly built `rdl-client-gui` as the Client Builder template; older\nbinaries without the embedded config slot are rejected.\n\nAuth uses one shared token across server, admin, and optionally clients. The\nadmin must present the token before it can register. If `rdl-server-cli` starts\nwithout `--auth-token` or `RDL_AUTH_TOKEN`, it generates a token and prints it\nonce at startup. Clients only need the token when the server is started with\n`--require-client-auth` or `[auth].require_client_auth = true`.\n\n```sh\nrdl-server-cli --auth-token \"change-me\"\nrdl-server-cli --require-client-auth --auth-token \"change-me\"\nrdl-admin-gui --auth-token \"change-me\"\nrdl-client-gui --auth-token \"change-me\"\n```\n\nTo enable the admin client map, pass a MaxMind GeoLite2\u002FGeoIP2 City database to\nthe server:\n\n```sh\n.\u002Ftarget\u002Frelease\u002Frdl-server-cli --ip 0.0.0.0 --port 5169 --geoip-db \u002Fpath\u002FGeoLite2-City.mmdb\n```\n\nThe startup scripts also auto-detect `third_party\u002Fgeoip\u002FGeoLite2-City.mmdb`.\nSee [GeoLite2 City setup](docs\u002Fgeolite2-city-setup.md).\n\nUseful environment variables:\n\n| Variable | Purpose |\n| --- | --- |\n| `RDL_IP` | Default IP used by helper scripts. |\n| `RDL_PORT` | Default port used by helper scripts. |\n| `RDL_AUTH_TOKEN` | Shared registration token for server\u002Fadmin\u002Fclient. |\n| `RDL_GEOIP_DB` | Path to a MaxMind GeoLite2\u002FGeoIP2 City database. |\n| `RDL_BUILD_VERSION` | Overrides the displayed build version. |\n\n## Architecture\n\n```mermaid\nflowchart LR\n    Admin[\"rdl-admin-gui\\nOperator console\"]\n    Server[\"rdl-server-cli\\nPresence + routing + relay\"]\n\n    subgraph Clients[\"Managed endpoints\"]\n        Win[\"rdl-client-gui \u002F rdl-client-cli\\nWindows\"]\n        Linux[\"rdl-client-gui \u002F rdl-client-cli\\nLinux\"]\n        Mac[\"rdl-client-gui \u002F rdl-client-cli\\nmacOS\"]\n        More[\"rdl-client-gui \u002F rdl-client-cli\\n...more clients\"]\n    end\n\n    Admin \u003C-->|\"operator sessions\"| Server\n    Server \u003C-->|\"managed connections\"| Win\n    Server \u003C-->|\"managed connections\"| Linux\n    Server \u003C-->|\"managed connections\"| Mac\n    Server \u003C-->|\"managed connections\"| More\n```\n\nThe server is intentionally thin. It validates the shared registration token,\nissues per-connection session tokens, keeps a presence table, and routes typed\nmessages between admins and clients. Endpoint actions run on clients, not on the\nrelay.\n\n## Transport\n\nThe configured server address uses the same numeric port for TCP and UDP. If you\nrun across machines, allow both protocols on that port.\n\n| Capability | Direction | Transport | Message format |\n| --- | --- | --- | --- |\n| Registration, session token, heartbeat, client list | Admin\u002FClient \u003C-> Server | TCP | `RDL1` framed binary messages |\n| Commands, acknowledgements, command output, remote terminal | Admin -> Server -> Client, then results back | TCP | `Command`, `CommandAck`, `CommandOutput` |\n| File manager and file transfer | Admin \u003C-> Server \u003C-> Client | TCP | `FileTransfer` messages |\n| Remote desktop and camera preview | Client -> Server -> Admin | TCP | `VideoControl`, `VideoFrame`, `DesktopInput` |\n| Audio listen and duplex voice chat | Admin\u002FClient \u003C-> Server | UDP | `RDU1` `pcm_s16le` packets |\n\nReliable work stays on framed TCP messages; interactive audio uses small\nlow-latency UDP packets so voice does not queue behind bulk traffic.\n\n## Project Notes\n\n- The main transport is a custom versioned binary protocol with `RDL1` framed\n  messages.\n- Audio listen and voice chat use a separate `RDU1` packet format with stream\n  ids, sequence numbers, capture timestamps, sample rate, channel count, and PCM\n  payloads.\n- Linux remote desktop testing details live in\n  [Ubuntu X11 remote desktop testing](docs\u002Fubuntu-x11-remote-desktop-testing.md).\n- Current milestones and planned work live in [ROADMAP.md](ROADMAP.md).\n\n## Powered by\n\n[![JetBrains logo.](https:\u002F\u002Fresources.jetbrains.com\u002Fstorage\u002Fproducts\u002Fcompany\u002Fbrand\u002Flogos\u002Fjetbrains.svg)](https:\u002F\u002Fjb.gg\u002FOpenSource)\n\n## License\n\nThis project is licensed under the Apache License 2.0.\n","rust-desk-light 是一个轻量级的 Rust 远程管理工具，提供了基于 GUI 的设备管理和远程桌面、文件传输、终端访问、摄像头查看等功能。该项目使用 Rust 语言开发，具有跨平台支持（Windows、Linux 和 macOS），并包含图形界面和命令行界面两种客户端形式。它适合用于授权的远程协助、实验室管理和开发\u002F测试环境。需要注意的是，当前版本的通信未采用端到端加密，因此在处理敏感信息时建议通过可信网络或 VPN 等方式进行保护。",2,"2026-06-11 04:06:45","CREATED_QUERY"]