This is an unofficial, experimental prototype and is NOT a production-ready implementation. The protocol itself is still under development by the W3C, and this code is not supported by any organization.
An early draft prototype Rust no_std implementation of the W3C OpenScreen Protocol.
This project is an exploration of the W3C OpenScreen protocol, implemented in Rust with a focus on a no_std and Sans-IO architecture.
- Core Logic: The core crates are
no_stdand use a Sans-IO design, making them suitable for embedded systems and adaptable to any runtime. - Protocol Compliance: Aims to follow the W3C OpenScreen Protocol specification for SPAKE2 authentication, QUIC transport, and mDNS discovery.
- Cross-Platform: The binaries have been verified on macOS and Linux. The core crates are designed to be platform-agnostic.
Current Status: This is a minimally working prototype and is under active development.
The protocol is implemented as a series of composable crates:
openscreen-application/ # W3C Application Protocol (main entry point)
↑
openscreen-network/ # W3C Network Protocol (SPAKE2 auth)
↑
openscreen-quinn/ # QUIC adapter (runtime integration)
↑
openscreen-discovery-mdns/ # mDNS service discovery
# Build the project
cargo build --workspace
# Terminal 1: Start receiver
cargo run --bin app-receiver -- --psk test-psk
# Terminal 2: Start sender (auto-discovers receiver)
cargo run --bin app-sender -- --psk test-pskcargo test --workspace- W3C OpenScreen Network Protocol
- Chromium OpenScreen Implementation
- W3C OpenScreen Protocol Repository
Apache-2.0