vac:p2p:ift:2026q1-nimlibp2p-webtransport

Implement WebTransport support in nim-libp2p, enabling browser/server bidirectional streams via h3+quic. built atop nim-lsquic, extending its current quic-only integration.

Description

Extend the number of transports supported by nim-libp2p via the development of Webtransport, which would allow browsers to establish bidirectional stream connections to nim-libp2p servers This is done by using ls-quic which nim-libp2p already uses for quic transport

Task List

Http3 engine

  • fully qualified name: vac:p2p:ift:2026q1-nimlibp2p-webtransport:http3-engine
  • owner: not assigned yet
  • status: not started
  • start-date: 2026/01/01
  • end-date: 2026/03/31

Description

Extend nim-lsquic bindings to support acting as a proper http3 engine. enable configuration flags for h3 mode vs raw-quic mode, implement the callback plumbing for headers, datagrams, and stream events required by webtransport.

Deliverables

  • New h3-capable initialization api in nim-lsquic.

Client

  • fully qualified name: vac:p2p:ift:2026q1-nimlibp2p-webtransport:client
  • owner: not assigned yet
  • status: not started
  • start-date: 2026/01/01
  • end-date: 2026/03/31

Description

Implement client-side webtransport session establishment

Deliverables

Client side functionality that allows establishing a connection via webtransport

Server

  • fully qualified name: vac:p2p:ift:2026q1-nimlibp2p-webtransport:server
  • owner: not assigned yet
  • status: not started
  • start-date: 2026/01/01
  • end-date: 2026/03/31

Description

Server acceptance of webtransport sessions

Deliverables

Server side functionality that allows accepting connections via webtransport

Transport

  • fully qualified name: vac:p2p:ift:2026q1-nimlibp2p-webtransport:transport
  • owner: not assigned yet
  • status: not started
  • start-date: 2026/01/01
  • end-date: 2026/03/31

Description

Introduce a new libp2p transport that spins up a dedicated nim-lsquic instance with http3 enabled on a separate UDP port from raw quic transport. Map libp2p connection and stream abstractions to webtransport sessions and streams.

Deliverables

A libp2p transport that allows web clients to communicate with nim-libp2p nodes via WebTransport

Interop

  • fully qualified name: vac:p2p:ift:2026q1-nimlibp2p-webtransport:interop
  • owner: not assigned yet
  • status: not started
  • start-date: 2026/01/01
  • end-date: 2026/03/31

Description

Ensure interoperability with other libp2p implementations, with focus on js-libp2p

Deliverables

  • Interop test suite runnable in CI