[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-k8s-launch-kit-config":3,"mdc--h65anq-key":34,"related-repo-nvidia-k8s-launch-kit-config":2070,"related-org-nvidia-k8s-launch-kit-config":2160},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"k8s-launch-kit-config","configure k8s-launch-kit clusters","Use this skill when the user needs help understanding, creating, or editing a k8s-launch-kit (l8k) configuration file (l8k-config.yaml or cluster-config.yaml). Activate for: config file questions, parameter tuning, subnet configuration, NV-IPAM setup, DOCA driver settings, maintenance concurrency, NIC configuration operator settings, changing MTU, VFs, resource names, or understanding what any config field does.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19,20],{"name":13,"slug":14,"type":15},"Configuration","configuration","tag",{"name":17,"slug":18,"type":15},"Deployment","deployment",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Kubernetes","kubernetes",14,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fk8s-launch-kit","2026-07-30T05:29:15.229216",null,4,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"K8s Launch Kit (l8k) is a CLI tool for deploying and managing NVIDIA cloud-native solutions on Kubernetes. The tool helps provide flexible deployment workflows for optimal network performance with SR-IOV, RDMA, and other networking technologies.","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fk8s-launch-kit\u002Ftree\u002FHEAD\u002Fskills\u002Fk8s-launch-kit-config","---\nname: k8s-launch-kit-config\nversion: 1.2.1\ndescription: \"Use this skill when the user needs help understanding, creating, or editing a k8s-launch-kit (l8k) configuration file (l8k-config.yaml or cluster-config.yaml). Activate for: config file questions, parameter tuning, subnet configuration, NV-IPAM setup, DOCA driver settings, maintenance concurrency, NIC configuration operator settings, changing MTU, VFs, resource names, or understanding what any config field does.\"\nmetadata:\n  requires:\n    skills: [\"k8s-launch-kit-shared\"]\n---\n\n# l8k: Configuration Files\n\n> **PREREQUISITE:** Read `..\u002Fk8s-launch-kit-shared\u002FSKILL.md` for install paths, global flags, and output modes.\n\nUnderstand, create, or edit l8k configuration files.\n\n## File Types\n\n| File | Source | Purpose |\n|------|--------|---------|\n| `cluster-config.yaml` | Generated by `l8k discover` | Hardware inventory plus the resolved deployment profile |\n| `l8k-config.yaml` | User-created or copied from cluster-config | Full config with both hardware + deployment settings |\n\n## Usage\n\n```bash\n# Use a config file for generation\nl8k generate --user-config my-config.yaml \\\n  --save-deployment-files .\u002Foutput\n\n# Combine user config with live discovery (hardware refreshed, settings kept)\nl8k discover --user-config my-config.yaml \\\n  --kubeconfig ~\u002F.kube\u002Fconfig \\\n  --save-cluster-config .\u002Fupdated-config.yaml\n```\n\n## Profile Resolution and Write-Back\n\nDiscovery and file-backed generation resolve and persist settings with this precedence:\n\n1. Hardware and built-in defaults fill missing fields.\n2. Values already present in `--user-config` are preserved.\n3. Explicit CLI flags override both.\n\nDiscovery writes to its selected output YAML; generation rewrites its source\nconfig in place. On later runs, only missing fields are recalculated.\n`multirail: false` is an explicit value, not a missing field, so it remains\nfalse across rewrites.\n\n## Config Sections Quick Reference\n\n| Section | What It Controls |\n|---------|-----------------|\n| `networkOperator` | Operator namespace, version, image repository, helm chart repository (`helmRepoURL`) |\n| `docaDriver` | OFED\u002FDOCA driver image, version, blacklist settings |\n| `maintenance` | Maintenance Operator, SR-IOV drain, and legacy OFED upgrade concurrency |\n| `nvIpam` | NV-IPAM IP pool ranges and subnet generation |\n| `sriov` | VF count, resource prefix, MTU, link type |\n| `hostdev` | Host device resource name |\n| `rdmaShared` | RDMA shared device resource name |\n| `ipoib` | IPoIB master interface, resource name |\n| `macvlan` | MacVLAN master interface, mode |\n| `nicConfigurationOperator` | NIC firmware template settings |\n| `spectrumX` | OVS bridge config, multiplane mode, RDMA settings |\n| `profile` | Profile selection criteria (fabric, deployment, multirail) |\n| `clusterConfig[]` | Per-group hardware: NICs, nodes, capabilities, selectors |\n\nEach `clusterConfig[]` entry has these key fields:\n\n- `identifier` — group name (used for `NicNodePolicy` naming). For groups with both `machineType` and `gpuType` resolved, this is the sanitised machine label (`\u003CmachineType>-\u003CgpuType>`); otherwise a fallback `group-N`.\n- `machineType` — server model (e.g. `PowerEdge-XE9680`); populated from `nvidia.com\u002Fgpu.machine` label or DMI fallback.\n- `gpuType` — GPU SKU (e.g. `NVIDIA-H200`); populated from `nvidia.com\u002Fgpu.product` label or `nvidia-smi` fallback. **Note:** this field used to be called `productType` — the rename happened to disambiguate it from the server model. Old `productType:` keys in hand-authored configs must be renamed to `gpuType:`.\n- `capabilities.nodes.{sriov,rdma,ib}` — what the underlying hardware supports.\n- `pfs[]` — physical function list with PCI address, device ID, RDMA device, network interface, traffic class, rail, NUMA, GPU affinity, and `model` (the VPD model\u002Fdescription string read from `NicDevice.Status.modelName`).\n  - **One rail per NIC (default).** Discovery advertises one rail per physical NIC: a NIC's multi-plane east-west PFs (planes of one port, e.g. Spectrum-X ConnectX-8\u002F9) collapse to the master PF, so an 8-PF node lists 4 east-west PFs \u002F 4 rails. A NIC whose `model` is genuinely dual-port (`2-port`\u002F`Dual-port`) keeps a rail per port. Run `l8k discover --collapse-nic-rails=false` to emit one rail per PF (legacy\u002Fdev behaviour).\n- `nodeSelector` — Kubernetes node selector for this group. Source groups key on the machine label written by `l8k discover`: `nvidia.kubernetes-launch-kit.machine: \u003CmachineType>-\u003CgpuType>`. Auto-merged groups (different machineTypes sharing a GPU type) key on `nvidia.kubernetes-launch-kit.gpu: \u003CgpuType>` instead — discovery writes both labels onto every node, so the merged selector binds correctly across source machineTypes.\n- `workerNodes` — explicit hostnames (populated by discovery).\n\nFor the full field-by-field reference with types, defaults, and descriptions,\nread `references\u002Fconfig-reference.md`.\n\n## Topology Presets\n\nThe `presets\u002F` directory contains pre-recorded topologies for known hardware combinations. A preset is a `topology.yaml` file with the following shape:\n\n```yaml\nmachineType: PowerEdge-XE9680   # required\ngpuType: NVIDIA-H200            # required — both keys are matched as a pair\nnicModel: BlueField-3 SuperNIC (ConnectX-7)\ngpuInterconnect: NV18\nnumaNodes: 2\n\n# Required if the preset will be used with `l8k generate --for`.\n# Discovery-time overlay does not need this block.\ncapabilities:\n  nodes:\n    sriov: true\n    rdma: true\n    ib: false\n\npfs:\n  - deviceID: a2dc\n    pciAddress: 0000:1a:00.0\n    traffic: east-west\n    rail: 0\n    numaNode: 0\n    connectedGPU: GPU0\n    gpuProximity: PIX\n```\n\n**Lookup is exact-match on `(machineType, gpuType)`.** No any-GPU fallback — a preset that doesn't declare `gpuType:` is rejected at load time. Multi-variant presets for the same machine (different GPU SKUs) live in separate directories with composite names like `PowerEdge-XE9680-H200` \u002F `PowerEdge-XE9680-B200`. The directory name is shown by `l8k preset list` and is what `l8k generate --for \u003Cname>` accepts.\n\n**Validation deviations.** When the matched preset's PF count, PCI addresses, or device IDs don't exactly match discovered hardware, the preset is **NOT applied** — discovery keeps the live-discovered topology (traffic\u002Frail\u002FNUMA), because overlaying a preset onto a different PCI layout would corrupt the classification (a coincidentally-overlapping PCI address would inherit the preset's unrelated traffic\u002Frail\u002FGPU fields). The discrepancies are recorded under `clusterConfig[*].presetDeviation` and every subsequent config load re-emits a warning listing each deviation. The preset's authoritative topology is overlaid **only on an exact match** (zero deviations); `presetApplied: true` appears only in that case. Part-number and PSID differences are expected (firmware\u002FSKU variants) and never block application.\n\n## Common Edits\n\n```yaml\n# Change VF count per PF\nsriov:\n  numVfs: 16\n\n# Change MTU\nsriov:\n  mtu: 9000\n\n# Set DOCA driver version\ndocaDriver:\n  version: \"doca3.3.0-26.01-1.0.0.0-6\"\n\n# Allow four simultaneous maintenance operations. Network Operator 26.1+\n# uses the global Maintenance Operator limits; older releases use the legacy\n# SR-IOV\u002FOFED limits where applicable.\nmaintenance:\n  maxParallelOperations: 4\n  maxUnavailable: 4\n  maxNodeMaintenanceTimeSeconds: 3600\n  maxParallelUpgrades: 4\n\n# Override the helm chart repository URL (rarely needed — the embedded\n# release catalog supplies the right URL for each MAJOR.MINOR release).\n# Useful only for mirrors or private chart hosts.\nnetworkOperator:\n  helmRepoURL: \"https:\u002F\u002Fmy-mirror.example.com\u002Fcharts\"\n\n# Configure NV-IPAM subnets manually\nnvIpam:\n  subnets:\n    - name: \"rail-0-subnet\"\n      cidr: \"10.10.0.0\u002F16\"\n      gateway: \"10.10.0.1\"\n\n# Namespaces for the secondary-network CRs + example test DaemonSets.\n# One independent copy is rendered per namespace (shared resources like\n# IPPools and NodePolicies are NOT duplicated). Defaults to [\"default\"].\nnetworkNamespaces: [\"my-namespace\"]\n```\n\n## Tips\n\n- Start by running discovery (`l8k discover`) to generate a baseline, then edit it.\n- A discovered config can be passed directly to `l8k generate` without\n  repeating profile flags; use flags only for overrides.\n- Use `l8k schema` to discover the Network Operator release keys supported by\n  the installed l8k version.\n- `nvIpam` subnets are auto-generated if not specified — one per rail using non-routable ranges.\n- `docaDriver.unloadThirdPartyRDMAModules: true` auto-populates `UNLOAD_THIRD_PARTY_RDMA_MODULES` from discovered OFED-dependent modules.\n- For release 26.1+, SR-IOV requestor mode requires both the Network Operator drain requestor and the SR-IOV external drainer. l8k renders both; applying only CRs cannot enable their Deployment environment variables.\n- Updating an existing release to the generated requestor-mode Helm values requires `--overwrite-existing`.\n\n## See Also\n\n- [k8s-launch-kit-shared](..\u002Fk8s-launch-kit-shared\u002FSKILL.md) — Global flags\n- [k8s-launch-kit-discover](..\u002Fk8s-launch-kit-discover\u002FSKILL.md) — Generate a config from live cluster\n- `references\u002Fconfig-reference.md` — Complete annotated YAML, including maintenance value restrictions\n",{"data":35,"body":41},{"name":4,"version":36,"description":6,"metadata":37},"1.2.1",{"requires":38},{"skills":39},[40],"k8s-launch-kit-shared",{"type":42,"children":43},"root",[44,53,78,83,90,173,179,323,329,334,362,375,381,632,644,915,927,933,954,1314,1370,1410,1416,1931,1937,2024,2030,2064],{"type":45,"tag":46,"props":47,"children":49},"element","h1",{"id":48},"l8k-configuration-files",[50],{"type":51,"value":52},"text","l8k: Configuration Files",{"type":45,"tag":54,"props":55,"children":56},"blockquote",{},[57],{"type":45,"tag":58,"props":59,"children":60},"p",{},[61,67,69,76],{"type":45,"tag":62,"props":63,"children":64},"strong",{},[65],{"type":51,"value":66},"PREREQUISITE:",{"type":51,"value":68}," Read ",{"type":45,"tag":70,"props":71,"children":73},"code",{"className":72},[],[74],{"type":51,"value":75},"..\u002Fk8s-launch-kit-shared\u002FSKILL.md",{"type":51,"value":77}," for install paths, global flags, and output modes.",{"type":45,"tag":58,"props":79,"children":80},{},[81],{"type":51,"value":82},"Understand, create, or edit l8k configuration files.",{"type":45,"tag":84,"props":85,"children":87},"h2",{"id":86},"file-types",[88],{"type":51,"value":89},"File Types",{"type":45,"tag":91,"props":92,"children":93},"table",{},[94,118],{"type":45,"tag":95,"props":96,"children":97},"thead",{},[98],{"type":45,"tag":99,"props":100,"children":101},"tr",{},[102,108,113],{"type":45,"tag":103,"props":104,"children":105},"th",{},[106],{"type":51,"value":107},"File",{"type":45,"tag":103,"props":109,"children":110},{},[111],{"type":51,"value":112},"Source",{"type":45,"tag":103,"props":114,"children":115},{},[116],{"type":51,"value":117},"Purpose",{"type":45,"tag":119,"props":120,"children":121},"tbody",{},[122,151],{"type":45,"tag":99,"props":123,"children":124},{},[125,135,146],{"type":45,"tag":126,"props":127,"children":128},"td",{},[129],{"type":45,"tag":70,"props":130,"children":132},{"className":131},[],[133],{"type":51,"value":134},"cluster-config.yaml",{"type":45,"tag":126,"props":136,"children":137},{},[138,140],{"type":51,"value":139},"Generated by ",{"type":45,"tag":70,"props":141,"children":143},{"className":142},[],[144],{"type":51,"value":145},"l8k discover",{"type":45,"tag":126,"props":147,"children":148},{},[149],{"type":51,"value":150},"Hardware inventory plus the resolved deployment profile",{"type":45,"tag":99,"props":152,"children":153},{},[154,163,168],{"type":45,"tag":126,"props":155,"children":156},{},[157],{"type":45,"tag":70,"props":158,"children":160},{"className":159},[],[161],{"type":51,"value":162},"l8k-config.yaml",{"type":45,"tag":126,"props":164,"children":165},{},[166],{"type":51,"value":167},"User-created or copied from cluster-config",{"type":45,"tag":126,"props":169,"children":170},{},[171],{"type":51,"value":172},"Full config with both hardware + deployment settings",{"type":45,"tag":84,"props":174,"children":176},{"id":175},"usage",[177],{"type":51,"value":178},"Usage",{"type":45,"tag":180,"props":181,"children":186},"pre",{"className":182,"code":183,"language":184,"meta":185,"style":185},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Use a config file for generation\nl8k generate --user-config my-config.yaml \\\n  --save-deployment-files .\u002Foutput\n\n# Combine user config with live discovery (hardware refreshed, settings kept)\nl8k discover --user-config my-config.yaml \\\n  --kubeconfig ~\u002F.kube\u002Fconfig \\\n  --save-cluster-config .\u002Fupdated-config.yaml\n","bash","",[187],{"type":45,"tag":70,"props":188,"children":189},{"__ignoreMap":185},[190,202,234,248,257,266,291,309],{"type":45,"tag":191,"props":192,"children":195},"span",{"class":193,"line":194},"line",1,[196],{"type":45,"tag":191,"props":197,"children":199},{"style":198},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[200],{"type":51,"value":201},"# Use a config file for generation\n",{"type":45,"tag":191,"props":203,"children":205},{"class":193,"line":204},2,[206,212,218,223,228],{"type":45,"tag":191,"props":207,"children":209},{"style":208},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[210],{"type":51,"value":211},"l8k",{"type":45,"tag":191,"props":213,"children":215},{"style":214},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[216],{"type":51,"value":217}," generate",{"type":45,"tag":191,"props":219,"children":220},{"style":214},[221],{"type":51,"value":222}," --user-config",{"type":45,"tag":191,"props":224,"children":225},{"style":214},[226],{"type":51,"value":227}," my-config.yaml",{"type":45,"tag":191,"props":229,"children":231},{"style":230},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[232],{"type":51,"value":233}," \\\n",{"type":45,"tag":191,"props":235,"children":237},{"class":193,"line":236},3,[238,243],{"type":45,"tag":191,"props":239,"children":240},{"style":214},[241],{"type":51,"value":242},"  --save-deployment-files",{"type":45,"tag":191,"props":244,"children":245},{"style":214},[246],{"type":51,"value":247}," .\u002Foutput\n",{"type":45,"tag":191,"props":249,"children":250},{"class":193,"line":27},[251],{"type":45,"tag":191,"props":252,"children":254},{"emptyLinePlaceholder":253},true,[255],{"type":51,"value":256},"\n",{"type":45,"tag":191,"props":258,"children":260},{"class":193,"line":259},5,[261],{"type":45,"tag":191,"props":262,"children":263},{"style":198},[264],{"type":51,"value":265},"# Combine user config with live discovery (hardware refreshed, settings kept)\n",{"type":45,"tag":191,"props":267,"children":269},{"class":193,"line":268},6,[270,274,279,283,287],{"type":45,"tag":191,"props":271,"children":272},{"style":208},[273],{"type":51,"value":211},{"type":45,"tag":191,"props":275,"children":276},{"style":214},[277],{"type":51,"value":278}," discover",{"type":45,"tag":191,"props":280,"children":281},{"style":214},[282],{"type":51,"value":222},{"type":45,"tag":191,"props":284,"children":285},{"style":214},[286],{"type":51,"value":227},{"type":45,"tag":191,"props":288,"children":289},{"style":230},[290],{"type":51,"value":233},{"type":45,"tag":191,"props":292,"children":294},{"class":193,"line":293},7,[295,300,305],{"type":45,"tag":191,"props":296,"children":297},{"style":214},[298],{"type":51,"value":299},"  --kubeconfig",{"type":45,"tag":191,"props":301,"children":302},{"style":214},[303],{"type":51,"value":304}," ~\u002F.kube\u002Fconfig",{"type":45,"tag":191,"props":306,"children":307},{"style":230},[308],{"type":51,"value":233},{"type":45,"tag":191,"props":310,"children":312},{"class":193,"line":311},8,[313,318],{"type":45,"tag":191,"props":314,"children":315},{"style":214},[316],{"type":51,"value":317},"  --save-cluster-config",{"type":45,"tag":191,"props":319,"children":320},{"style":214},[321],{"type":51,"value":322}," .\u002Fupdated-config.yaml\n",{"type":45,"tag":84,"props":324,"children":326},{"id":325},"profile-resolution-and-write-back",[327],{"type":51,"value":328},"Profile Resolution and Write-Back",{"type":45,"tag":58,"props":330,"children":331},{},[332],{"type":51,"value":333},"Discovery and file-backed generation resolve and persist settings with this precedence:",{"type":45,"tag":335,"props":336,"children":337},"ol",{},[338,344,357],{"type":45,"tag":339,"props":340,"children":341},"li",{},[342],{"type":51,"value":343},"Hardware and built-in defaults fill missing fields.",{"type":45,"tag":339,"props":345,"children":346},{},[347,349,355],{"type":51,"value":348},"Values already present in ",{"type":45,"tag":70,"props":350,"children":352},{"className":351},[],[353],{"type":51,"value":354},"--user-config",{"type":51,"value":356}," are preserved.",{"type":45,"tag":339,"props":358,"children":359},{},[360],{"type":51,"value":361},"Explicit CLI flags override both.",{"type":45,"tag":58,"props":363,"children":364},{},[365,367,373],{"type":51,"value":366},"Discovery writes to its selected output YAML; generation rewrites its source\nconfig in place. On later runs, only missing fields are recalculated.\n",{"type":45,"tag":70,"props":368,"children":370},{"className":369},[],[371],{"type":51,"value":372},"multirail: false",{"type":51,"value":374}," is an explicit value, not a missing field, so it remains\nfalse across rewrites.",{"type":45,"tag":84,"props":376,"children":378},{"id":377},"config-sections-quick-reference",[379],{"type":51,"value":380},"Config Sections Quick Reference",{"type":45,"tag":91,"props":382,"children":383},{},[384,400],{"type":45,"tag":95,"props":385,"children":386},{},[387],{"type":45,"tag":99,"props":388,"children":389},{},[390,395],{"type":45,"tag":103,"props":391,"children":392},{},[393],{"type":51,"value":394},"Section",{"type":45,"tag":103,"props":396,"children":397},{},[398],{"type":51,"value":399},"What It Controls",{"type":45,"tag":119,"props":401,"children":402},{},[403,428,445,462,479,496,513,530,547,564,581,598,615],{"type":45,"tag":99,"props":404,"children":405},{},[406,415],{"type":45,"tag":126,"props":407,"children":408},{},[409],{"type":45,"tag":70,"props":410,"children":412},{"className":411},[],[413],{"type":51,"value":414},"networkOperator",{"type":45,"tag":126,"props":416,"children":417},{},[418,420,426],{"type":51,"value":419},"Operator namespace, version, image repository, helm chart repository (",{"type":45,"tag":70,"props":421,"children":423},{"className":422},[],[424],{"type":51,"value":425},"helmRepoURL",{"type":51,"value":427},")",{"type":45,"tag":99,"props":429,"children":430},{},[431,440],{"type":45,"tag":126,"props":432,"children":433},{},[434],{"type":45,"tag":70,"props":435,"children":437},{"className":436},[],[438],{"type":51,"value":439},"docaDriver",{"type":45,"tag":126,"props":441,"children":442},{},[443],{"type":51,"value":444},"OFED\u002FDOCA driver image, version, blacklist settings",{"type":45,"tag":99,"props":446,"children":447},{},[448,457],{"type":45,"tag":126,"props":449,"children":450},{},[451],{"type":45,"tag":70,"props":452,"children":454},{"className":453},[],[455],{"type":51,"value":456},"maintenance",{"type":45,"tag":126,"props":458,"children":459},{},[460],{"type":51,"value":461},"Maintenance Operator, SR-IOV drain, and legacy OFED upgrade concurrency",{"type":45,"tag":99,"props":463,"children":464},{},[465,474],{"type":45,"tag":126,"props":466,"children":467},{},[468],{"type":45,"tag":70,"props":469,"children":471},{"className":470},[],[472],{"type":51,"value":473},"nvIpam",{"type":45,"tag":126,"props":475,"children":476},{},[477],{"type":51,"value":478},"NV-IPAM IP pool ranges and subnet generation",{"type":45,"tag":99,"props":480,"children":481},{},[482,491],{"type":45,"tag":126,"props":483,"children":484},{},[485],{"type":45,"tag":70,"props":486,"children":488},{"className":487},[],[489],{"type":51,"value":490},"sriov",{"type":45,"tag":126,"props":492,"children":493},{},[494],{"type":51,"value":495},"VF count, resource prefix, MTU, link type",{"type":45,"tag":99,"props":497,"children":498},{},[499,508],{"type":45,"tag":126,"props":500,"children":501},{},[502],{"type":45,"tag":70,"props":503,"children":505},{"className":504},[],[506],{"type":51,"value":507},"hostdev",{"type":45,"tag":126,"props":509,"children":510},{},[511],{"type":51,"value":512},"Host device resource name",{"type":45,"tag":99,"props":514,"children":515},{},[516,525],{"type":45,"tag":126,"props":517,"children":518},{},[519],{"type":45,"tag":70,"props":520,"children":522},{"className":521},[],[523],{"type":51,"value":524},"rdmaShared",{"type":45,"tag":126,"props":526,"children":527},{},[528],{"type":51,"value":529},"RDMA shared device resource name",{"type":45,"tag":99,"props":531,"children":532},{},[533,542],{"type":45,"tag":126,"props":534,"children":535},{},[536],{"type":45,"tag":70,"props":537,"children":539},{"className":538},[],[540],{"type":51,"value":541},"ipoib",{"type":45,"tag":126,"props":543,"children":544},{},[545],{"type":51,"value":546},"IPoIB master interface, resource name",{"type":45,"tag":99,"props":548,"children":549},{},[550,559],{"type":45,"tag":126,"props":551,"children":552},{},[553],{"type":45,"tag":70,"props":554,"children":556},{"className":555},[],[557],{"type":51,"value":558},"macvlan",{"type":45,"tag":126,"props":560,"children":561},{},[562],{"type":51,"value":563},"MacVLAN master interface, mode",{"type":45,"tag":99,"props":565,"children":566},{},[567,576],{"type":45,"tag":126,"props":568,"children":569},{},[570],{"type":45,"tag":70,"props":571,"children":573},{"className":572},[],[574],{"type":51,"value":575},"nicConfigurationOperator",{"type":45,"tag":126,"props":577,"children":578},{},[579],{"type":51,"value":580},"NIC firmware template settings",{"type":45,"tag":99,"props":582,"children":583},{},[584,593],{"type":45,"tag":126,"props":585,"children":586},{},[587],{"type":45,"tag":70,"props":588,"children":590},{"className":589},[],[591],{"type":51,"value":592},"spectrumX",{"type":45,"tag":126,"props":594,"children":595},{},[596],{"type":51,"value":597},"OVS bridge config, multiplane mode, RDMA settings",{"type":45,"tag":99,"props":599,"children":600},{},[601,610],{"type":45,"tag":126,"props":602,"children":603},{},[604],{"type":45,"tag":70,"props":605,"children":607},{"className":606},[],[608],{"type":51,"value":609},"profile",{"type":45,"tag":126,"props":611,"children":612},{},[613],{"type":51,"value":614},"Profile selection criteria (fabric, deployment, multirail)",{"type":45,"tag":99,"props":616,"children":617},{},[618,627],{"type":45,"tag":126,"props":619,"children":620},{},[621],{"type":45,"tag":70,"props":622,"children":624},{"className":623},[],[625],{"type":51,"value":626},"clusterConfig[]",{"type":45,"tag":126,"props":628,"children":629},{},[630],{"type":51,"value":631},"Per-group hardware: NICs, nodes, capabilities, selectors",{"type":45,"tag":58,"props":633,"children":634},{},[635,637,642],{"type":51,"value":636},"Each ",{"type":45,"tag":70,"props":638,"children":640},{"className":639},[],[641],{"type":51,"value":626},{"type":51,"value":643}," entry has these key fields:",{"type":45,"tag":645,"props":646,"children":647},"ul",{},[648,699,725,788,799,870,904],{"type":45,"tag":339,"props":649,"children":650},{},[651,657,659,665,667,673,675,681,683,689,691,697],{"type":45,"tag":70,"props":652,"children":654},{"className":653},[],[655],{"type":51,"value":656},"identifier",{"type":51,"value":658}," — group name (used for ",{"type":45,"tag":70,"props":660,"children":662},{"className":661},[],[663],{"type":51,"value":664},"NicNodePolicy",{"type":51,"value":666}," naming). For groups with both ",{"type":45,"tag":70,"props":668,"children":670},{"className":669},[],[671],{"type":51,"value":672},"machineType",{"type":51,"value":674}," and ",{"type":45,"tag":70,"props":676,"children":678},{"className":677},[],[679],{"type":51,"value":680},"gpuType",{"type":51,"value":682}," resolved, this is the sanitised machine label (",{"type":45,"tag":70,"props":684,"children":686},{"className":685},[],[687],{"type":51,"value":688},"\u003CmachineType>-\u003CgpuType>",{"type":51,"value":690},"); otherwise a fallback ",{"type":45,"tag":70,"props":692,"children":694},{"className":693},[],[695],{"type":51,"value":696},"group-N",{"type":51,"value":698},".",{"type":45,"tag":339,"props":700,"children":701},{},[702,707,709,715,717,723],{"type":45,"tag":70,"props":703,"children":705},{"className":704},[],[706],{"type":51,"value":672},{"type":51,"value":708}," — server model (e.g. ",{"type":45,"tag":70,"props":710,"children":712},{"className":711},[],[713],{"type":51,"value":714},"PowerEdge-XE9680",{"type":51,"value":716},"); populated from ",{"type":45,"tag":70,"props":718,"children":720},{"className":719},[],[721],{"type":51,"value":722},"nvidia.com\u002Fgpu.machine",{"type":51,"value":724}," label or DMI fallback.",{"type":45,"tag":339,"props":726,"children":727},{},[728,733,735,741,742,748,750,756,758,763,765,771,773,779,781,787],{"type":45,"tag":70,"props":729,"children":731},{"className":730},[],[732],{"type":51,"value":680},{"type":51,"value":734}," — GPU SKU (e.g. ",{"type":45,"tag":70,"props":736,"children":738},{"className":737},[],[739],{"type":51,"value":740},"NVIDIA-H200",{"type":51,"value":716},{"type":45,"tag":70,"props":743,"children":745},{"className":744},[],[746],{"type":51,"value":747},"nvidia.com\u002Fgpu.product",{"type":51,"value":749}," label or ",{"type":45,"tag":70,"props":751,"children":753},{"className":752},[],[754],{"type":51,"value":755},"nvidia-smi",{"type":51,"value":757}," fallback. ",{"type":45,"tag":62,"props":759,"children":760},{},[761],{"type":51,"value":762},"Note:",{"type":51,"value":764}," this field used to be called ",{"type":45,"tag":70,"props":766,"children":768},{"className":767},[],[769],{"type":51,"value":770},"productType",{"type":51,"value":772}," — the rename happened to disambiguate it from the server model. Old ",{"type":45,"tag":70,"props":774,"children":776},{"className":775},[],[777],{"type":51,"value":778},"productType:",{"type":51,"value":780}," keys in hand-authored configs must be renamed to ",{"type":45,"tag":70,"props":782,"children":784},{"className":783},[],[785],{"type":51,"value":786},"gpuType:",{"type":51,"value":698},{"type":45,"tag":339,"props":789,"children":790},{},[791,797],{"type":45,"tag":70,"props":792,"children":794},{"className":793},[],[795],{"type":51,"value":796},"capabilities.nodes.{sriov,rdma,ib}",{"type":51,"value":798}," — what the underlying hardware supports.",{"type":45,"tag":339,"props":800,"children":801},{},[802,808,810,816,818,824,826],{"type":45,"tag":70,"props":803,"children":805},{"className":804},[],[806],{"type":51,"value":807},"pfs[]",{"type":51,"value":809}," — physical function list with PCI address, device ID, RDMA device, network interface, traffic class, rail, NUMA, GPU affinity, and ",{"type":45,"tag":70,"props":811,"children":813},{"className":812},[],[814],{"type":51,"value":815},"model",{"type":51,"value":817}," (the VPD model\u002Fdescription string read from ",{"type":45,"tag":70,"props":819,"children":821},{"className":820},[],[822],{"type":51,"value":823},"NicDevice.Status.modelName",{"type":51,"value":825},").\n",{"type":45,"tag":645,"props":827,"children":828},{},[829],{"type":45,"tag":339,"props":830,"children":831},{},[832,837,839,844,846,852,854,860,862,868],{"type":45,"tag":62,"props":833,"children":834},{},[835],{"type":51,"value":836},"One rail per NIC (default).",{"type":51,"value":838}," Discovery advertises one rail per physical NIC: a NIC's multi-plane east-west PFs (planes of one port, e.g. Spectrum-X ConnectX-8\u002F9) collapse to the master PF, so an 8-PF node lists 4 east-west PFs \u002F 4 rails. A NIC whose ",{"type":45,"tag":70,"props":840,"children":842},{"className":841},[],[843],{"type":51,"value":815},{"type":51,"value":845}," is genuinely dual-port (",{"type":45,"tag":70,"props":847,"children":849},{"className":848},[],[850],{"type":51,"value":851},"2-port",{"type":51,"value":853},"\u002F",{"type":45,"tag":70,"props":855,"children":857},{"className":856},[],[858],{"type":51,"value":859},"Dual-port",{"type":51,"value":861},") keeps a rail per port. Run ",{"type":45,"tag":70,"props":863,"children":865},{"className":864},[],[866],{"type":51,"value":867},"l8k discover --collapse-nic-rails=false",{"type":51,"value":869}," to emit one rail per PF (legacy\u002Fdev behaviour).",{"type":45,"tag":339,"props":871,"children":872},{},[873,879,881,886,888,894,896,902],{"type":45,"tag":70,"props":874,"children":876},{"className":875},[],[877],{"type":51,"value":878},"nodeSelector",{"type":51,"value":880}," — Kubernetes node selector for this group. Source groups key on the machine label written by ",{"type":45,"tag":70,"props":882,"children":884},{"className":883},[],[885],{"type":51,"value":145},{"type":51,"value":887},": ",{"type":45,"tag":70,"props":889,"children":891},{"className":890},[],[892],{"type":51,"value":893},"nvidia.kubernetes-launch-kit.machine: \u003CmachineType>-\u003CgpuType>",{"type":51,"value":895},". Auto-merged groups (different machineTypes sharing a GPU type) key on ",{"type":45,"tag":70,"props":897,"children":899},{"className":898},[],[900],{"type":51,"value":901},"nvidia.kubernetes-launch-kit.gpu: \u003CgpuType>",{"type":51,"value":903}," instead — discovery writes both labels onto every node, so the merged selector binds correctly across source machineTypes.",{"type":45,"tag":339,"props":905,"children":906},{},[907,913],{"type":45,"tag":70,"props":908,"children":910},{"className":909},[],[911],{"type":51,"value":912},"workerNodes",{"type":51,"value":914}," — explicit hostnames (populated by discovery).",{"type":45,"tag":58,"props":916,"children":917},{},[918,920,926],{"type":51,"value":919},"For the full field-by-field reference with types, defaults, and descriptions,\nread ",{"type":45,"tag":70,"props":921,"children":923},{"className":922},[],[924],{"type":51,"value":925},"references\u002Fconfig-reference.md",{"type":51,"value":698},{"type":45,"tag":84,"props":928,"children":930},{"id":929},"topology-presets",[931],{"type":51,"value":932},"Topology Presets",{"type":45,"tag":58,"props":934,"children":935},{},[936,938,944,946,952],{"type":51,"value":937},"The ",{"type":45,"tag":70,"props":939,"children":941},{"className":940},[],[942],{"type":51,"value":943},"presets\u002F",{"type":51,"value":945}," directory contains pre-recorded topologies for known hardware combinations. A preset is a ",{"type":45,"tag":70,"props":947,"children":949},{"className":948},[],[950],{"type":51,"value":951},"topology.yaml",{"type":51,"value":953}," file with the following shape:",{"type":45,"tag":180,"props":955,"children":959},{"className":956,"code":957,"language":958,"meta":185,"style":185},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","machineType: PowerEdge-XE9680   # required\ngpuType: NVIDIA-H200            # required — both keys are matched as a pair\nnicModel: BlueField-3 SuperNIC (ConnectX-7)\ngpuInterconnect: NV18\nnumaNodes: 2\n\n# Required if the preset will be used with `l8k generate --for`.\n# Discovery-time overlay does not need this block.\ncapabilities:\n  nodes:\n    sriov: true\n    rdma: true\n    ib: false\n\npfs:\n  - deviceID: a2dc\n    pciAddress: 0000:1a:00.0\n    traffic: east-west\n    rail: 0\n    numaNode: 0\n    connectedGPU: GPU0\n    gpuProximity: PIX\n","yaml",[960],{"type":45,"tag":70,"props":961,"children":962},{"__ignoreMap":185},[963,987,1008,1025,1042,1060,1067,1075,1083,1097,1110,1129,1146,1164,1171,1184,1207,1225,1243,1261,1278,1296],{"type":45,"tag":191,"props":964,"children":965},{"class":193,"line":194},[966,971,977,982],{"type":45,"tag":191,"props":967,"children":969},{"style":968},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[970],{"type":51,"value":672},{"type":45,"tag":191,"props":972,"children":974},{"style":973},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[975],{"type":51,"value":976},":",{"type":45,"tag":191,"props":978,"children":979},{"style":214},[980],{"type":51,"value":981}," PowerEdge-XE9680",{"type":45,"tag":191,"props":983,"children":984},{"style":198},[985],{"type":51,"value":986},"   # required\n",{"type":45,"tag":191,"props":988,"children":989},{"class":193,"line":204},[990,994,998,1003],{"type":45,"tag":191,"props":991,"children":992},{"style":968},[993],{"type":51,"value":680},{"type":45,"tag":191,"props":995,"children":996},{"style":973},[997],{"type":51,"value":976},{"type":45,"tag":191,"props":999,"children":1000},{"style":214},[1001],{"type":51,"value":1002}," NVIDIA-H200",{"type":45,"tag":191,"props":1004,"children":1005},{"style":198},[1006],{"type":51,"value":1007},"            # required — both keys are matched as a pair\n",{"type":45,"tag":191,"props":1009,"children":1010},{"class":193,"line":236},[1011,1016,1020],{"type":45,"tag":191,"props":1012,"children":1013},{"style":968},[1014],{"type":51,"value":1015},"nicModel",{"type":45,"tag":191,"props":1017,"children":1018},{"style":973},[1019],{"type":51,"value":976},{"type":45,"tag":191,"props":1021,"children":1022},{"style":214},[1023],{"type":51,"value":1024}," BlueField-3 SuperNIC (ConnectX-7)\n",{"type":45,"tag":191,"props":1026,"children":1027},{"class":193,"line":27},[1028,1033,1037],{"type":45,"tag":191,"props":1029,"children":1030},{"style":968},[1031],{"type":51,"value":1032},"gpuInterconnect",{"type":45,"tag":191,"props":1034,"children":1035},{"style":973},[1036],{"type":51,"value":976},{"type":45,"tag":191,"props":1038,"children":1039},{"style":214},[1040],{"type":51,"value":1041}," NV18\n",{"type":45,"tag":191,"props":1043,"children":1044},{"class":193,"line":259},[1045,1050,1054],{"type":45,"tag":191,"props":1046,"children":1047},{"style":968},[1048],{"type":51,"value":1049},"numaNodes",{"type":45,"tag":191,"props":1051,"children":1052},{"style":973},[1053],{"type":51,"value":976},{"type":45,"tag":191,"props":1055,"children":1057},{"style":1056},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1058],{"type":51,"value":1059}," 2\n",{"type":45,"tag":191,"props":1061,"children":1062},{"class":193,"line":268},[1063],{"type":45,"tag":191,"props":1064,"children":1065},{"emptyLinePlaceholder":253},[1066],{"type":51,"value":256},{"type":45,"tag":191,"props":1068,"children":1069},{"class":193,"line":293},[1070],{"type":45,"tag":191,"props":1071,"children":1072},{"style":198},[1073],{"type":51,"value":1074},"# Required if the preset will be used with `l8k generate --for`.\n",{"type":45,"tag":191,"props":1076,"children":1077},{"class":193,"line":311},[1078],{"type":45,"tag":191,"props":1079,"children":1080},{"style":198},[1081],{"type":51,"value":1082},"# Discovery-time overlay does not need this block.\n",{"type":45,"tag":191,"props":1084,"children":1086},{"class":193,"line":1085},9,[1087,1092],{"type":45,"tag":191,"props":1088,"children":1089},{"style":968},[1090],{"type":51,"value":1091},"capabilities",{"type":45,"tag":191,"props":1093,"children":1094},{"style":973},[1095],{"type":51,"value":1096},":\n",{"type":45,"tag":191,"props":1098,"children":1100},{"class":193,"line":1099},10,[1101,1106],{"type":45,"tag":191,"props":1102,"children":1103},{"style":968},[1104],{"type":51,"value":1105},"  nodes",{"type":45,"tag":191,"props":1107,"children":1108},{"style":973},[1109],{"type":51,"value":1096},{"type":45,"tag":191,"props":1111,"children":1113},{"class":193,"line":1112},11,[1114,1119,1123],{"type":45,"tag":191,"props":1115,"children":1116},{"style":968},[1117],{"type":51,"value":1118},"    sriov",{"type":45,"tag":191,"props":1120,"children":1121},{"style":973},[1122],{"type":51,"value":976},{"type":45,"tag":191,"props":1124,"children":1126},{"style":1125},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1127],{"type":51,"value":1128}," true\n",{"type":45,"tag":191,"props":1130,"children":1132},{"class":193,"line":1131},12,[1133,1138,1142],{"type":45,"tag":191,"props":1134,"children":1135},{"style":968},[1136],{"type":51,"value":1137},"    rdma",{"type":45,"tag":191,"props":1139,"children":1140},{"style":973},[1141],{"type":51,"value":976},{"type":45,"tag":191,"props":1143,"children":1144},{"style":1125},[1145],{"type":51,"value":1128},{"type":45,"tag":191,"props":1147,"children":1149},{"class":193,"line":1148},13,[1150,1155,1159],{"type":45,"tag":191,"props":1151,"children":1152},{"style":968},[1153],{"type":51,"value":1154},"    ib",{"type":45,"tag":191,"props":1156,"children":1157},{"style":973},[1158],{"type":51,"value":976},{"type":45,"tag":191,"props":1160,"children":1161},{"style":1125},[1162],{"type":51,"value":1163}," false\n",{"type":45,"tag":191,"props":1165,"children":1166},{"class":193,"line":23},[1167],{"type":45,"tag":191,"props":1168,"children":1169},{"emptyLinePlaceholder":253},[1170],{"type":51,"value":256},{"type":45,"tag":191,"props":1172,"children":1174},{"class":193,"line":1173},15,[1175,1180],{"type":45,"tag":191,"props":1176,"children":1177},{"style":968},[1178],{"type":51,"value":1179},"pfs",{"type":45,"tag":191,"props":1181,"children":1182},{"style":973},[1183],{"type":51,"value":1096},{"type":45,"tag":191,"props":1185,"children":1187},{"class":193,"line":1186},16,[1188,1193,1198,1202],{"type":45,"tag":191,"props":1189,"children":1190},{"style":973},[1191],{"type":51,"value":1192},"  -",{"type":45,"tag":191,"props":1194,"children":1195},{"style":968},[1196],{"type":51,"value":1197}," deviceID",{"type":45,"tag":191,"props":1199,"children":1200},{"style":973},[1201],{"type":51,"value":976},{"type":45,"tag":191,"props":1203,"children":1204},{"style":214},[1205],{"type":51,"value":1206}," a2dc\n",{"type":45,"tag":191,"props":1208,"children":1210},{"class":193,"line":1209},17,[1211,1216,1220],{"type":45,"tag":191,"props":1212,"children":1213},{"style":968},[1214],{"type":51,"value":1215},"    pciAddress",{"type":45,"tag":191,"props":1217,"children":1218},{"style":973},[1219],{"type":51,"value":976},{"type":45,"tag":191,"props":1221,"children":1222},{"style":214},[1223],{"type":51,"value":1224}," 0000:1a:00.0\n",{"type":45,"tag":191,"props":1226,"children":1228},{"class":193,"line":1227},18,[1229,1234,1238],{"type":45,"tag":191,"props":1230,"children":1231},{"style":968},[1232],{"type":51,"value":1233},"    traffic",{"type":45,"tag":191,"props":1235,"children":1236},{"style":973},[1237],{"type":51,"value":976},{"type":45,"tag":191,"props":1239,"children":1240},{"style":214},[1241],{"type":51,"value":1242}," east-west\n",{"type":45,"tag":191,"props":1244,"children":1246},{"class":193,"line":1245},19,[1247,1252,1256],{"type":45,"tag":191,"props":1248,"children":1249},{"style":968},[1250],{"type":51,"value":1251},"    rail",{"type":45,"tag":191,"props":1253,"children":1254},{"style":973},[1255],{"type":51,"value":976},{"type":45,"tag":191,"props":1257,"children":1258},{"style":1056},[1259],{"type":51,"value":1260}," 0\n",{"type":45,"tag":191,"props":1262,"children":1264},{"class":193,"line":1263},20,[1265,1270,1274],{"type":45,"tag":191,"props":1266,"children":1267},{"style":968},[1268],{"type":51,"value":1269},"    numaNode",{"type":45,"tag":191,"props":1271,"children":1272},{"style":973},[1273],{"type":51,"value":976},{"type":45,"tag":191,"props":1275,"children":1276},{"style":1056},[1277],{"type":51,"value":1260},{"type":45,"tag":191,"props":1279,"children":1281},{"class":193,"line":1280},21,[1282,1287,1291],{"type":45,"tag":191,"props":1283,"children":1284},{"style":968},[1285],{"type":51,"value":1286},"    connectedGPU",{"type":45,"tag":191,"props":1288,"children":1289},{"style":973},[1290],{"type":51,"value":976},{"type":45,"tag":191,"props":1292,"children":1293},{"style":214},[1294],{"type":51,"value":1295}," GPU0\n",{"type":45,"tag":191,"props":1297,"children":1299},{"class":193,"line":1298},22,[1300,1305,1309],{"type":45,"tag":191,"props":1301,"children":1302},{"style":968},[1303],{"type":51,"value":1304},"    gpuProximity",{"type":45,"tag":191,"props":1306,"children":1307},{"style":973},[1308],{"type":51,"value":976},{"type":45,"tag":191,"props":1310,"children":1311},{"style":214},[1312],{"type":51,"value":1313}," PIX\n",{"type":45,"tag":58,"props":1315,"children":1316},{},[1317,1329,1331,1336,1338,1344,1346,1352,1354,1360,1362,1368],{"type":45,"tag":62,"props":1318,"children":1319},{},[1320,1322,1328],{"type":51,"value":1321},"Lookup is exact-match on ",{"type":45,"tag":70,"props":1323,"children":1325},{"className":1324},[],[1326],{"type":51,"value":1327},"(machineType, gpuType)",{"type":51,"value":698},{"type":51,"value":1330}," No any-GPU fallback — a preset that doesn't declare ",{"type":45,"tag":70,"props":1332,"children":1334},{"className":1333},[],[1335],{"type":51,"value":786},{"type":51,"value":1337}," is rejected at load time. Multi-variant presets for the same machine (different GPU SKUs) live in separate directories with composite names like ",{"type":45,"tag":70,"props":1339,"children":1341},{"className":1340},[],[1342],{"type":51,"value":1343},"PowerEdge-XE9680-H200",{"type":51,"value":1345}," \u002F ",{"type":45,"tag":70,"props":1347,"children":1349},{"className":1348},[],[1350],{"type":51,"value":1351},"PowerEdge-XE9680-B200",{"type":51,"value":1353},". The directory name is shown by ",{"type":45,"tag":70,"props":1355,"children":1357},{"className":1356},[],[1358],{"type":51,"value":1359},"l8k preset list",{"type":51,"value":1361}," and is what ",{"type":45,"tag":70,"props":1363,"children":1365},{"className":1364},[],[1366],{"type":51,"value":1367},"l8k generate --for \u003Cname>",{"type":51,"value":1369}," accepts.",{"type":45,"tag":58,"props":1371,"children":1372},{},[1373,1378,1380,1385,1387,1393,1395,1400,1402,1408],{"type":45,"tag":62,"props":1374,"children":1375},{},[1376],{"type":51,"value":1377},"Validation deviations.",{"type":51,"value":1379}," When the matched preset's PF count, PCI addresses, or device IDs don't exactly match discovered hardware, the preset is ",{"type":45,"tag":62,"props":1381,"children":1382},{},[1383],{"type":51,"value":1384},"NOT applied",{"type":51,"value":1386}," — discovery keeps the live-discovered topology (traffic\u002Frail\u002FNUMA), because overlaying a preset onto a different PCI layout would corrupt the classification (a coincidentally-overlapping PCI address would inherit the preset's unrelated traffic\u002Frail\u002FGPU fields). The discrepancies are recorded under ",{"type":45,"tag":70,"props":1388,"children":1390},{"className":1389},[],[1391],{"type":51,"value":1392},"clusterConfig[*].presetDeviation",{"type":51,"value":1394}," and every subsequent config load re-emits a warning listing each deviation. The preset's authoritative topology is overlaid ",{"type":45,"tag":62,"props":1396,"children":1397},{},[1398],{"type":51,"value":1399},"only on an exact match",{"type":51,"value":1401}," (zero deviations); ",{"type":45,"tag":70,"props":1403,"children":1405},{"className":1404},[],[1406],{"type":51,"value":1407},"presetApplied: true",{"type":51,"value":1409}," appears only in that case. Part-number and PSID differences are expected (firmware\u002FSKU variants) and never block application.",{"type":45,"tag":84,"props":1411,"children":1413},{"id":1412},"common-edits",[1414],{"type":51,"value":1415},"Common Edits",{"type":45,"tag":180,"props":1417,"children":1419},{"className":956,"code":1418,"language":958,"meta":185,"style":185},"# Change VF count per PF\nsriov:\n  numVfs: 16\n\n# Change MTU\nsriov:\n  mtu: 9000\n\n# Set DOCA driver version\ndocaDriver:\n  version: \"doca3.3.0-26.01-1.0.0.0-6\"\n\n# Allow four simultaneous maintenance operations. Network Operator 26.1+\n# uses the global Maintenance Operator limits; older releases use the legacy\n# SR-IOV\u002FOFED limits where applicable.\nmaintenance:\n  maxParallelOperations: 4\n  maxUnavailable: 4\n  maxNodeMaintenanceTimeSeconds: 3600\n  maxParallelUpgrades: 4\n\n# Override the helm chart repository URL (rarely needed — the embedded\n# release catalog supplies the right URL for each MAJOR.MINOR release).\n# Useful only for mirrors or private chart hosts.\nnetworkOperator:\n  helmRepoURL: \"https:\u002F\u002Fmy-mirror.example.com\u002Fcharts\"\n\n# Configure NV-IPAM subnets manually\nnvIpam:\n  subnets:\n    - name: \"rail-0-subnet\"\n      cidr: \"10.10.0.0\u002F16\"\n      gateway: \"10.10.0.1\"\n\n# Namespaces for the secondary-network CRs + example test DaemonSets.\n# One independent copy is rendered per namespace (shared resources like\n# IPPools and NodePolicies are NOT duplicated). Defaults to [\"default\"].\nnetworkNamespaces: [\"my-namespace\"]\n",[1420],{"type":45,"tag":70,"props":1421,"children":1422},{"__ignoreMap":185},[1423,1431,1442,1459,1466,1474,1485,1502,1509,1517,1528,1555,1562,1570,1578,1586,1597,1614,1630,1647,1663,1670,1678,1687,1696,1708,1734,1742,1751,1763,1776,1807,1833,1859,1867,1876,1885,1894],{"type":45,"tag":191,"props":1424,"children":1425},{"class":193,"line":194},[1426],{"type":45,"tag":191,"props":1427,"children":1428},{"style":198},[1429],{"type":51,"value":1430},"# Change VF count per PF\n",{"type":45,"tag":191,"props":1432,"children":1433},{"class":193,"line":204},[1434,1438],{"type":45,"tag":191,"props":1435,"children":1436},{"style":968},[1437],{"type":51,"value":490},{"type":45,"tag":191,"props":1439,"children":1440},{"style":973},[1441],{"type":51,"value":1096},{"type":45,"tag":191,"props":1443,"children":1444},{"class":193,"line":236},[1445,1450,1454],{"type":45,"tag":191,"props":1446,"children":1447},{"style":968},[1448],{"type":51,"value":1449},"  numVfs",{"type":45,"tag":191,"props":1451,"children":1452},{"style":973},[1453],{"type":51,"value":976},{"type":45,"tag":191,"props":1455,"children":1456},{"style":1056},[1457],{"type":51,"value":1458}," 16\n",{"type":45,"tag":191,"props":1460,"children":1461},{"class":193,"line":27},[1462],{"type":45,"tag":191,"props":1463,"children":1464},{"emptyLinePlaceholder":253},[1465],{"type":51,"value":256},{"type":45,"tag":191,"props":1467,"children":1468},{"class":193,"line":259},[1469],{"type":45,"tag":191,"props":1470,"children":1471},{"style":198},[1472],{"type":51,"value":1473},"# Change MTU\n",{"type":45,"tag":191,"props":1475,"children":1476},{"class":193,"line":268},[1477,1481],{"type":45,"tag":191,"props":1478,"children":1479},{"style":968},[1480],{"type":51,"value":490},{"type":45,"tag":191,"props":1482,"children":1483},{"style":973},[1484],{"type":51,"value":1096},{"type":45,"tag":191,"props":1486,"children":1487},{"class":193,"line":293},[1488,1493,1497],{"type":45,"tag":191,"props":1489,"children":1490},{"style":968},[1491],{"type":51,"value":1492},"  mtu",{"type":45,"tag":191,"props":1494,"children":1495},{"style":973},[1496],{"type":51,"value":976},{"type":45,"tag":191,"props":1498,"children":1499},{"style":1056},[1500],{"type":51,"value":1501}," 9000\n",{"type":45,"tag":191,"props":1503,"children":1504},{"class":193,"line":311},[1505],{"type":45,"tag":191,"props":1506,"children":1507},{"emptyLinePlaceholder":253},[1508],{"type":51,"value":256},{"type":45,"tag":191,"props":1510,"children":1511},{"class":193,"line":1085},[1512],{"type":45,"tag":191,"props":1513,"children":1514},{"style":198},[1515],{"type":51,"value":1516},"# Set DOCA driver version\n",{"type":45,"tag":191,"props":1518,"children":1519},{"class":193,"line":1099},[1520,1524],{"type":45,"tag":191,"props":1521,"children":1522},{"style":968},[1523],{"type":51,"value":439},{"type":45,"tag":191,"props":1525,"children":1526},{"style":973},[1527],{"type":51,"value":1096},{"type":45,"tag":191,"props":1529,"children":1530},{"class":193,"line":1112},[1531,1536,1540,1545,1550],{"type":45,"tag":191,"props":1532,"children":1533},{"style":968},[1534],{"type":51,"value":1535},"  version",{"type":45,"tag":191,"props":1537,"children":1538},{"style":973},[1539],{"type":51,"value":976},{"type":45,"tag":191,"props":1541,"children":1542},{"style":973},[1543],{"type":51,"value":1544}," \"",{"type":45,"tag":191,"props":1546,"children":1547},{"style":214},[1548],{"type":51,"value":1549},"doca3.3.0-26.01-1.0.0.0-6",{"type":45,"tag":191,"props":1551,"children":1552},{"style":973},[1553],{"type":51,"value":1554},"\"\n",{"type":45,"tag":191,"props":1556,"children":1557},{"class":193,"line":1131},[1558],{"type":45,"tag":191,"props":1559,"children":1560},{"emptyLinePlaceholder":253},[1561],{"type":51,"value":256},{"type":45,"tag":191,"props":1563,"children":1564},{"class":193,"line":1148},[1565],{"type":45,"tag":191,"props":1566,"children":1567},{"style":198},[1568],{"type":51,"value":1569},"# Allow four simultaneous maintenance operations. Network Operator 26.1+\n",{"type":45,"tag":191,"props":1571,"children":1572},{"class":193,"line":23},[1573],{"type":45,"tag":191,"props":1574,"children":1575},{"style":198},[1576],{"type":51,"value":1577},"# uses the global Maintenance Operator limits; older releases use the legacy\n",{"type":45,"tag":191,"props":1579,"children":1580},{"class":193,"line":1173},[1581],{"type":45,"tag":191,"props":1582,"children":1583},{"style":198},[1584],{"type":51,"value":1585},"# SR-IOV\u002FOFED limits where applicable.\n",{"type":45,"tag":191,"props":1587,"children":1588},{"class":193,"line":1186},[1589,1593],{"type":45,"tag":191,"props":1590,"children":1591},{"style":968},[1592],{"type":51,"value":456},{"type":45,"tag":191,"props":1594,"children":1595},{"style":973},[1596],{"type":51,"value":1096},{"type":45,"tag":191,"props":1598,"children":1599},{"class":193,"line":1209},[1600,1605,1609],{"type":45,"tag":191,"props":1601,"children":1602},{"style":968},[1603],{"type":51,"value":1604},"  maxParallelOperations",{"type":45,"tag":191,"props":1606,"children":1607},{"style":973},[1608],{"type":51,"value":976},{"type":45,"tag":191,"props":1610,"children":1611},{"style":1056},[1612],{"type":51,"value":1613}," 4\n",{"type":45,"tag":191,"props":1615,"children":1616},{"class":193,"line":1227},[1617,1622,1626],{"type":45,"tag":191,"props":1618,"children":1619},{"style":968},[1620],{"type":51,"value":1621},"  maxUnavailable",{"type":45,"tag":191,"props":1623,"children":1624},{"style":973},[1625],{"type":51,"value":976},{"type":45,"tag":191,"props":1627,"children":1628},{"style":1056},[1629],{"type":51,"value":1613},{"type":45,"tag":191,"props":1631,"children":1632},{"class":193,"line":1245},[1633,1638,1642],{"type":45,"tag":191,"props":1634,"children":1635},{"style":968},[1636],{"type":51,"value":1637},"  maxNodeMaintenanceTimeSeconds",{"type":45,"tag":191,"props":1639,"children":1640},{"style":973},[1641],{"type":51,"value":976},{"type":45,"tag":191,"props":1643,"children":1644},{"style":1056},[1645],{"type":51,"value":1646}," 3600\n",{"type":45,"tag":191,"props":1648,"children":1649},{"class":193,"line":1263},[1650,1655,1659],{"type":45,"tag":191,"props":1651,"children":1652},{"style":968},[1653],{"type":51,"value":1654},"  maxParallelUpgrades",{"type":45,"tag":191,"props":1656,"children":1657},{"style":973},[1658],{"type":51,"value":976},{"type":45,"tag":191,"props":1660,"children":1661},{"style":1056},[1662],{"type":51,"value":1613},{"type":45,"tag":191,"props":1664,"children":1665},{"class":193,"line":1280},[1666],{"type":45,"tag":191,"props":1667,"children":1668},{"emptyLinePlaceholder":253},[1669],{"type":51,"value":256},{"type":45,"tag":191,"props":1671,"children":1672},{"class":193,"line":1298},[1673],{"type":45,"tag":191,"props":1674,"children":1675},{"style":198},[1676],{"type":51,"value":1677},"# Override the helm chart repository URL (rarely needed — the embedded\n",{"type":45,"tag":191,"props":1679,"children":1681},{"class":193,"line":1680},23,[1682],{"type":45,"tag":191,"props":1683,"children":1684},{"style":198},[1685],{"type":51,"value":1686},"# release catalog supplies the right URL for each MAJOR.MINOR release).\n",{"type":45,"tag":191,"props":1688,"children":1690},{"class":193,"line":1689},24,[1691],{"type":45,"tag":191,"props":1692,"children":1693},{"style":198},[1694],{"type":51,"value":1695},"# Useful only for mirrors or private chart hosts.\n",{"type":45,"tag":191,"props":1697,"children":1699},{"class":193,"line":1698},25,[1700,1704],{"type":45,"tag":191,"props":1701,"children":1702},{"style":968},[1703],{"type":51,"value":414},{"type":45,"tag":191,"props":1705,"children":1706},{"style":973},[1707],{"type":51,"value":1096},{"type":45,"tag":191,"props":1709,"children":1711},{"class":193,"line":1710},26,[1712,1717,1721,1725,1730],{"type":45,"tag":191,"props":1713,"children":1714},{"style":968},[1715],{"type":51,"value":1716},"  helmRepoURL",{"type":45,"tag":191,"props":1718,"children":1719},{"style":973},[1720],{"type":51,"value":976},{"type":45,"tag":191,"props":1722,"children":1723},{"style":973},[1724],{"type":51,"value":1544},{"type":45,"tag":191,"props":1726,"children":1727},{"style":214},[1728],{"type":51,"value":1729},"https:\u002F\u002Fmy-mirror.example.com\u002Fcharts",{"type":45,"tag":191,"props":1731,"children":1732},{"style":973},[1733],{"type":51,"value":1554},{"type":45,"tag":191,"props":1735,"children":1737},{"class":193,"line":1736},27,[1738],{"type":45,"tag":191,"props":1739,"children":1740},{"emptyLinePlaceholder":253},[1741],{"type":51,"value":256},{"type":45,"tag":191,"props":1743,"children":1745},{"class":193,"line":1744},28,[1746],{"type":45,"tag":191,"props":1747,"children":1748},{"style":198},[1749],{"type":51,"value":1750},"# Configure NV-IPAM subnets manually\n",{"type":45,"tag":191,"props":1752,"children":1754},{"class":193,"line":1753},29,[1755,1759],{"type":45,"tag":191,"props":1756,"children":1757},{"style":968},[1758],{"type":51,"value":473},{"type":45,"tag":191,"props":1760,"children":1761},{"style":973},[1762],{"type":51,"value":1096},{"type":45,"tag":191,"props":1764,"children":1766},{"class":193,"line":1765},30,[1767,1772],{"type":45,"tag":191,"props":1768,"children":1769},{"style":968},[1770],{"type":51,"value":1771},"  subnets",{"type":45,"tag":191,"props":1773,"children":1774},{"style":973},[1775],{"type":51,"value":1096},{"type":45,"tag":191,"props":1777,"children":1779},{"class":193,"line":1778},31,[1780,1785,1790,1794,1798,1803],{"type":45,"tag":191,"props":1781,"children":1782},{"style":973},[1783],{"type":51,"value":1784},"    -",{"type":45,"tag":191,"props":1786,"children":1787},{"style":968},[1788],{"type":51,"value":1789}," name",{"type":45,"tag":191,"props":1791,"children":1792},{"style":973},[1793],{"type":51,"value":976},{"type":45,"tag":191,"props":1795,"children":1796},{"style":973},[1797],{"type":51,"value":1544},{"type":45,"tag":191,"props":1799,"children":1800},{"style":214},[1801],{"type":51,"value":1802},"rail-0-subnet",{"type":45,"tag":191,"props":1804,"children":1805},{"style":973},[1806],{"type":51,"value":1554},{"type":45,"tag":191,"props":1808,"children":1810},{"class":193,"line":1809},32,[1811,1816,1820,1824,1829],{"type":45,"tag":191,"props":1812,"children":1813},{"style":968},[1814],{"type":51,"value":1815},"      cidr",{"type":45,"tag":191,"props":1817,"children":1818},{"style":973},[1819],{"type":51,"value":976},{"type":45,"tag":191,"props":1821,"children":1822},{"style":973},[1823],{"type":51,"value":1544},{"type":45,"tag":191,"props":1825,"children":1826},{"style":214},[1827],{"type":51,"value":1828},"10.10.0.0\u002F16",{"type":45,"tag":191,"props":1830,"children":1831},{"style":973},[1832],{"type":51,"value":1554},{"type":45,"tag":191,"props":1834,"children":1836},{"class":193,"line":1835},33,[1837,1842,1846,1850,1855],{"type":45,"tag":191,"props":1838,"children":1839},{"style":968},[1840],{"type":51,"value":1841},"      gateway",{"type":45,"tag":191,"props":1843,"children":1844},{"style":973},[1845],{"type":51,"value":976},{"type":45,"tag":191,"props":1847,"children":1848},{"style":973},[1849],{"type":51,"value":1544},{"type":45,"tag":191,"props":1851,"children":1852},{"style":214},[1853],{"type":51,"value":1854},"10.10.0.1",{"type":45,"tag":191,"props":1856,"children":1857},{"style":973},[1858],{"type":51,"value":1554},{"type":45,"tag":191,"props":1860,"children":1862},{"class":193,"line":1861},34,[1863],{"type":45,"tag":191,"props":1864,"children":1865},{"emptyLinePlaceholder":253},[1866],{"type":51,"value":256},{"type":45,"tag":191,"props":1868,"children":1870},{"class":193,"line":1869},35,[1871],{"type":45,"tag":191,"props":1872,"children":1873},{"style":198},[1874],{"type":51,"value":1875},"# Namespaces for the secondary-network CRs + example test DaemonSets.\n",{"type":45,"tag":191,"props":1877,"children":1879},{"class":193,"line":1878},36,[1880],{"type":45,"tag":191,"props":1881,"children":1882},{"style":198},[1883],{"type":51,"value":1884},"# One independent copy is rendered per namespace (shared resources like\n",{"type":45,"tag":191,"props":1886,"children":1888},{"class":193,"line":1887},37,[1889],{"type":45,"tag":191,"props":1890,"children":1891},{"style":198},[1892],{"type":51,"value":1893},"# IPPools and NodePolicies are NOT duplicated). Defaults to [\"default\"].\n",{"type":45,"tag":191,"props":1895,"children":1897},{"class":193,"line":1896},38,[1898,1903,1907,1912,1917,1922,1926],{"type":45,"tag":191,"props":1899,"children":1900},{"style":968},[1901],{"type":51,"value":1902},"networkNamespaces",{"type":45,"tag":191,"props":1904,"children":1905},{"style":973},[1906],{"type":51,"value":976},{"type":45,"tag":191,"props":1908,"children":1909},{"style":973},[1910],{"type":51,"value":1911}," [",{"type":45,"tag":191,"props":1913,"children":1914},{"style":973},[1915],{"type":51,"value":1916},"\"",{"type":45,"tag":191,"props":1918,"children":1919},{"style":214},[1920],{"type":51,"value":1921},"my-namespace",{"type":45,"tag":191,"props":1923,"children":1924},{"style":973},[1925],{"type":51,"value":1916},{"type":45,"tag":191,"props":1927,"children":1928},{"style":973},[1929],{"type":51,"value":1930},"]\n",{"type":45,"tag":84,"props":1932,"children":1934},{"id":1933},"tips",[1935],{"type":51,"value":1936},"Tips",{"type":45,"tag":645,"props":1938,"children":1939},{},[1940,1952,1965,1978,1988,2007,2012],{"type":45,"tag":339,"props":1941,"children":1942},{},[1943,1945,1950],{"type":51,"value":1944},"Start by running discovery (",{"type":45,"tag":70,"props":1946,"children":1948},{"className":1947},[],[1949],{"type":51,"value":145},{"type":51,"value":1951},") to generate a baseline, then edit it.",{"type":45,"tag":339,"props":1953,"children":1954},{},[1955,1957,1963],{"type":51,"value":1956},"A discovered config can be passed directly to ",{"type":45,"tag":70,"props":1958,"children":1960},{"className":1959},[],[1961],{"type":51,"value":1962},"l8k generate",{"type":51,"value":1964}," without\nrepeating profile flags; use flags only for overrides.",{"type":45,"tag":339,"props":1966,"children":1967},{},[1968,1970,1976],{"type":51,"value":1969},"Use ",{"type":45,"tag":70,"props":1971,"children":1973},{"className":1972},[],[1974],{"type":51,"value":1975},"l8k schema",{"type":51,"value":1977}," to discover the Network Operator release keys supported by\nthe installed l8k version.",{"type":45,"tag":339,"props":1979,"children":1980},{},[1981,1986],{"type":45,"tag":70,"props":1982,"children":1984},{"className":1983},[],[1985],{"type":51,"value":473},{"type":51,"value":1987}," subnets are auto-generated if not specified — one per rail using non-routable ranges.",{"type":45,"tag":339,"props":1989,"children":1990},{},[1991,1997,1999,2005],{"type":45,"tag":70,"props":1992,"children":1994},{"className":1993},[],[1995],{"type":51,"value":1996},"docaDriver.unloadThirdPartyRDMAModules: true",{"type":51,"value":1998}," auto-populates ",{"type":45,"tag":70,"props":2000,"children":2002},{"className":2001},[],[2003],{"type":51,"value":2004},"UNLOAD_THIRD_PARTY_RDMA_MODULES",{"type":51,"value":2006}," from discovered OFED-dependent modules.",{"type":45,"tag":339,"props":2008,"children":2009},{},[2010],{"type":51,"value":2011},"For release 26.1+, SR-IOV requestor mode requires both the Network Operator drain requestor and the SR-IOV external drainer. l8k renders both; applying only CRs cannot enable their Deployment environment variables.",{"type":45,"tag":339,"props":2013,"children":2014},{},[2015,2017,2023],{"type":51,"value":2016},"Updating an existing release to the generated requestor-mode Helm values requires ",{"type":45,"tag":70,"props":2018,"children":2020},{"className":2019},[],[2021],{"type":51,"value":2022},"--overwrite-existing",{"type":51,"value":698},{"type":45,"tag":84,"props":2025,"children":2027},{"id":2026},"see-also",[2028],{"type":51,"value":2029},"See Also",{"type":45,"tag":645,"props":2031,"children":2032},{},[2033,2043,2054],{"type":45,"tag":339,"props":2034,"children":2035},{},[2036,2041],{"type":45,"tag":2037,"props":2038,"children":2039},"a",{"href":75},[2040],{"type":51,"value":40},{"type":51,"value":2042}," — Global flags",{"type":45,"tag":339,"props":2044,"children":2045},{},[2046,2052],{"type":45,"tag":2037,"props":2047,"children":2049},{"href":2048},"..\u002Fk8s-launch-kit-discover\u002FSKILL.md",[2050],{"type":51,"value":2051},"k8s-launch-kit-discover",{"type":51,"value":2053}," — Generate a config from live cluster",{"type":45,"tag":339,"props":2055,"children":2056},{},[2057,2062],{"type":45,"tag":70,"props":2058,"children":2060},{"className":2059},[],[2061],{"type":51,"value":925},{"type":51,"value":2063}," — Complete annotated YAML, including maintenance value restrictions",{"type":45,"tag":2065,"props":2066,"children":2067},"style",{},[2068],{"type":51,"value":2069},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2071,"total":1099},[2072,2079,2092,2107,2119,2132,2146],{"slug":4,"name":4,"fn":5,"description":6,"org":2073,"tags":2074,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2075,2076,2077,2078],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"slug":2080,"name":2080,"fn":2081,"description":2082,"org":2083,"tags":2084,"stars":23,"repoUrl":24,"updatedAt":2091},"k8s-launch-kit-deploy","deploy NVIDIA networking manifests to Kubernetes","Use this skill when the user wants to deploy generated NVIDIA networking manifests to a Kubernetes cluster using k8s-launch-kit (l8k). Activate for: applying manifests, deploying to cluster, the `l8k deploy` subcommand or the legacy --deploy flag on `l8k generate`, applying generated files, or any mention of pushing l8k output to a live cluster. Even if the user just says 'apply these' or 'push to cluster' after generating manifests, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2085,2086,2087,2090],{"name":17,"slug":18,"type":15},{"name":21,"slug":22,"type":15},{"name":2088,"slug":2089,"type":15},"Networking","networking",{"name":9,"slug":8,"type":15},"2026-07-14T05:31:50.114923",{"slug":2051,"name":2051,"fn":2093,"description":2094,"org":2095,"tags":2096,"stars":23,"repoUrl":24,"updatedAt":2106},"discover Kubernetes cluster network hardware capabilities","Use this skill when the user wants to discover their Kubernetes cluster's network hardware capabilities using k8s-launch-kit (l8k). Activate for: cluster discovery, hardware detection, NIC detection, finding what GPUs or NICs are in a cluster, creating a cluster config file, or when the user says 'discover' in the context of l8k or NVIDIA networking.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2097,2100,2101,2102,2103],{"name":2098,"slug":2099,"type":15},"Hardware","hardware",{"name":21,"slug":22,"type":15},{"name":2088,"slug":2089,"type":15},{"name":9,"slug":8,"type":15},{"name":2104,"slug":2105,"type":15},"Operations","operations","2026-07-14T05:31:58.825512",{"slug":2108,"name":2108,"fn":2109,"description":2110,"org":2111,"tags":2112,"stars":23,"repoUrl":24,"updatedAt":2118},"k8s-launch-kit-dryrun","preview NVIDIA networking deployment changes","Use this skill when the user wants to preview what k8s-launch-kit (l8k) would deploy without making changes, or wants to safely validate their configuration before applying. Activate for: dry-run, preview, validation, 'what would happen if', testing configurations, schema discovery, checking generated manifests, or any cautious pre-deployment step. Also use when the user asks 'is my config valid' or 'show me what would be created' -- even without mentioning dry-run explicitly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2113,2114,2115,2116,2117],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":21,"slug":22,"type":15},{"name":2088,"slug":2089,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:31:56.325698",{"slug":2120,"name":2120,"fn":2121,"description":2122,"org":2123,"tags":2124,"stars":23,"repoUrl":24,"updatedAt":2131},"k8s-launch-kit-generate","generate Kubernetes manifests for NVIDIA networking","Use this skill when the user wants to generate Kubernetes YAML manifests for NVIDIA networking deployment using k8s-launch-kit (l8k). Activate for: manifest generation, profile selection, choosing between SR-IOV\u002Fhost-device\u002FRDMA-shared\u002FIPoIB\u002FMacVLAN\u002FSpectrum-X, creating deployment files, or when the user asks 'which profile should I use' or needs help choosing a network configuration.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2125,2126,2127,2128,2129],{"name":17,"slug":18,"type":15},{"name":21,"slug":22,"type":15},{"name":2088,"slug":2089,"type":15},{"name":9,"slug":8,"type":15},{"name":2130,"slug":958,"type":15},"YAML","2026-07-14T05:31:51.352013",{"slug":2133,"name":2133,"fn":2134,"description":2135,"org":2136,"tags":2137,"stars":23,"repoUrl":24,"updatedAt":2145},"k8s-launch-kit-pipeline","run end-to-end NVIDIA networking deployment pipelines","Use this skill when the user wants to run the full k8s-launch-kit (l8k) pipeline end-to-end: discover cluster hardware, select a profile, generate manifests, and deploy them all in one command. Also activate for CI\u002FCD integration, automation pipelines, 'one-liner', 'complete workflow', or end-to-end NVIDIA networking deployment.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2138,2141,2142,2143,2144],{"name":2139,"slug":2140,"type":15},"Automation","automation",{"name":17,"slug":18,"type":15},{"name":21,"slug":22,"type":15},{"name":2088,"slug":2089,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:31:55.07782",{"slug":40,"name":40,"fn":2147,"description":2148,"org":2149,"tags":2150,"stars":23,"repoUrl":24,"updatedAt":2159},"manage NVIDIA k8s-launch-kit CLI patterns","k8s-launch-kit (l8k) CLI: Shared patterns for binary location, global flags, output formatting, exit codes, and error handling. Read this before using any other k8s-launch-kit skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2151,2154,2157,2158],{"name":2152,"slug":2153,"type":15},"CLI","cli",{"name":2155,"slug":2156,"type":15},"Engineering","engineering",{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:32:01.309487",{"items":2161,"total":2316},[2162,2180,2196,2207,2219,2233,2246,2260,2273,2284,2298,2307],{"slug":2163,"name":2163,"fn":2164,"description":2165,"org":2166,"tags":2167,"stars":2177,"repoUrl":2178,"updatedAt":2179},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2168,2171,2174],{"name":2169,"slug":2170,"type":15},"Documentation","documentation",{"name":2172,"slug":2173,"type":15},"MCP","mcp",{"name":2175,"slug":2176,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":2181,"name":2181,"fn":2182,"description":2183,"org":2184,"tags":2185,"stars":2193,"repoUrl":2194,"updatedAt":2195},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2186,2189,2190],{"name":2187,"slug":2188,"type":15},"Containers","containers",{"name":17,"slug":18,"type":15},{"name":2191,"slug":2192,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":2197,"name":2197,"fn":2198,"description":2199,"org":2200,"tags":2201,"stars":2193,"repoUrl":2194,"updatedAt":2206},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2202,2205],{"name":2203,"slug":2204,"type":15},"CI\u002FCD","ci-cd",{"name":17,"slug":18,"type":15},"2026-07-14T05:25:59.97109",{"slug":2208,"name":2208,"fn":2209,"description":2210,"org":2211,"tags":2212,"stars":2193,"repoUrl":2194,"updatedAt":2218},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2213,2214,2215],{"name":2203,"slug":2204,"type":15},{"name":17,"slug":18,"type":15},{"name":2216,"slug":2217,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":2220,"name":2220,"fn":2221,"description":2222,"org":2223,"tags":2224,"stars":2193,"repoUrl":2194,"updatedAt":2232},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2225,2228,2229],{"name":2226,"slug":2227,"type":15},"Debugging","debugging",{"name":2216,"slug":2217,"type":15},{"name":2230,"slug":2231,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":2234,"name":2234,"fn":2235,"description":2236,"org":2237,"tags":2238,"stars":2193,"repoUrl":2194,"updatedAt":2245},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2239,2242],{"name":2240,"slug":2241,"type":15},"Best Practices","best-practices",{"name":2243,"slug":2244,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":2247,"name":2247,"fn":2248,"description":2249,"org":2250,"tags":2251,"stars":2193,"repoUrl":2194,"updatedAt":2259},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2252,2255,2258],{"name":2253,"slug":2254,"type":15},"Machine Learning","machine-learning",{"name":2256,"slug":2257,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":2261,"name":2261,"fn":2262,"description":2263,"org":2264,"tags":2265,"stars":2193,"repoUrl":2194,"updatedAt":2272},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2266,2269],{"name":2267,"slug":2268,"type":15},"QA","qa",{"name":2270,"slug":2271,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":2274,"name":2274,"fn":2275,"description":2276,"org":2277,"tags":2278,"stars":2193,"repoUrl":2194,"updatedAt":2283},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2279,2280],{"name":17,"slug":18,"type":15},{"name":2281,"slug":2282,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":2285,"name":2285,"fn":2286,"description":2287,"org":2288,"tags":2289,"stars":2193,"repoUrl":2194,"updatedAt":2297},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2290,2293,2294],{"name":2291,"slug":2292,"type":15},"Code Review","code-review",{"name":2216,"slug":2217,"type":15},{"name":2295,"slug":2296,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":2299,"name":2299,"fn":2300,"description":2301,"org":2302,"tags":2303,"stars":2193,"repoUrl":2194,"updatedAt":2306},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2304,2305],{"name":2267,"slug":2268,"type":15},{"name":2270,"slug":2271,"type":15},"2026-07-14T05:25:54.928983",{"slug":2308,"name":2308,"fn":2309,"description":2310,"org":2311,"tags":2312,"stars":2193,"repoUrl":2194,"updatedAt":2315},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2313,2314],{"name":2139,"slug":2140,"type":15},{"name":2203,"slug":2204,"type":15},"2026-07-30T05:29:03.275638",496]