# .NET Installation

> Install the polyglot SDK for .NET 9+ and Unity.

```bash
dotnet add package ClutchCall.SDK
```

P/Invoke loads `clutchcall_core_ffi.{so,dylib,dll}` from the default search path
or via `CLUTCHCALL_LIB_PATH`.

## Namespace

```csharp
using ClutchCall.SDK;
// Voice, Streams, Robotics, Games, Data, Moqt
```

Each modality is a class under the same namespace. The legacy voice-RPC
surface stays available as `ClutchCall.SDK.ClutchCallClient`.

## Verify

```csharp
using ClutchCall.SDK;

var client = await Moqt.Client.ConnectAsync("quic://relay.firstbyte.fast", "");
Console.WriteLine($"rtt: {client.ConnectionRttUs} µs");
await client.DisposeAsync();
```

## Unity

For Unity Netcode for GameObjects / Entities, install the matching UPM
package instead. `com.clutchcall.transport` is a drop-in replacement
for `com.unity.transport`. See [Netcode (Unity)](/modalities/netcode/details).

## Next

  - **[Quickstart](/sdks/dotnet/quickstart)** — Follow the streams modality end to end.
  - **[Reference](/sdks/dotnet/reference)** — See every modality and every method.
  - **[Examples](/sdks/dotnet/examples)** — See examples for each modality.
  - **[Netcode (Unity)](/modalities/netcode/details)** — Use the UPM transport package.
