Rust SDK
nnrp-rs is the canonical Rust implementation of NNRP/1 Preview4. It owns the wire model, runtime-control profiles, object/cache metadata, transport provider interfaces, native FFI ABI, browser WASM primitives, and conformance support used by downstream SDKs.
Package Map
| Package | Boundary | Read first |
|---|---|---|
nnrp-core | Protocol constants, wire codecs, metadata structs, profile registries, validation, runtime-control and object/cache models | Core Types |
nnrp-runtime | Transport-neutral async client/server session runtime | Client API, Server API |
nnrp-transport-provider | Provider registry, policy, probe scoring, and selection | API Overview |
nnrp-transport-tcp | TCP transport implementation | Quick Start |
nnrp-transport-quic | Quinn/Rustls QUIC transport implementation | API Overview |
nnrp-transport-ipc | Unix domain socket / Windows named pipe transport implementation | API Overview |
nnrp-transport-websocket | Native Rust WebSocket transport implementation for binary NNRP frames | API Overview |
nnrp-ffi | C ABI and transport-scoped native artifact packaging | FFI / Native |
nnrp-wasm | Browser WASM primitives and generated TypeScript declarations | WASM |
nnrp-conformance | Rust-backed adapter, wire conformance, and benchmark helpers | Conformance |
How To Choose A Path
| Goal | Use |
|---|---|
| Build a native Rust client or server | nnrp-runtime plus one or more nnrp-transport-* packages |
| Let runtime choose among installed transports | nnrp-transport-provider with registered TCP/QUIC/IPC/WebSocket providers |
| Bind Python, C#, Unity, or another native host | nnrp-ffi release artifacts |
| Ship browser protocol primitives | nnrp-wasm; browser transport lifecycle stays in the JS/TS SDK |
| Check semantic compatibility | nnrp-conformance wire and adapter suites |
Current Status
Preview4 adds runtime-control frames, object/cache-reference frames, IPC and WebSocket transports, transport-scoped native artifacts, browser WASM primitives, and wire-level conformance support. The Rust runtime remains transport-neutral: client/server session behavior lives in nnrp-runtime, while each transport crate owns its own networking implementation.
Start with Quick Start, then use the API Overview to jump into the exact surface you need.