# OpenRTC Tauri Plugin
First-party Tauri v2 host integration for the native OpenRTC runtime.
```toml
[dependencies]
openrtc-tauri-plugin = "1.0.1"
```
The plugin owns native managed-session startup, auth relay, lifecycle events,
and host-reported transport capabilities. Product protocols, filesystem policy,
queues, and UI state remain application responsibilities. Optional transport
features mirror the core crate: `transport-lan`, `transport-webrtc`,
`transport-moq`, and `transport-ble`.
Rust 1.91 or newer is required. JavaScript consumers should pair this crate
with `openrtc@^1.0.2` and `openrtc-tauri@^1.0.0`.
## Native Custom Transports
The plugin exposes a compile-time Rust host extension point:
`NativeTransportInstaller`, registered on `OpenRtcTauriState` with
`with_native_transport_installer(...)` before calling `init_with_state(...)`.
An installer may attach a host-owned transport before the shared Iroh endpoint
starts and keeps its runtime object alive for that client. It declares compiled
support only; `transports.ble` remains the application request and runtime
status remains the capability truth.
This is not a TypeScript extension API. The published `openrtc`,
`openrtc/runtime`, `openrtc/transport`, and `openrtc-tauri` packages do not
register arbitrary transport adapters. The reference BLE companion is
unpublished and distribution-gated. On 2026-07-22, the source-rebuilt Plutonium
host passed the operator-gated macOS/iPhone BLE lane: bilateral admission,
protected files in both directions, iPhone restart recovery, a 10-second
post-recovery settlement gate, and 61.4 seconds of unchanged BLE generations
with continued protected traffic. BLE remains an
experimental/private host integration until its packaging and licensing gates
are resolved; this evidence does not make it part of the public plugin binary.
When a host installs BLE, the plugin reports that compiled capability to the
runtime; configuration alone never advertises it. OpenRTC keeps the admitted
Iroh base route alive while attempting an atomic BLE replacement and retries a
transient failure at most three times for the current connection generation.
Consumer code must not add scanning, replacement, or retry timers.