> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iroh.computer/llms.txt
> Use this file to discover all available pages before exploring further.

# Compatibility

Send data to and from any device running anywhere, big or small: cloud servers, tablets, or embedded systems. The core peer-to-peer technology is open source and built on open standards, so you're never locked in.

## Operating Systems

iroh supports all major operating systems.

| OS                    | Supported                                                   |
| --------------------- | ----------------------------------------------------------- |
| Linux                 | Yes                                                         |
| macOS                 | Yes                                                         |
| Windows               | Yes                                                         |
| Android               | Yes                                                         |
| iOS                   | Yes                                                         |
| WebAssembly (browser) | [Yes](/deployment/other-languages#webassembly-and-browsers) |
| FreeRTOS              | Yes                                                         |

## Hardware

iroh is regularly tested on a wide range of hardware, from servers to microcontrollers.

| Hardware                                      | Notes                                  |
| --------------------------------------------- | -------------------------------------- |
| x86\_64 servers & desktops                    | Fully supported                        |
| Apple Silicon (M-series)                      | Fully supported                        |
| Raspberry Pi (Linux)                          | Fully supported                        |
| ESP32 (Xtensa & RISC-V)                       | [Supported](#esp32)                    |
| RP2350 (Raspberry Pi Pico 2, Pimoroni Presto) | [Supported](#rp2350-pico-2-and-presto) |

For hardware you don't see here, or to integrate your custom hardware into our testing frameworks on every iroh release, [contact us.](mailto:support@iroh.computer)

## Microcontrollers

iroh can run as a full QUIC endpoint on microcontrollers, using the same endpoint
IDs, tickets, and protocols as it would on a server. What a device can do mostly
comes down to its available RAM and flash:

* **RAM.** With PSRAM, a device has room for the relay client and [pkarr address
  lookup](/connecting/dns-address-lookup). That means you can connect to it from
  anywhere, including from a browser via WebAssembly.
* **Without PSRAM** (\~512 KiB internal SRAM), the relay client and pkarr address
  lookup won't fit. You can still connect on the local network using a long ticket
  that includes the device's IP address, or discover it by endpoint ID with
  [mDNS](/connecting/local-address-lookup). Browsers can't connect this way because
  they don't support mDNS or direct UDP.
* **Flash.** Devices with less than 8 MiB of flash need our reduced-dependency
  build of iroh. Common 4 MiB development boards fit with a little size tuning
  (`opt-level = "z"`, `panic = "immediate-abort"`, and `-Os` on the ESP-IDF side),
  with no custom partition table required.

### ESP32

| Board                         | Architecture       | PSRAM  | Reachability           |
| ----------------------------- | ------------------ | ------ | ---------------------- |
| ESP32-WROVER / M5StickC PLUS2 | Xtensa LX6         | Yes    | Relay + address lookup |
| ESP32-S3                      | Xtensa LX7         | Yes    | Relay + address lookup |
| ESP32-C61                     | RISC-V             | 2 MiB  | Relay + address lookup |
| ESP32-P4                      | RISC-V (dual-core) | 32 MiB | Relay + address lookup |
| ESP32                         | Xtensa LX6         | No     | LAN-direct             |
| ESP32-S3                      | Xtensa LX7         | No     | LAN-direct             |
| ESP32-C6                      | RISC-V             | No     | LAN-direct             |

<Note>
  The RISC-V variants (ESP32-C\*, ESP32-P\*) build with stock Rust. Xtensa
  (ESP32, ESP32-S3) needs the [`esp` Rust
  toolchain](https://docs.esp-rs.org/book/installation/riscv-and-xtensa.html).
  The ESP32-P4 has no radio of its own. WiFi comes from an ESP32-C6 companion
  over ESP-Hosted.
</Note>

You'll find working firmware for every variant above, along with a desktop CLI
and browser (WebAssembly) client, in
[iroh-esp32-examples](https://github.com/n0-computer/iroh-esp32-examples).
For a complete example, see
[iroh-smart-fan](https://github.com/n0-computer/iroh-smart-fan): a PSRAM ESP32
that reads a temperature sensor and drives a fan over [irpc](/protocols/rpc),
with controls available from a terminal or browser.

### RP2350: Pico 2 and Presto

iroh also runs on the RP2350, found in the Raspberry Pi Pico 2 and the [Pimoroni
Presto](https://shop.pimoroni.com/products/presto) (RP2350B, RM2 radio, 8 MiB
PSRAM). Relay and address lookup are enabled, so you can connect to these boards
from anywhere.

These chips don't yet have an upstream Rust `std` target, so we built one. It
uses nightly Rust with a custom Cortex-M33 target, the Pico SDK for startup, USB,
and the radio, FreeRTOS for threads, newlib, and lwIP for networking. iroh builds
on top without modification.

To use a microcontroller in production, [contact us for licensing, support, and
access to the Pico/Presto examples.](mailto:support@iroh.computer)

## Network Transports

| Transport           | Status                       |
| ------------------- | ---------------------------- |
| UDP / IP (internet) | Yes                          |
| WiFi / LAN          | Yes                          |
| Ethernet            | Yes                          |
| Bluetooth (BLE)     | [Yes](/transports/bluetooth) |
| Tor                 | [Yes](/transports/tor)       |
| Nym                 | [Yes](/transports/nym)       |

If there is a transport you need that is not listed, [contact us.](mailto:support@iroh.computer)
