swactor/crates/iroh-driver
Zachery Aaron Shores-Chmielewski 0411c20b94 feat(data-plane): add routed SPSC stream transport
Implement namespace-owned stream rendezvous with incarnation isolation, cancellation, recovery, bounded local byte rings, and host/child actor protocols.

Add a replaceable stream transport boundary plus an Iroh ALPN adapter with framed records, backpressure, reconnect handling, and terminal propagation.

Wire stream sources and sinks through Myelin job deployment and Python bindings, with guarantee coverage across blob, namespace, job, byte-ring, and transport paths.

Sanitize nested Cargo build context in xtask so lint, Nextest, doctest, and maturin invocations retain stable fingerprints.
2026-08-23 15:51:24 +04:00
..
src feat(data-plane): add routed SPSC stream transport 2026-08-23 15:51:24 +04:00
tests feat(data-plane): add routed SPSC stream transport 2026-08-23 15:51:24 +04:00
Cargo.toml feat(data-plane): complete virtual blob namespace 2026-08-22 21:30:59 +04:00
IROH_DRIVER_SPEC.md Move all edge logic into data-plane; reduce iroh-driver to a byte-transport port 2026-08-16 21:49:45 +04:00
README.md refactor: datastream crate is now telemetry 2026-08-15 12:18:56 +04:00

iroh-driver

iroh-driver is the iroh-backed transport bridge for the actorized distribution stack. It owns the concrete iroh endpoint, QUIC connections, relay configuration, peer authorization, and frame shuttling between iroh and swactor actor mailboxes.

Engine ownership

The driver runs on a caller-supplied swactor EngineHandle — the single engine that owns the node's Tokio substrate. All accepts, reads, dials, writes, retries, and teardown are scheduled through that handle; the driver stores no raw Tokio handle and performs no ambient-runtime detection (ENGINE_SPEC.md §7).

let driver = IrohDriver::with_engine(engine.handle(), config)?;

The driver validates that the engine provides the tasks, timers, and io capabilities before binding the endpoint or starting any background work (ENGINE_SPEC.md). Endpoint construction runs as an engine-hosted task; with_engine blocks on a synchronous channel until the endpoint is bound (or fails), so callers need not enter or possess the raw substrate runtime.

Engine-hosted progression

All adapter progression — actor-bridge ingress/egress, telemetry ingress, and edge ingress — is driven by an engine-hosted interval pump installed via install_actor_bridge_pump. Applications do not (and cannot) manually pump these adapters; the single engine owns progression for the node's lifetime (ENGINE_SPEC.md). snapshot is a pure-synchronous read of driver state, callable from any thread. The shutdown method closes the endpoint via an engine-hosted task, blocking on a synchronous channel until completion.