Skip to main content
skill CX Codex GP ChatGPT official · OpenAI

dynamo-interconnect-check — Codex skill: verify RDMA and NVLink

Checks whether the NIXL/UCX/NCCL transport in a Dynamo deployment actually works. Run it before you trust disaggregated serving numbers.

Install into Codex · Skills CLI (Vercel) All methods and platforms ↓
npx skills add openai/plugins --skill dynamo-interconnect-check -a codex
Open on GitHub

What dynamo-interconnect-check does

The skill inspects a recipe's transport environment variables for NIXL, UCX and NCCL. When disagg-critical ones such as UCX_TLS, UCX_NET_DEVICES or NCCL_IB_HCA are absent, that is a warning only, since the image may already carry them. Node and pod checks follow.

Those probes cover InfiniBand devices and Active links, GPUDirect RDMA through nvidia_peermem, GDRCopy, and NVLink in the GPU topology. Tools that are not installed (ibstat, nvidia-smi, lsmod) come back as skipped, which is not a pass. A third check looks for NIXL test tooling inside the pod and points to the command for a pairwise prefill↔decode transfer test. A full cross-pod test needs two scheduled GPU pods on the fabric.

Everything here is read-only: the cluster stays untouched and no secrets are printed. You need Python 3.10+ on the operator machine, kubectl exec access to a worker pod, and read access to the recipe directory. Because the env check reads recipe text, values injected at runtime by initContainers or the operator stay invisible to it. Single-node agg deployments never exercise the transport, so there is nothing to validate. If pods are already crashing or unschedulable, reach for dynamo-troubleshoot first.

What it helps with

  • confirm KV transfer between prefill and decode runs over RDMA instead of a slow fallback path
  • review a recipe's transport environment variables before a disagg deployment starts
  • find out why disagg is slow or hangs while agg behaves fine
  • probe GPUDirect RDMA and NVLink in a node's GPU topology
  • separate a fabric problem from a model problem before publishing benchmarks

Example prompts for the agent

  • Check the transport env vars in recipes/qwen3-coder-480b/sglang/disagg
  • Run the node check for pod qwen-worker-0 in namespace dynamo-demo
  • Validate NIXL readiness in pod qwen-worker-0 and tell me the next command to run

How to install dynamo-interconnect-check

1Skills CLI (Vercel)

npx skills add openai/plugins --skill dynamo-interconnect-check -a codex

2Manually: put the files in place

.agents/skills/dynamo-interconnect-check/SKILL.md

For all projects use ~/.agents/skills/

Step by step, with commands for each platform: Codex skills: how to install, where they live, how to call them

Questions about dynamo-interconnect-check

How do I install dynamo-interconnect-check in Claude?

Run npx skills add openai/plugins --skill dynamo-interconnect-check -a codex. The skill lands in .agents/skills/dynamo-interconnect-check/SKILL.md.

What does dynamo-interconnect-check do?

It validates that the NIXL/UCX/NCCL transport is ready for disaggregated serving over RDMA or NVLink. It inspects recipe env vars, node capabilities, and NIXL reachability in a pod.

How is it different from dynamo-troubleshoot?

This skill checks the transport before you rely on a deployment or its benchmark numbers. For pods that are already failing or unschedulable, start with dynamo-troubleshoot.

Source text

SKILL.md · Apache-2.0
---
name: dynamo-interconnect-check
description: Validate that a Dynamo deployment's NIXL/UCX/NCCL interconnect is ready for disaggregated serving over RDMA/NVLink. Use after recipe-runner brings a deployment up (especially disagg/multi-node) to confirm the KV transport is correct; use troubleshoot for diagnosing already-failed pods.
license: Apache-2.0
metadata:
  author: Dan Gil <[email protected]>
  tags:
    - dynamo
    - nixl
    - rdma
    - disagg
    - validation
---

# Dynamo Interconnect Check

<!--
SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: CC-BY-4.0
-->

## Purpose

Confirm that the transport disaggregated serving depends on actually works. A
deployment can pass an endpoint smoke test while disagg is silently wrong: if
NIXL/UCX cannot reach the peer worker over RDMA or NVLink, KV transfer falls
back to a slow or broken path. Catch that with read-only checks before trusting
a disagg deployment or its benchmark numbers.

This skill is read-only. It never mutates the cluster and never prints secrets.

## Prerequisites

- Python 3.10+ on the operator machine.
- `kubectl exec` access to a worker pod in the target Dynamo deployment.
- Read access to the recipe directory (`recipes/<model>/<framework>/<mode>`).
- For node-capability checks: tools like `ibstat`, `nvidia-smi`, `lsmod` available in the worker pod image (missing tools are reported as `skipped`, not failures).

## When To Use

- After `dynamo-recipe-runner` deploys a **disagg** or multi-node recipe.
- Before reporting disagg throughput/latency, so numbers reflect the real
  transport.
- When agg works but disagg is slow, hangs, or returns wrong output and you
  suspect the fabric rather than the model.

For diagnosing pods that are already crashing or unschedulable, use
`dynamo-troubleshoot` first.

## Instructions

### 1. Check Transport Env Vars On The Recipe

```bash
python3 scripts/check_interconnect.py env recipes/<model>/<framework>/<mode>
```

Reports which NIXL/UCX/NCCL transport variables are set and flags
disagg-critical ones (e.g. `UCX_TLS`, `UCX_NET_DEVICES`, `NCCL_IB_HCA`) that are
absent. Missing here is only a warning — they may be baked into the image — so
confirm with the node and NIXL checks. See
`references/interconnect-env-vars.md` for what each variable does.

### 2. Check Node Capabilities

Locally on a GPU node, or inside a running worker pod:

```bash
python3 scripts/check_interconnect.py node \
  --namespace "${NAMESPACE}" --pod <worker-pod>
```

Probes (read-only) for: InfiniBand devices and Active links, GPUDirect RDMA
(`nvidia_peermem`), GDRCopy, and NVLink in the GPU topology. Missing tools are
reported as `skipped`, not failures.

### 3. Validate NIXL Reachability

```bash
python3 scripts/check_interconnect.py nixl \
  --namespace "${NAMESPACE}" --pod <worker-pod>
```

Looks for NIXL test tooling in the pod and surfaces the exact next step to run a
pairwise prefill↔decode transfer test. A full cross-pod transfer test requires
two scheduled GPU pods on the fabric.

## Available Scripts

| Script | Purpose | Arguments |
|---|---|---|
| `scripts/check_interconnect.py env` | Inspect NIXL/UCX/NCCL env vars on a recipe | positional recipe path |
| `scripts/check_interconnect.py node` | Probe InfiniBand, GPUDirect RDMA, GDRCopy, NVLink on a node or pod | `--namespace`, `--pod` |
| `scripts/check_interconnect.py nixl` | Surface NIXL transfer-test readiness for a pod | `--namespace`, `--pod` |

Invoke via the agentskills.io `run_script()` protocol:

```python
run_script("scripts/check_interconnect.py", args=["env", "recipes/qwen3-coder-480b/sglang/disagg"])
run_script("scripts/check_interconnect.py", args=["node", "--namespace", "dynamo-demo", "--pod", "qwen-worker-0"])
```

## Examples

Verify a disagg recipe's transport env shape before deploy:

```bash
python3 scripts/check_interconnect.py env recipes/qwen3-coder-480b/sglang/disagg
```

After deploy, validate a worker pod's fabric:

```bash
python3 scripts/check_interconnect.py node \
  --namespace dynamo-demo --pod qwen-worker-0
python3 scripts/check_interconnect.py nixl \
  --namespace dynamo-demo --pod qwen-worker-0
```

Equivalent through the agent protocol:

```python
run_script("scripts/check_interconnect.py", args=["nixl", "--namespace", "dynamo-demo", "--pod", "qwen-worker-0"])
```

## Output Contract

Each check returns `ok` / `warn` / `fail` / `skipped` with a one-line detail,
plus a rolled-up verdict on disagg transport readiness. Report:

- transport env vars present vs. disagg-critical ones missing
- RDMA / GPUDirect / NVLink capability status
- whether NIXL reachability was validated, and the next command if not
- a clear statement of whether disagg can be trusted, or what to fix first

## Limitations

- Read-only fabric probe; does not run a full pairwise NIXL transfer (requires two scheduled GPU pods and the in-pod NIXL test tools).
- `skipped` results for missing tools (`ibstat`, `nvidia-smi`, `lsmod`) are inconclusive, not a pass.
- Env-var check inspects the recipe text; values injected at runtime via initContainers or operator-applied envs are not detected.
- Single-node agg deployments do not exercise the transport — this skill is for disagg / multi-node validation.

## Troubleshooting

| Symptom | Likely cause | Next step |
|---|---|---|
| `env` reports all critical vars missing | Vars baked into image or injected by operator | Run the `node` check inside the worker pod to verify actual env |
| `node` reports no Active IB link | Fabric down or HCA not provisioned to the node | Contact cluster admin; verify `kubectl describe node` shows `nvidia.com/gpu` and IB labels |
| `nvidia_peermem` missing | GPUDirect RDMA module not loaded | Ask cluster admin to load `nvidia-peermem`; without it, NIXL falls back to staged copies |
| `nixl` finds no test tools | Worker image lacks NIXL test harness | Use a NIXL-enabled image or run the standalone transfer test from a debug pod |

## Benchmark

See `BENCHMARK.md` for the NVCARPS-EVAL performance report (auto-generated by the NVSkills CI pipeline). To refresh, re-run `/nvskills-ci` on an upstream PR touching this skill.

## References

- `references/interconnect-env-vars.md` — NIXL/UCX/NCCL env var catalog and IB
  capability checklist.
- Use `scripts/check_interconnect.py` for all read-only checks.

© Dan Gil · Apache-2.0 · openai/plugins

Similar skills

All skills for DevOps and infrastructure →

From the same set528

The whole set →
physical-ai-infrastructure-setup-and-resilient-scaling This skill guides setup and checks for NVIDIA Physical AI infrastructure used in synthetic data generation on MicroK8s or Azure AKS. It covers OSMO deployment and infrastructure recovery too. CX Codex GP ChatGPT ★ 7,604repo stars omniverse-usd-performance-tuning An orchestrator for slow loading, memory pressure and low FPS in USD scenes. It walks the agent through profiling phases up to a final report. CX Codex GP ChatGPT ★ 7,604repo stars omniverse-realtime-viewer Orchestrates OpenUSD real-time viewer apps using NVIDIA Omniverse. Selects implementation recipes and enforces core rendering rules. CX Codex GP ChatGPT ★ 7,604repo stars omniverse-cad-to-simready Coordinates the path from a CAD model or other source asset to SimReady USD and packaging. Use it to handle conversion, material and physics assignment, validation, and conformance checks. CX Codex GP ChatGPT ★ 7,604repo stars cuopt-user-rules A skill that tells the agent how to help with NVIDIA cuOpt: routing, LP, MILP, QP, installation and the server. CX Codex GP ChatGPT ★ 7,604repo stars aiq-deploy This skill deploys and checks NVIDIA AI-Q Blueprint infrastructure, then helps with troubleshooting or shutdown when the service needs attention. CX Codex GP ChatGPT ★ 7,604repo stars mixpanelyst This skill queries and examines Mixpanel data with Python. Use it for funnels, retention, cohorts, segmentation, and user behavior analysis. CX Codex GP ChatGPT ★ 7,604repo stars mixpanel-auth A Claude skill that manages Mixpanel accounts: checks the session, adds credentials, runs OAuth login and switches projects. CX Codex GP ChatGPT ★ 7,604repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor