Herdr UI
Herdr의 TUI가 뛰어나며, 창을 통해 추가되는 기능
Microsoft 원격 데스크톱 프로토콜(RDP)을 Rust로 구현
Rust implementation of the Microsoft Remote Desktop Protocol (RDP)
개발 도구Rust · C#GitHub @Devolutions직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗IronRDP is a modular Rust implementation of RDP, the protocol behind Windows Remote Desktop.
It is not a monolithic client: its composable crates provide PDU codecs, connection and session state machines, virtual channels, and image codecs for native, WebAssembly, and .NET clients, servers, and proxies.
The continuously fuzzed, no_std-compatible core performs no I/O, so applications supply the transport and runtime.
tokio, futures, or your own event loop.unsafe is heavily linted, and the workspace enforces strict correctness lints.Protocol and security
.rdp file parsing and writing, plus a typed configuration property storeGraphics
Virtual channels
Targets and bindings
@devolutions/iron-remote-desktop)Devolutions.IronRdp)Checksummed .tar.gz archives are attached to each GitHub release, one per supported platform:
ironrdp-viewer - a windowed RDP client (tags ironrdp-viewer-v*)ironrdp-agent - a daemon-backed CLI for automation (tags ironrdp-agent-v*)Each release includes download, checksum, and extraction instructions.
cargo install ironrdp-viewer
cargo install ironrdp-agent
Both binaries link native audio, so Linux builds need the ALSA development headers (libasound2-dev on Debian/Ubuntu) and Windows builds need NASM.
ironrdp-viewerironrdp-viewer is a portable, windowed RDP client with asynchronous I/O and software rendering.
ironrdp-viewer <HOSTNAME> --username <USERNAME> --password <PASSWORD>
Omitted credentials are prompted for interactively.
You can also load a .rdp file:
ironrdp-viewer --rdp-file ./my-server.rdp
Set IRONRDP_LOG to adjust logging, for example IRONRDP_LOG="info,ironrdp_connector=trace".
See the viewer README for supported .rdp properties, TLS key logging, and the full option list.
ironrdp-agentironrdp-agent combines a long-lived RDP daemon with short-lived CLI invocations for scripts and LLM-driven automation:
ironrdp-agent daemon-start --overlay ./credentials.rdp # in one terminal
ironrdp-agent connect --server <HOSTNAME> --username <USER> # in another
ironrdp-agent screenshot ./desktop.png
connect fails with missing required fields unless credentials are available.
Preload credentials with daemon-start --overlay <FILE> to keep secrets away from the IPC caller, or pass --password to connect.
Run ironrdp-agent --help-agent for a machine-readable description of every operation.
See the agent README for the IPC format, secret handling, and remote execution support.
Add the meta crate and enable only the pieces you need:
[dependencies]
ironrdp = { version = "0.17", features = ["connector", "session", "graphics"] }
Each feature maps to a standalone crate, so you can depend on ironrdp-pdu, ironrdp-connector, ironrdp-session, and related crates directly.
API documentation is available on docs.rs.
Two runnable examples ship with the meta crate:
# Connect, decode the desktop, and write a PNG. Blocking, synchronous I/O.
cargo run --example=screenshot -- --host <HOSTNAME> -u <USERNAME> -p <PASSWORD> -o out.png
# A minimal RDP server built on ironrdp-server.
cargo run --example=server -- --bind-addr 127.0.0.1:3389
Run the following PowerShell commands, then reboot:
Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services' -Name 'ColorDepth' -Type DWORD -Value 5
Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services' -Name 'fEnableVirtualizedGraphics' -Type DWORD -Value 1
Alternatively, enable these group policies with gpedit.msc and reboot.
They are under Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Remote Session Environment:
qemu-rdp, an RDP server for QEMU displaysIronRDP's MSRV is the oldest of three versions: the latest stable Rust release at least six months old, the version packaged by Fedora stable, and the version available in Debian stable-backports.
rust-toolchain.toml pins both the project toolchain and the MSRV validated by CI.
See the architecture policy for details.
Contributions are welcome; start with ARCHITECTURE and STYLE, and keep changes scoped.
Project automation uses xtask following the cargo xtask convention.
Run cargo xtask --help for the command list and cargo xtask bootstrap to install development requirements.
Run cargo xtask ci before opening a pull request; it covers everything CI runs except FFI and .NET checks, which have separate cargo xtask ffi commands.
Workspace builds use the native prerequisites listed under Install with Cargo. The web client also needs Node.js >= 24 LTS, and the FFI bindings need the .NET SDK.
AI-assisted development is welcome, but contributors remain responsible for understanding, reviewing, and validating every change. For RDP protocol work, install the Windows Protocols skill from awakecoding/openspecs so agents can navigate the Microsoft Open Specifications corpus.
Licensed under either MIT or Apache-2.0 at your option.