Skip to content

Transport Composition Roadmap

Status: Roadmap

Last reviewed: 2026-05-30

Purpose

NexusNet transport configuration is modeled as three explicit dimensions:

  • Payload protocol: tcp, udp, or ip
  • Outer transport: tcp, udp, quic, or fake_tcp
  • Security layer: raw, tls, reality, or noise

This replaces overloading legacy mode alone. The current backend implements this model in nexus-backend/src/transport_profile.rs and sends it to agents as TransportProfile protobuf fields.

Feature Status

ProfileStateEvidence
TCP over TCP RAWCompleteTransportSupport::Supported; deployed as TcpProxyRule.
TCP over TCP TLSCompletetls_cert credentials and cert_domain on TcpProxyRule.
TCP over TCP REALITYCompleteREALITY credentials and TCP gateway REALITY path.
UDP over UDP RAWCompleteUdpRule RAW mode.
UDP over UDP NoiseCompleteUdpRule ENC/Noise mode with X25519 key material.
TCP over QUIC REALITYCompleteBackend emits QuicRule/upstream QUIC REALITY; agent uses Quinn stream relay.
UDP over QUIC REALITYCompleteBackend emits QUIC REALITY DATAGRAM paths; agent has DATAGRAM relay.
UDP over FAKE_TCP RAWCompleteTransportSupport::Supported; backend emits UdpRule FAKE_TCP fields and agent carries UDP datagram payloads in TCP-looking raw IP packets.
IP over QUIC REALITY DATAGRAMCompleteL3 tunnels use payload=ip, outer=quic, security=reality.
UDP over TCP RAWPlannedPresent as TransportSupport::Planned; no supported agent rule path.
TCP over UDP NoisePlannedPresent as TransportSupport::Planned; no supported agent rule path.
Legacy mode-only routingDeprecatedPreserved only for compatibility; current UI writes transport profiles.

Current Control-Plane Shape

Each chain node can carry one profile:

json
{
  "transportProfile": {
    "payload": "tcp",
    "outer": "quic",
    "security": "reality",
    "credentialId": "..."
  }
}

For tcp+udp chains, nodes can carry per-payload profiles:

json
{
  "transportProfiles": [
    { "payload": "tcp", "outer": "quic", "security": "reality", "credentialId": "..." },
    { "payload": "udp", "outer": "udp", "security": "raw" }
  ]
}

The backend still writes legacy compatibility fields such as mode and enc_key_id where older rule paths expect them.

Next Work

ItemState
Remove remaining UI dependence on legacy mode labels where profile labels are available.Planned
Keep UDP over FAKE_TCP documented separately from any future real UDP-over-TCP stream framing.Complete
Decide whether TCP-over-UDP Noise is still worth carrying now that QUIC REALITY exists.Planned
Keep L3 modeled as payload=ip, not as fake TCP/UDP routes.Complete

NexusNet documentation