The netcode SDK is a Unity Package Manager (UPM) package, not a typed client library. You install it. You add one component in place of UnityTransport. Unity Netcode then drives it through the standard INetworkInterface surface. You configure it in the inspector (or in C#). The public method surface is UTP’s own. The package forwards it to the QUIC + MoQT substrate.

Install (UPM git URL)

Add the package to your Unity project via Package Manager → Add package from git URL:
The package depends on com.unity.transport (it implements UTP’s INetworkInterface). It works with both Netcode for GameObjects and Netcode for Entities. Pin Netcode to a version compatible with your Unity editor. The transport tracks UTP’s stable interface, not a specific Netcode release.

Swap the transport

In your network manager prefab, remove UnityTransport and add ClutchCallTransport as the transport component. Unity Netcode discovers it the same way that it discovers UTP. No other wiring changes are necessary.
1

Select the NetworkManager

Open the prefab (or scene object) that holds your NetworkManager.
2

Replace the transport component

Remove the existing UnityTransport component. Add ClutchCallTransport. If NetworkManager.NetworkConfig.NetworkTransport referenced the old component, point it at the new component.
3

Configure relay host + token

Set the relay host and an auth token in the inspector. This is the same way that you configure a relay endpoint for UTP.

Component: ClutchCallTransport

ClutchCallTransport is a NetworkTransport (Netcode) that implements UTP’s INetworkInterface. It is the only type that you reference directly. Everything else is standard Netcode.

Inspector fields

string
required
The FirstByte relay endpoint, e.g. relay.firstbyte.fast. Players dial the nearest POP behind this host.
string
required
The FirstByte auth token that authorizes the QUIC session. Mint a short-lived, room-scoped token from your control-plane API. Do not ship a static secret in the build.
string
The room / match namespace that this player joins. The host and the clients of the same match share one Room Id.
string
Optional pinned certificate hash for the relay’s TLS 1.3 certificate. Use it in environments that pin the certificate instead of the public trust store.
int
default:"path MTU"
Upper bound for the unreliable (QUIC datagram) channel. MaxPayloadSize() reads it back. The transport rejects payloads larger than this. It does not fragment them.

Configure from C#

You can set the same fields in code before StartHost / StartClient:

UTP method surface

The package implements INetworkInterface. Thus the methods that you call are Unity Netcode / UTP methods. The transport forwards each one to the QUIC + MoQT substrate. These methods matter most for porting:

NetworkDelivery → lane mapping

Unity’s NetworkDelivery enum selects the lane:
Send high-frequency, latest-wins traffic (transforms, tick snapshots, inputs) as Unreliable. Keep Reliable* for spawns, despawns, and RPCs. This is the same discipline as with UTP. The transport only realizes each lane over QUIC instead of UDP.

Events

The transport shows the connection lifecycle through Netcode’s standard callbacks. You do not subscribe to transport-specific events:

Non-Unity engines

The Unity component is a thin wrapper over a shared C++ star session (host + N peers with reliable + unreliable + discovery). To integrate a non-Unity engine, you implement a small set of engine-side hooks: discovery, RTT, max-datagram, capture-time telemetry, and the datagram-lane mapping. You reuse the rest of the session machinery. For a fully typed, language-native surface (TypeScript / Python / Go / Rust / Java / C#) without Unity, use the Games SDK. It exposes the same state / input / event channels directly.

Cookbook

This page has copy-paste snippets for the common porting tasks.

Games SDK

This is the typed, non-Unity surface for the same wire model.