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.
npx skills add openai/plugins --skill dynamo-interconnect-check -a codexWhat 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-0in namespacedynamo-demo - Validate NIXL readiness in pod
qwen-worker-0and 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 codex2Manually: put the files in place
.agents/skills/dynamo-interconnect-check/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add openai/plugins --skill dynamo-interconnect-check -a claude-code2Manually: put the files in place
~/.claude/skills/dynamo-interconnect-check/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/dynamo-interconnect-check/
Manually: put the files in place
.cursor/skills/dynamo-interconnect-check/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install openai/plugins dynamo-interconnect-check2Manually: put the files in place
.github/skills/dynamo-interconnect-check/SKILL.mdPlatform CLI
gemini skills install https://github.com/openai/plugins --path plugins/nvidia/skills/dynamo-interconnect-checkManually: put the files in place
.devin/skills/dynamo-interconnect-check/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → 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