openrtc-tauri-plugin 3.0.1

First-party Tauri v2 plugin for the OpenRTC native runtime.
Documentation

OpenRTC Tauri Plugin

First-party Tauri host integration for the native OpenRTC runtime.

[dependencies]
openrtc-tauri-plugin = "2.5.0"

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 npm openrtc@2.5.0, Rust openrtc@2.5.0, and openrtc-tauri@2.5.0.

Custom Application Streams

WebView-only hosts that have no Rust product-protocol reader must construct OpenRtcTauriState::new(config).with_projected_stream_intake() before installing the plugin. This explicitly gives the plugin sole ownership of the admitted application-stream queue. It starts once with the projection subscription, preserves admission-classifier prefixes, checks current transport and admission, and delegates bounded channel classification to the same handoff below. Unowned channels close in this mode. Hosts with their own incoming reader must leave this option disabled; the plugin never silently adds a competing reader.

A host consuming the Rust client's single incoming_streams() queue can offer already-admitted, application-protected bidirectional streams through handoff_projected_peer_bi_stream. Custom channel names are supported when their channel envelope carries an openrtcCapability matching an active native capability registration. Ticket capabilities must also match Rust's admitted ticket scope; share/* retains its existing ticket-only ownership.

The handoff returns unowned streams, or streams without a projection subscriber, to the host with consumed bytes restored. It neither grants admission nor broadcasts unscoped binary data. Finishing the sending half keeps the receiving half available for file-transfer acknowledgements.

Native Custom Transports

The plugin exposes a compile-time Rust host extension point: TransportInstaller, 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.