OpenRTC Tauri Plugin
First-party Tauri host integration for the native OpenRTC runtime.
[]
= "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.