# .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 remains as `ClutchCall.SDK.ClutchCallClient`.

## Verify

```csharp
using ClutchCall.SDK;

var client = await Moqt.Client.ConnectAsync("quic://relay.clutchcall.dev", "");
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 for
`com.unity.transport`. See [Netcode (Unity)](/modalities/netcode/details).

## Next

  - **[Quickstart](/sdks/dotnet/quickstart)** — Streams modality end to end.
  - **[Reference](/sdks/dotnet/reference)** — Every modality, every method.
  - **[Examples](/sdks/dotnet/examples)** — Per-modality examples.
  - **[Netcode (Unity)](/modalities/netcode/details)** — UPM transport package.
