> This page is for Topograph, version v1.0.0.
> For other versions, use one of these documentation indexes:
> - Latest · v1.1.0 (default): https://docs.nvidia.com/topograph/v1.1.0/llms.txt
> - v1.0.0: https://docs.nvidia.com/topograph/v1.0.0/llms.txt
> - v0.5.0: https://docs.nvidia.com/topograph/v0.5.0/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/topograph/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/topograph/_mcp/server.

# Nebius Topology Provider

The Nebius topology provider uses the [Nebius AI Cloud SDK for Go](https://github.com/nebius/gosdk).
The `Services().Compute().V1().Instance().List()` method returns a list of compute instances for a specified project.
Each instance may include a `Status.InfinibandTopologyPath` field, which is an array of three network IDs. If present, these IDs describe the path through the three-tier network, from the root switch down to the leaf switch.

To use the API, you must provide authorization.
There are two ways to do this: using account credentials or an authorization token.

## Using credentials:

Nebius credentials consist of the following fields:
* `projectId`
* `serviceAccountId`
* `publicKeyId`
* `privateKey`

The `projectId` field is optional. If it is omitted, the project ID is retrieved from Nebius IMDS at `http://metadata.nebius.internal/v1/instance-data/parent_id` with the `Metadata: true` header.

You can provide credentials either in the Topology configuration file or directly in the topology request payload.

### Credentials via File

Store your credentials in a YAML file:

```yaml
projectId: <PROJECT-ID>
serviceAccountId: <SERVICE-ACCOUNT-ID>
publicKeyId: <PUBLIC-KEY-ID>
privateKey: <PRIVATE-KEY>
```

Then reference this file in your Topograph config:

```yaml
http:
  port: 49021
  ssl: false

provider: nebius
engine: slurm

credentialsPath: /path/to/credentials.yaml
``` 

### Credentials via API Request Payload

Pass credentials directly in the topology request payload:

```json
{
  "provider": {
    "creds": {
      "projectId": "PROJECT-ID",
      "serviceAccountId": "<SERVICE-ACCOUNT-ID>",
      "publicKeyId": "<PUBLIC-KEY-ID>",
      "privateKey": "<PRIVATE-KEY>"
    }
  }
}
```

## Using authorization token

You can provide an authorization token in either of these ways:
* Via the environment variable `IAM_TOKEN`
* Via Nebius IMDS at `http://metadata.nebius.internal/v1/iam/sa/token/access_token` with the `Metadata: true` header