Prerequisites
Before installing IronRDP, ensure you have:- Rust toolchain: Version 1.88.0 or later (as specified in
rust-toolchain.toml) - Cargo: Rust’s package manager (included with Rust)
IronRDP uses Rust Edition 2021 and requires a modern Rust toolchain.
Basic Installation
Add IronRDP to yourCargo.toml:
core and pdu features, providing basic types and PDU encoding/decoding.
Feature-Based Installation
IronRDP is designed as a meta crate with optional feature flags. Choose the features you need:Client Development
For building RDP clients:connector- Client connection state machines (ironrdp-connector)session- Session state machines (ironrdp-session)graphics- Image processing primitives (ironrdp-graphics)
Server Development
For building RDP servers:acceptor- Server connection acceptance (ironrdp-acceptor)server- Server implementation skeleton (ironrdp-server)
Virtual Channels
Add support for specific virtual channels:Complete Feature Reference
Core Features
Core Features
core- Common traits and types (ironrdp-core) [default]pdu- PDU encoding and decoding (ironrdp-pdu) [default]
Connection & Session
Connection & Session
connector- Client connection state machines (ironrdp-connector)acceptor- Server connection acceptance (ironrdp-acceptor)session- Session state machines (ironrdp-session)
Media & Graphics
Media & Graphics
graphics- Image processing primitives (ironrdp-graphics)input- Input packet utilities (ironrdp-input)qoi- QOI codec supportqoiz- QOIZ codec support
Virtual Channels
Virtual Channels
svc- Static virtual channel traits (ironrdp-svc)dvc- Dynamic virtual channel implementation (ironrdp-dvc)cliprdr- Clipboard redirection (ironrdp-cliprdr)rdpdr- Device redirection (ironrdp-rdpdr)rdpsnd- Audio output (ironrdp-rdpsnd)displaycontrol- Display control channel (ironrdp-displaycontrol)echo- Echo channel (ironrdp-echo)
Server
Server
server- Server implementation skeleton (ironrdp-server)
I/O Layer Installation
IronRDP’s core is I/O-agnostic. Choose an I/O layer based on your needs:Blocking I/O
For synchronous applications:Async I/O with Tokio
For async applications using Tokio:Async I/O with Futures
For async applications using the Futures crate:async-std users
Additional Dependencies
Depending on your use case, you may need:For TLS Support
For CredSSP Authentication
For Native Clipboard Support
For Image Processing (Examples)
Platform-Specific Considerations
No Standard Library (no_std)
All core-tier crates are no_std-compatible:
WebAssembly (WASM)
For browser-based RDP clients:Verification
Verify your installation by building a minimal example:The
Config struct has many required fields. The examples above are simplified. See the Quickstart for complete configuration examples.Running Examples
The IronRDP repository includes runnable examples:Screenshot Example (Client)
Server Example
Full Client (ironrdp-client)
Type Definitions
Key types you’ll interact with after installation:Connection Types
Session Types
PDU Types
Troubleshooting
Compilation Errors
Missing feature flags
Missing feature flags
Error:
cannot find type X in module YSolution: Enable the required feature flag:Version conflicts
Version conflicts
Error:
failed to select a version for ironrdp-*Solution: Use compatible versions across all IronRDP crates. The meta crate handles this automatically.Minimum Rust version
Minimum Rust version
Error: Compilation fails with older Rust versionsSolution: Update Rust to 1.88.0 or later:
Next Steps
Quickstart
Build your first RDP client
API Reference
Explore the complete API documentation

