You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/api.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ http:
20
20
provider: test
21
21
22
22
# engine: the engine that topograph will use (optional)
23
-
# Valid options include "slurm", "k8s", or "slinky".
23
+
# Valid options include "slurm", "k8s", "slinky", or "graph".
24
24
# Can be overridden if the engine is specified in a topology request to topograph
25
25
engine: slurm
26
26
@@ -73,11 +73,11 @@ Topograph exposes three endpoints for interacting with the service. Below are th
73
73
-**creds**: (optional) A key-value map with provider-specific parameters for authentication.
74
74
-**params**: (optional) A key-value map with provider-specific parameters. The `test` provider uses these parameters for response simulation; for complete behavior and examples, see [Test Mode and Test Provider](./providers/test.md).
75
75
-**engine**: (optional) Selects the topology output and provides any engine-specific parameters.
76
-
-**name**: (optional) A string specifying the topology output, either `slurm`, `k8s`, or `slinky`. This parameter will override the engine set in the topograph config.
76
+
-**name**: (optional) A string specifying the topology output, either `slurm`, `k8s`, `slinky`, or `graph`. This parameter will override the engine set in the topograph config.
77
77
-**params**: (optional) A key-value map with engine-specific parameters.
78
78
-**plugin**: (optional) Used in: [`slurm`, `slinky`]. A string specifying the cluster-wide topology plugin: `topology/tree` or `topology/block`. For `slurm`, this defaults to `topology/tree` when neither `plugin` nor `topologies` is set. Do not set `plugin` together with `topologies`.
79
79
-**blockSizes**: (optional) Used in: [`slurm`, `slinky`]. An array of block sizes for `topology/block`.
80
-
-**topologyConfigPath**: Used in: [`slurm`, `slinky`]. Optional for `slurm`; required for `slinky`. For `slurm`, a file path for the topology configuration; if omitted, the topology config content is returned in the HTTP response. For `slinky`, the key for the topology config in the ConfigMap.
80
+
-**topologyConfigPath**: Used in: [`slurm`, `slinky`, `graph`]. Optional for `slurm` and `graph`; required for `slinky`. For `slurm`, a file path for the topology configuration; if omitted, the topology config content is returned in the HTTP response. For `slinky`, the key for the topology config in the ConfigMap. For `graph`, an existing path on the Topograph host where instance JSON should be written; if omitted, the JSON is returned in the topology response.
81
81
-**topologies**: (optional) Used in: [`slurm`, `slinky`]. A map of named per-partition topology settings. Do not set top-level `plugin` together with `topologies`.
82
82
-**plugin**: Used in: [`slurm`, `slinky`]. A required string specifying the per-partition topology plugin: `topology/tree`, `topology/block`, or `topology/flat`.
83
83
-**blockSizes**: (optional) Used in: [`slurm`, `slinky`]. An array of block sizes for `topology/block`.
The `graph` engine returns instance-oriented topology metadata as JSON. It is intended for clients that need per-instance GPU and placement context rather than scheduler-specific output such as `topology.conf`, Kubernetes node labels, or a Slinky ConfigMap.
4
+
5
+
The engine preserves the provider/engine boundary: providers still discover topology and instance metadata, while the `graph` engine only assembles and emits the requested instance records.
6
+
7
+
## Output
8
+
9
+
By default, the generated JSON is returned in the `/v1/topology` response:
10
+
11
+
```json
12
+
{
13
+
"instances": [
14
+
{
15
+
"id": "I21",
16
+
"type": "H100",
17
+
"provider": "test",
18
+
"region": "us-west",
19
+
"network_layers": ["leaf-a", "spine-a"],
20
+
"attributes": {
21
+
"nvlink": "nvl-1",
22
+
"gpu": {
23
+
"status": "known",
24
+
"collected_at": "2026-01-01T13:59:00.000Z",
25
+
"gpus": [
26
+
{
27
+
"index": 0,
28
+
"pci_bus_id": "00000000:0F:00.0",
29
+
"uuid": "GPU-example",
30
+
"model": "NVIDIA H100 SXM5 80GB",
31
+
"memory_mib": 81920
32
+
}
33
+
]
34
+
}
35
+
}
36
+
}
37
+
]
38
+
}
39
+
```
40
+
41
+
Set `engine.params.topologyConfigPath` to write the JSON to an existing validated path on the Topograph host. When `topologyConfigPath` is set, the HTTP result body is `OK`.
42
+
43
+
## Request
44
+
45
+
The engine needs the instance IDs to export. Supply `nodes` in the request, or use a provider that can supply compute instances directly. The initial implementation is covered by the `test` provider and model-backed simulation providers.
Copy file name to clipboardExpand all lines: docs/get-started/quickstart-k8s.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Install on Kubernetes
2
2
3
-
Topograph installs on a Kubernetes cluster via a Helm chart. The same chart supports two engines:
3
+
Topograph installs on a Kubernetes cluster via a Helm chart. This quickstart covers the two Kubernetes-facing scheduler engines:
4
4
5
5
-**[`k8s` engine](#engine-k8s)** — labels Kubernetes nodes with topology keys so schedulers (native `podAffinity`, KAI Scheduler, Kueue TAS, etc.) can make topology-aware placement decisions
6
6
-**[`slinky` engine](#engine-slinky)** — writes Slurm topology configuration into a `ConfigMap` for [Slinky](https://github.com/SlinkyProject) (Slurm-on-Kubernetes) deployments
Copy file name to clipboardExpand all lines: docs/modeling.md
+13-12Lines changed: 13 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -126,8 +126,9 @@ The `nodes` map describes compute nodes directly. Each key is the node name. The
126
126
127
127
| Field | Description |
128
128
|---|---|
129
-
| `name` | Optional. If set, it must match the map key. Usually omitted. |
130
-
| `capacity_block_id` | Optional accelerated domain ID. If set and `capacity_blocks` is omitted, Topograph creates the corresponding capacity block entry. |
129
+
| `id` | Optional. If set, it must match the map key. Usually omitted. |
130
+
| `type` | Optional instance type metadata used by instance-oriented exports. |
131
+
| `capacity_block` | Optional accelerated domain ID. If set and `capacity_blocks` is omitted, Topograph creates the corresponding capacity block entry. |
131
132
| `attributes.nvlink` | Optional accelerated-domain / NVLink identifier. Used by block topology simulation paths. |
132
133
| `attributes.status` | Optional node status metadata. |
Copy file name to clipboardExpand all lines: docs/providers/test.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -93,7 +93,7 @@ The test provider is configured through `provider.params` in the `/v1/generate`
93
93
}
94
94
```
95
95
96
-
The `engine` object follows the normal Topograph engine configuration. For example, use `slurm` parameters to request `topology/tree` or `topology/block` output, use `k8s` parameters to write node labels, or use `slinky` parameters to update a Slinky ConfigMap.
96
+
The `engine` object follows the normal Topograph engine configuration. For example, use `slurm` parameters to request `topology/tree` or `topology/block` output, use `k8s` parameters to write node labels, use `slinky` parameters to update a Slinky ConfigMap, or use `graph` to return model-backed instance metadata as JSON.
0 commit comments