---
title: "Radix Rust SDK"
url: "https://radix.wiki/developers/infrastructure/radixdlt-rust-sdk"
version: "1.1.0"
updated: 2026-08-15
last_verified: 2026-08-15
license: CC-BY-4.0
license_url: "https://creativecommons.org/licenses/by/4.0/"
---

# Radix Rust SDK

|  |  |
| --- | --- |
| Developer | [Luis Alberto Reoyo Bolaños (genkipool)](https://genkipool.com) |
| Type | Developer SDK / off-ledger toolkit |
| License | MIT or Apache-2.0 (dual) |
| Transports | WebRTC, [iroh](https://www.iroh.computer/) / QUIC |
| Repository | [github.com/genkipool/radixdlt-rust-sdk](https://github.com/genkipool/radixdlt-rust-sdk) |
| Distribution | Git / path dependency (not on crates.io) |
| Status | 🟢 Active |

The **Radix Rust SDK** ([`radixdlt-rust-sdk`](https://github.com/genkipool/radixdlt-rust-sdk)) is a set of native Rust building blocks for the [Radix](https://www.radixdlt.com/) ledger – the off-ledger primitives that, until now, existed mainly in JavaScript/TypeScript. It lets developers build authentication backends, transaction tooling, and wallet integrations entirely in pure Rust. The project is authored and maintained by [Luis Alberto Reoyo Bolaños](https://genkipool.com) (GitHub [genkipool](https://github.com/genkipool)) and is dual-licensed under MIT or Apache-2.0.

## Background

Radix's off-ledger toolkit – the code that runs in a dApp backend or client rather than on the network – has historically been distributed as the official [TypeScript packages](https://github.com/radixdlt) such as `@radixdlt/rola` and the Radix dApp Toolkit. The Radix Rust SDK reimplements these primitives for the Rust ecosystem, giving server, desktop, and embedded developers a way to derive addresses, verify signatures, manage keys, and talk to wallets without a JavaScript runtime. It emphasises modular transports, native [ROLA](https://docs.radixdlt.com/docs/rola-radix-off-ledger-auth) verification, and integration with AI agents.

## Crates

The [workspace](https://github.com/genkipool/radixdlt-rust-sdk/blob/main/Cargo.toml) holds ten crates, but it is not one workspace: `radixdlt-connect`, `radixdlt-connect-iroh` and `radixdlt-connector-mcp` are each isolated, because their WebRTC and QUIC dependency trees cannot be resolved alongside the [Radix Engine](/contents/tech/core-protocols/radix-engine) tree the Gateway crate pulls in. The [manifest records the specific collision](https://github.com/genkipool/radixdlt-rust-sdk/blob/main/crates/connect-iroh/Cargo.toml): the Scrypto engine pins `regex` to exactly 1.9.3 while `webrtc` requires 1.9.5 or newer. A developer therefore picks a transport at the crate level rather than by feature flag.

- **radixdlt-sdk** – umbrella crate for the main workspace, re-exporting the others behind feature flags (`address`, `rola` – the default, `keystore`, `gateway`, `connect-types`, and `full`). It [deliberately does not re-export the two transports](https://github.com/genkipool/radixdlt-rust-sdk/blob/main/crates/sdk/Cargo.toml), for the resolution reason above.
- **radixdlt-rola** – off-ledger authentication matching [`@radixdlt/rola`](https://github.com/radixdlt/rola) ("log in with Radix").
- **radixdlt-address** – virtual-account address derivation.
- **radixdlt-keystore** – encrypted Ed25519 keystore using scrypt + AES-256-GCM.
- **radixdlt-gateway-tx** – [Gateway](https://docs.radixdlt.com/docs/network-gateway) client with local transaction signing.
- **radixdlt-connect-types** – the transport-agnostic Radix Connect wallet-interaction schema, shared by both transports and carrying no heavy dependencies of its own.
- **radixdlt-connect** – [Radix Connect](https://docs.radixdlt.com/docs/dapp-toolkit) over WebRTC for mobile-wallet integration, including TURN over TCP/TLS for networks with no UDP.
- **radixdlt-connect-iroh** – Radix Connect over [iroh](https://www.iroh.computer/) / QUIC for direct SDK-to-SDK communication.
- **radixdlt-connector-mcp** – a local [MCP](https://modelcontextprotocol.io/) server that lets AI agents pair a wallet and sign transactions.
- **radixdlt-i18n** – system-locale detection with bilingual text support.

## Availability and Installation

None of the crates are published to [crates.io](https://crates.io). Queried at the registry's API on 15 August 2026, `radixdlt-sdk`, `radixdlt-rola`, `radixdlt-connect-iroh` and `radixdlt-connector-mcp` all return _crate does not exist_, so the `radixdlt-sdk = "0.1"` quick-start in the [README](https://github.com/genkipool/radixdlt-rust-sdk/blob/main/README.md) — and the crates.io and docs.rs badges above it — describe an intended future state rather than one a `cargo add` will reach today. The workspace is consumed by Git or path dependency in the meantime.

The repository's [PUBLISHING.md](https://github.com/genkipool/radixdlt-rust-sdk/blob/main/PUBLISHING.md) says the packages are publish-ready — metadata and READMEs complete, tests green, a clean `cargo publish --dry-run` for `radixdlt-i18n` — and sets out the publish order dependencies-first. What it leaves open is a naming question rather than an engineering one: crates.io names are first-come-first-served, and the `radixdlt-*` prefix is [Radix](https://www.radixdlt.com/)'s own brand, so the document flags that the project "could object or request a transfer, and the names may look official" before anyone claims them.

The exception, and the piece that is installable today, is the MCP connector. It ships as a binary named `radix-connector-mcp`, installed straight from the repository with `cargo install --git https://github.com/genkipool/radixdlt-rust-sdk radixdlt-connector-mcp` or the prebuilt-binary scripts for Linux, macOS and Windows. It carries the project's only [release train](https://github.com/genkipool/radixdlt-rust-sdk/releases) — nine tags from `connector-v0.1.0` on 5 July 2026 to `connector-v0.3.1` on 2 August 2026, the latter also the repository's most recent commit.

## Radix Connect over iroh

The [`radixdlt-connect-iroh`](https://github.com/genkipool/radixdlt-rust-sdk/tree/main/crates/connect-iroh) crate defines a transport protocol that lets two pure-Rust peers exchange Radix wallet-interaction messages over [iroh](https://www.iroh.computer/) (QUIC). It is a Rust-native alternative to the WebRTC transport used by [Radix Connect](https://docs.radixdlt.com/docs/dapp-toolkit), enabling server-to-signer and device-to-device flows – such as "log in with Radix" and transaction signing – without routing through a mobile wallet. The full specification is published in its [PROTOCOL.md](https://github.com/genkipool/radixdlt-rust-sdk/blob/main/crates/connect-iroh/docs/PROTOCOL.md).

### Transport and framing

Peers connect as iroh 1.x endpoints over QUIC, negotiating the ALPN identifier `radixdlt-connect-iroh/0`. Each interaction uses one bidirectional QUIC stream: the connecting _dApp_ sends first and the accepting _Wallet_ receives first, so request/response ordering is maintained without a separate handshake. Messages are length-prefixed JSON documents – a 4-byte big-endian `u32` length followed by a UTF-8 JSON body.

### Roles

The **dApp** initiates the connection, sends the request, and verifies responses (notably ROLA proofs). The **Wallet** (signer) accepts the connection, holds the Ed25519 signing keys, and responds to interactions. A request envelope carries an `interactionId` (UUID-v4), metadata (version, network ID, dApp definition address, origin), and discriminated `items`; the response envelope echoes the same `interactionId` as either `success` or `failure`.

## Interaction flows

The protocol supports the same interaction families as Radix Connect:

- **Account proof (ROLA)** – the dApp sends a challenge and its context; the Wallet signs a message incorporating the challenge, dApp definition, and origin; the dApp verifies the returned proofs natively via `radixdlt-rola::verify_account_proof`, independent of transport authentication.
- **Transaction** – the dApp sends a [manifest](https://docs.radixdlt.com/docs/manifest) and blobs; the Wallet compiles it, builds a notarized transaction, submits it to the Gateway, and returns the intent hash (even if the confirmation wait times out).
- **Pre-authorization** – the dApp sends a subintent manifest and expiration window; the Wallet signs a subintent with an epoch-based validity window (~5 minutes per epoch) and returns the signed partial transaction, which is _not_ submitted.

### Pairing, identity, and relays

A Wallet publishes a locator – a full `ticket()` (local addresses, for same-host or LAN pairing), an `id_ticket()` (endpoint ID only, for internet use with discovery), or an `endpoint_id_string()` (mDNS pairing). Identity can be _ephemeral_ (a random key per run) or _fixed_ (a 32-byte seed yields a stable `EndpointId`); reusing the Radix account key as the endpoint seed unifies channel and ledger identity. Relaying is configurable: `Relay::Disabled` keeps connections direct, while `Relay::Enabled` uses n0 public relays and discovery for NAT traversal. Errors surface through the `IrohError` enum (`Bind`, `Connect`, `Accept`, `Stream`, `Protocol`, `Rejected`).

### Security properties

QUIC/TLS provides confidentiality and integrity, and the `EndpointId` authenticates peers at the transport layer. ROLA proofs are verified natively by the dApp, independent of that transport authentication. When the endpoint seed doubles as the account key, channel and ledger identity are tied together. A relay can observe connection metadata but never the encrypted stream contents.

## AI-agent integration

The **radixdlt-connector-mcp** crate exposes a local [Model Context Protocol](https://modelcontextprotocol.io/) server, letting AI agents pair a Radix wallet and request signatures through the SDK's transports. Combined with native ROLA verification and Gateway signing, this positions the Rust SDK as a foundation for agentic Radix tooling that runs entirely outside a browser.

## External Links

- [radixdlt-rust-sdk on GitHub](https://github.com/genkipool/radixdlt-rust-sdk)
- [connect-iroh PROTOCOL.md specification](https://github.com/genkipool/radixdlt-rust-sdk/blob/main/crates/connect-iroh/docs/PROTOCOL.md)
- [genkipool.com](https://genkipool.com) · [@GenkipoolC](https://x.com/GenkipoolC)
- [Radix docs – ROLA (Radix Off-Ledger Authentication)](https://docs.radixdlt.com/docs/rola-radix-off-ledger-auth)
- [iroh – peer-to-peer QUIC networking](https://www.iroh.computer/)
