Doca Spcx Cc
NVIDIAOfficialCreated by NVIDIA
- Skill
- Tool integration
- Software development
- Apache-2.0
- Medium risk
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The doca-spcx-cc skill provides guidance for using the host-side doca_spcx_cc CLI tool to load, parameterize, and monitor SPC-X congestion-control algorithms on NVIDIA BlueField DPU hardware. It focuses on the operational workflow of deploying custom algorithms onto a DPA processor and evaluating their performance against live RDMA/RoCE fabric traffic. The skill emphasizes the critical requirement of generating actual fabric contention to observe algorithm behavior, provides a decision framework for choosing between SPCX and standard PCC surfaces, and outlines safety protocols for testing and production deployment.
What it does
- Provides operational guidance for the doca_spcx_cc CLI tool.
- Facilitates the loading, parameterization, and lifecycle management of SPC-X congestion-control algorithms.
- Defines the decision tree for selecting between SPCX, doca-pcc, and factory firmware PCC.
- Outlines the evaluation workflow for testing algorithms on non-production RDMA/RoCE fabrics.
- Surfaces diagnostic procedures for common errors like DOCA_PCC_PS_ERROR.
- Establishes safety and observability gates for transitioning algorithms to production.
When to use it
- When you need to load or manage a custom SPC-X congestion-control algorithm on a BlueField DPU.
- When evaluating the performance of a congestion-control algorithm under controlled fabric contention.
- When deciding whether to implement a custom algorithm via the SPCX or doca-pcc surface.
- When troubleshooting an SPCX session that is loaded but shows no impact on throughput or latency.
- When preparing to roll out a custom congestion-control algorithm to a production environment.
Advantages
- Provides a structured approach to high-stakes congestion-control deployment.
- Prevents common pitfalls by enforcing a contention-positive evaluation requirement.
- Clarifies the complex version-matching dependencies between the tool, library, compiler, and firmware.
- Offers a clear safety framework for production cutovers.
- Reduces ambiguity by explicitly defining the scope boundaries between SPCX, PCC, and DPA authoring.
Usage examples
- “I want to write a new RTT-based congestion-control algorithm for my RoCE fabric — which surface do I target?”
- The agent will guide you through the SPCX-vs-PCC-vs-factory-firmware decision tree to determine if SPCX is the appropriate surface based on your specific install and algorithm requirements.
- “My SPCX algorithm appears to load cleanly but the link's throughput is unchanged — what's going on?”
- The agent will help you verify if the link is experiencing actual contention, as congestion-control algorithms have no observable effect on idle links, and guide you through the error taxonomy.
- “My CC algorithm works on the lab BlueField pairs; can I push it to the production fleet?”
- The agent will evaluate your request against the safety overlay, requiring evidence from contention-positive testing, a documented rollback plan, and an established observability gate.
- “doca_spcx_cc exits with DOCA_PCC_PS_ERROR on start.”
- The agent will walk you through the layered error taxonomy to isolate whether the issue stems from the device, firmware slot, DPA image, or algorithm configuration.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/nvidia/doca-spcx-cc/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip doca-spcx-cc.zip -d .agents/skills
Documentation by NVIDIA
DOCA SPCX Congestion-Control Tool
Examples
"Should I use SPCX or
doca-pccfor a custom CC algorithm?" — this is in scope. Walk the decision tree before loading anything on a live fabric."SPCX loaded but throughput did not change." — confirm the algorithm is in charge before retuning parameters.
Instructions
Follow Loading order below. Open the tasks companion for configure / run. Open the capabilities companion for the SPCX-vs-PCC tradeoff and safety. Do not open every companion file.
Where to start: This is a tool skill for invoking
doca_spcx_cc — the host-side CLI that exercises
an SPC-X congestion-control algorithm on a
live RDMA / RoCE fabric driven by a BlueField with a DPA
processor. Open the tasks companion and start at
## configure for the
SPCX-vs-PCC-vs-factory-firmware decision tree (load-bearing
gate before any code), the role decision (RP / NP), the
DPA-side algorithm authoring vs consumption split, and the
live-link / contention precondition. Open
the capabilities companion when the question is
what does SPCX let me express that doca-pcc does not,
what is the SPCX-vs-PCC tradeoff, what runtime metrics
does the tool surface, or what is the safety posture for
loading a custom CC algorithm on a production fabric. If
DOCA is not installed yet, route to
doca-setup/SKILL.md first.
This skill covers the SPC-X CC tool.
doca-pcc/SKILL.md is the established
PCC story; SPCX is the documented extension that authors
SPCX-class algorithms on the same DPA hardware substrate.
The zero-touch RTT-based CC algorithm (ZTR-RTT) is one
NVIDIA reference algorithm that can be loaded through either the PCC or SPCX path
depending on the install and the user's algorithm choice;
the agent surfaces this decision tree explicitly per
the capabilities companion.
Example questions this skill answers well
The CLASSES of doca_spcx_cc questions this skill is built
to answer, each with one worked example. The class is the
load-bearing piece; the worked example is one instance.
"Should I use SPCX or
doca-pccfor my custom CC algorithm?" — worked example: "I want to write a new RTT-based congestion-control algorithm for my RoCE fabric — which surface do I target?". Answered by the SPCX-vs-PCC-vs-factory-firmware decision tree in the capabilities companionthe "is SPCX the right surface on this install?" gate in the tasks companion step 1.
"How do I evaluate my authored SPCX algorithm on a real RDMA link before letting it touch production?" — worked example: "I have a DPACC-compiled SPCX algorithm and a non-prod BlueField pair; how do I run a contention-positive evaluation?". Answered by the authoring vs consumption split + the live-link precondition in the capabilities companion
the replica-first evaluation flow in the tasks companion.
"My SPCX algorithm appears to load cleanly but the link's throughput / latency curve is unchanged — what's going on?" — worked example: "the host-side
doca_pcc --statusreportsActiveand a stable session, but my RoCE flows look unchanged". Answered by the live-link / contention rule in the capabilities companionthe "algorithm has no signal under no contention" guidance in the tasks companion + the tasks companion (route through the layered error taxonomy before blaming the algorithm).
No contention → no signal → no conclusion.
Activeplus an unchanged traffic curve is not evidence that the algorithm failed to take over from factory CC. A CC algorithm has no observable behaviour without actual contention on the fabric, so an idle-link or contention-absent run is uninformative by construction — it supports no verdict in either direction. Establish that the run actually generated contention before concluding anything, and never declare an algorithm either broken or safe on such a run. Rule in the capabilities companion.
"My SPCX algorithm passed replica testing — what's the gate before I roll it forward to production?" — worked example: "my CC algorithm works on the two BlueField pairs in the lab; can I push it to the fleet?". Answered by the safety overlay in the capabilities companion (heavily cross-linked to
doca-hardware-safety/SKILL.md): blast-radius bounded, observability gate proven, OOB reachable, factory-PCC rollback rehearsed, escalation path documented before any production cutover."Is
doca_spcx_ccon my install, and is it paired with the matchingdoca-pcclibrary and DPACC compiler version?" — worked example: "is the SPCX surface available on my DOCA install?". Answered by the version-overlay in the capabilities companion, which redirects to the canonicaldoca-version/SKILL.mdchain and adds the tool ↔doca-pcclibrary ↔ DPACC compiler ↔ firmware custom-PCC slot match rule."My SPCX session errored — is it the tool, the algorithm, the device, or the firmware?" — worked example: "
doca_spcx_ccexits withDOCA_PCC_PS_ERRORon start". Answered by the layered error taxonomy in the capabilities companionthe layered walk in the tasks companion.
Audience
This skill serves external developers, platform operators, and AI agents authoring, loading, and evaluating an SPC-X congestion-control algorithm on a BlueField with a DPA processor, against a live RDMA / RoCE fabric. Concretely:
A CC researcher / developer who has authored an SPCX-class DPA-side algorithm (or who is consuming a documented shipped reference such as the zero-touch RTT-based algorithm via the ZTR-RTT CC documentation via
doca-public-knowledge-mapon the SPCX path when the install + algorithm support it) and needs the operator-side harness to load, parameterize, start, observe, and stop the algorithm.A platform operator running a programmable-CC pilot on a non-prod RDMA fabric to characterise the algorithm's behaviour under controlled contention.
An AI agent producing a "is this SPCX algorithm safe to roll forward" answer honestly — with evidence from a contention-positive evaluation, a documented rollback to the factory PCC, and an explicit blast- radius bound — instead of a guess from datasheet prose.
It is not for users debugging the doca_spcx_cc
binary itself, not a substitute for the live public
DOCA SPCX / DOCA PCC programming guides, not the
right place for the DPA-side algorithm authoring detail
(that path goes through the public DOCA PCC programming guide and the
doca-pcc/SKILL.md +
doca-dpa/SKILL.md skills), and
not the right place for default factory PCC
configuration (no host-side library or SPCX tool needed;
route via
doca-public-knowledge-map/SKILL.md).
The tool is shipped as a CLI binary under
/opt/mellanox/doca/tools/, not a library you link
against; it uses the same kind: tool three-file
shape as the rest of the bundle.
Language scope
doca_spcx_cc is a C host-side CLI that links the
host-side doca-pcc/SKILL.md
library and loads a DPA-side SPCX algorithm image built
by the DPACC compiler. The algorithm body is a separate
DPA-side translation unit written in the language DPACC
accepts. The skill keeps workflow guidance
language-neutral and routes per-language questions to
the public DOCA PCC / DPACC guides via
doca-public-knowledge-map/SKILL.md.
When to load this skill
Load this skill when the user is — or the agent needs to
— invoke doca_spcx_cc on a real host with DOCA
installed, paired with a BlueField that has its DPA
processor exposed AND the firmware custom-PCC slot
enabled, against a port carrying RDMA / RoCE traffic with
actual contention. Concretely:
Loading an authored SPCX algorithm (or a documented shipped reference) onto the BlueField via the SPCX surface, parameterizing it, starting it, and observing its effect on the live link.
Evaluating an SPCX algorithm on a non-prod replica before any production rollout — capturing the contention-positive run as evidence.
Comparing SPCX vs
doca-pccpaths for the same algorithm class on the same install (where both paths are available) and deciding which to commit to.Producing a "safe to roll forward" recommendation with the documented evidence + rollback plan, or refusing the recommendation when the evidence / rollback is missing per the capabilities companion.
Diagnosing a
DOCA_PCC_PS_ERRORor a silent-no-effect symptom against the layered error taxonomy.
Do not load this skill for general DOCA orientation,
DPA-side algorithm authoring detail, raw cycle profiling
of the DPA, the factory PCC algorithm shipped in the
firmware, or DOCA install. For those, route to
doca-public-knowledge-map/SKILL.md,
doca-pcc/SKILL.md,
doca-dpa/SKILL.md, or
doca-setup/SKILL.md.
What this skill provides
This is a thin loader. Substantive material lives in two companion files:
the capabilities companion — what SPCX expresses that PCC does not (and where the surfaces overlap), the SPCX-vs-PCC-vs-factory-firmware decision tree, the authoring vs consumption split, the role decision (RP / NP), the documented probe-packet format axis, the live-link / contention precondition rule (the load-bearing safety invariant — "a CC algorithm has no signal under no contention"), the runtime observability surface (per-port / per-flow trace formats + the host-side status surface), the triple-axis precondition rule (
doca-pcc/SKILL.md: DPA-capable BlueField + firmware custom-PCC slot enabled +doca_pcc_cap_*agreement) extended with SPCX-specific availability, the version overlay (tool ↔ library ↔ DPACC ↔ firmware), the layered error taxonomy (install / device-binding / fw-slot / DPA-image / algorithm-precondition / live-link-precondition / runtime / version / cross-cutting), the observability surface, and the heavily-overlaid safety posture (a wrong CC algorithm on production can melt the fabric).the tasks companion — step-by-step workflows for the in-scope task verbs:
install(host-side DOCA install + DPA prerequisites + firmware custom-PCC slot),configure(SPCX-vs-PCC decision + role + algorithm + parametersprobe-packet format),
build(route to install — the host-side tool is shipped; the DPA-side algorithm is user-built by DPACC),modify(refuse — do not patch the binary; modify the invocation, algorithm, and parameters),run(the prepare → smoke → contention-positive evaluation flow),test(iterative loop on the replica before production),debug(walk the error taxonomy),use(the "safe to roll forward" decision with evidence + rollback + escalation), plus aDeferred task verbsblock.
The skill assumes a host where DOCA is already installed, a BlueField with a DPA processor and the firmware-level custom-PCC slot enabled is present and visible, the DPACC compiler is installed at a version matched to the host-side DOCA, the user already knows how (at sketch level) to write the DPA-side SPCX algorithm (or has a shipped reference algorithm to consume), and a non-prod RDMA / RoCE fabric with controllable contention is available for evaluation.
What this skill deliberately does not ship
This skill is agent guidance, not a samples or scripts bundle. To keep the boundary clean, it deliberately does not contain — and pull requests should not add:
A specific congestion-control algorithm. SPCX loads an algorithm the user supplies; the skill refuses to invent algorithm bodies and routes any "what algorithm should I write" question to the public DOCA PCC programming guide and to the user's own domain expertise.
Pre-baked example output (throughput / latency curves, per-flow counter snapshots). Output is device-, firmware-, fabric-topology-, and workload-specific; pinning one would mislead operators elsewhere.
Flag strings, subcommand names, probe-packet format tokens, or metric names beyond the DOCA release notes and
--help. This surface still evolves; the installed--helpis the authoritative inventory.Wrappers, parsers, or scripts consuming the tool's output. The format is documented; script against your installed version using the release notes.
A tuning recommendation derived from a single observation. CC tuning on a live fabric is high-stakes: the skill prescribes how to capture evidence and compare against the factory PCC baseline, and refuses to turn one observation into a parameter change without the user's own domain analysis.
A
samples/orreference/subtree. This is a thin loader for a shipped CLI; substantive material lives in the release notes, in--help, and indoca-pcc/SKILL.md+doca-dpa/SKILL.md.
Loading order
Read this skill first to confirm the user's question is in scope (SPCX-side custom CC work, not factory firmware PCC, not raw DPA cycle profiling, and not algorithm authoring detail).
For the SPCX-vs-PCC decision tree, the authoring vs consumption split, the live-link precondition, the version overlay, the error taxonomy, the observability surface, and the safety posture, see the capabilities companion.
For the documented invocations and the prepare → smoke → contention-positive evaluation workflow —
install,configure,build,modify,run,test,debug,use— see the tasks companion.
Related skills
doca-pcc/SKILL.md— the host-side Programmable Congestion Control library SPCX builds on and links. The SPCX-vs-PCC decision tree in the capabilities companion is the load-bearing routing rule; conflating the two is the most common programmable-CC first-touch error.doca-dpa/SKILL.md— the DPA control library the algorithm's DPA-side body builds on: kernel-launch model, DPACC build flags, DPA-side comms / verbs.doca-rdma/SKILL.md— the RDMA / RoCE flows being controlled. Without traffic in flight and contention on the fabric the algorithm has no signal; surface this precondition before any evaluation.doca-pcc-counters/SKILL.md— read-only PCC counter inspection; the cheaper "is anything happening on this port" step before or during an SPCX evaluation.doca-hardware-safety/SKILL.md— the bundle-wide hardware-safety meta-policy this skill's## Safety policylayers on. Deploying a wrong CC algorithm on a production fabric is a meta-policy STOP case.doca-public-knowledge-map/SKILL.md— routing to the public SPCX, PCC, and DPA / DPACC guides.doca-version/SKILL.md— canonical DOCA version handling.## Version compatibilityin the capabilities companion adds the tool ↔doca-pcc↔ DPACC ↔ firmware custom-PCC slot matching rule.doca-setup/SKILL.md— env preparation, install and DPACC compiler verification, BlueField firmware configuration (the custom-PCC slot is a firmware-level setting), and the no install yet path via the public NGC DOCA container.doca-debug/SKILL.md— the cross-cutting debug ladder. Cross-link runtime evidence and counter snapshots into adoca-debugsession when the cause sits below DOCA.doca-structured-tools-contract/SKILL.md— the detect → prefer → fall back → report contract the command appendix in the tasks companion honors.doca-programming-guide/SKILL.md— shared DOCA programming patterns, including the cross-libraryDOCA_ERROR_*taxonomy this tool's error layer overlays.
The factory PCC algorithms inside ConnectX firmware are not in
scope: they work without doca_spcx_cc and are configured through
firmware knobs, not a host-side API. Route via
doca-public-knowledge-map/SKILL.md.
Files
- ATTRIBUTION.mdAdded by AutoGineer894 B
- BENCHMARK.md9.9 KiB
- CAPABILITIES.md24.0 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md17.3 KiB
- SKILLCARD.yaml2.7 KiB
- TASKS.md29.8 KiB
- evals/evals.json3.3 KiB
- skill-card.md5.3 KiB
- skill.oms.sig5.1 KiB
TASKS.md
DOCA SPCX Congestion-Control Tool — Tasks
Where to start: The verbs that carry real workflow
content are ## install (host-side DOCA + DPA + firmware
slot prerequisites), ## configure (the SPCX-vs-PCC
decision tree + role + algorithm + parameters + probe-
packet format), ## run (the prepare → smoke →
contention-positive evaluation flow), ## test
(iterative loop on the replica), ## debug (layered
diagnosis), and ## use (the "safe to roll forward"
decision with evidence + rollback + escalation). The two
routing-stub verbs (build, modify) are kept because
the agent's task-verb contract is uniform across the
bundle and each carries a meaningful pointer to where the
user's question actually belongs.
This file is loaded by SKILL.md after
CAPABILITIES.md. It walks the agent
through the documented invocations of doca_spcx_cc, the
replica-first evaluation discipline, and the hand-off to
the production roll-forward gate that the bundle-wide
hardware-safety meta-policy gates.
install
doca_spcx_cc is shipped pre-built as part of every
DOCA install that includes the SPCX optional component,
under /opt/mellanox/doca/tools/. The operator-side
install path:
Confirm DOCA is installed with the SPCX component. If the binary is missing, route to
doca-setup ## install(doca-setup/TASKS.md#configure) to install or repair the host-side DOCA package selection; confirm the version perdoca-version TASKS.md ## configure(doca-version/TASKS.md#configure).Confirm the host-side
doca-pcc/SKILL.mdlibrary is installed at the matching version. The SPCX tool links this library; the two must come from the same DOCA release band perCAPABILITIES.md ## Version compatibility.Confirm the DPACC compiler is installed and version-matched. Per the
doca-dpa/SKILL.mdoverlay, the DPA-side algorithm image is built by DPACC and the host-side DOCA must match DPACC.Confirm a BlueField with a DPA processor is physically present and visible to the host through DOCA. Walk
doca-dpa TASKS.md ## configure(doca-dpa/TASKS.md#configure) step 1 to enumerate the device.Confirm the firmware custom-PCC slot is enabled. Per
doca-pcc CAPABILITIES.md ## Capabilities and modes(doca-pcc/CAPABILITIES.md#capabilities-and-modes) triple-axis precondition: custom-PCC requires a firmware-level slot to be enabled via themlxconfig-class knob the DOCA PCC guide names. If the slot is disabled, the SPCX session will fail with the firmware-precondition error layer. The slot flip is a hardware-touching change per the bundle-wide hardware-safety meta-policy indoca-hardware-safety CAPABILITIES.md ## Safety policy(doca-hardware-safety/CAPABILITIES.md#safety-policy) — capture the pre-flight inventory, confirm OOB, and follow the cold-power-cycle commit rule.Confirm SPCX availability on the installed DOCA + BlueField generation. SPCX is the newer of the two programmable-CC surfaces; the DOCA release notes name the supported combinations. The agent does NOT assume SPCX is available — the gate is
doca_spcx_cc --helpsucceeding on the installed binary + the DOCA release notes naming the user's setup.Confirm a non-prod RDMA / RoCE fabric with controllable contention is reachable for the evaluation flow in
## test. Without contention there is no signal to evaluate against.Confirm the operator has the privileges the DOCA release notes require for binding the device, loading the algorithm image, and writing the captured artifacts.
If the binary is not at the standard path, the fix is to install / repair the host-side DOCA package selection that includes the SPCX component, not to patch the file in place.
configure
The tool's configuration is the invocation + the loaded DPA-side algorithm image. Steps the agent walks the user through, in order:
Gate — pick the right programmable-CC surface. Walk the SPCX-vs-PCC-vs-factory-firmware decision tree in
CAPABILITIES.md ## Capabilities and modes. If the user wants a documented default algorithm, route to firmware configuration; if the user wants the established PCC surface, route todoca-pcc/SKILL.md; only commit to SPCX when the install + algorithm + BlueField combination supports it AND the user accepts the newer-surface tradeoff.Confirm the live-link / contention precondition. The fabric the tool will exercise must be live, carry RDMA / RoCE traffic, and have contention that matches the algorithm's design. Document the contention shape explicitly; an unstated contention pattern means the run is uninformative per
CAPABILITIES.md ## Capabilities and modeslive-link rule.Source the DPA-side algorithm. Either build the user-authored algorithm via DPACC (walk the public DOCA SPCX / DOCA PCC programming guides via
doca-public-knowledge-map/SKILL.mdfor the algorithm-side discipline) or stage the documented shipped reference per the ZTR-RTT CC documentation viadoca-public-knowledge-map. Pin a SHA + version of the algorithm image; the evaluation evidence depends on this.Pick the role. The role decision (RP — Reaction Point — vs NP — Notification Point) is a deployment-shape choice the user makes per-endpoint. The shipped
doca_spcx_ccbinary runs as RP and registers no--roleCLI flag (--helpfirst to confirm the actual registered flag set on that DOCA release; do NOT quote a--roleflag the binary does not expose). The two endpoints of the deployment must still agree on the role assignment; quote the assignment back to the user so they can challenge it.Pick the probe-packet format.
--probe-packet- format(e.g. CCMAD per the public default — re- confirm the exact token against--help). Both ends of the deployment must agree on the format.Stage the parameters. Each algorithm exposes a parameter set; the parameters live in the algorithm documentation, not in this skill. For a user-authored algorithm, resolve the applicable the public DOCA PCC programming guide through
doca-public-knowledge-map/SKILL.mdand validate every name/range there. For the shipped zero-touch RTT reference, use the ZTR-RTT CC documentation viadoca-public-knowledge-map. If no authoritative range is available, stop rather than invent one. Pin the parameter set in writing; the parameter set is part of the evaluation evidence tuple perCAPABILITIES.md ## Observability.Plan thread count + core list. Per the shipped sample (the host-side
doca-pccdefaults), the session uses a thread count + a per-thread core list. The agent does not invent the defaults; the shipped sample +--helpon the installed binary are the authoritative source.Stage the capture surface. Decide where the per-port / per-flow tracer output goes, and pair it with a planned read of
doca-pcc-counters/SKILL.mdsnapshots before / during / after the evaluation.
For the canonical DOCA universal lifecycle on the
host-side PCC library this tool drives, see
doca-pcc TASKS.md ## configure (doca-pcc/TASKS.md#configure)
and
doca-programming-guide TASKS.md ## configure (doca-programming-guide/TASKS.md#configure).
This skill is concerned with the operator-side
configuration of the SPCX harness.
build
doca_spcx_cc is shipped pre-built as part of every
DOCA install that includes the SPCX optional component
(/opt/mellanox/doca/tools/doca_spcx_cc). There is no
source tree the external user is expected to compile for
the tool itself.
The user-built half is the DPA-side algorithm image:
the DPA-side translation unit the user wrote (or the
shipped reference algorithm code), compiled by DPACC into
an image the tool loads via the
doca-pcc/SKILL.md library.
Routing for nearby "build" questions:
"The binary isn't there — do I need to build it?" → no. Route to
doca-setup ## install(doca-setup/TASKS.md#configure) to install or repair the host-side DOCA package selection that includes the SPCX component."I want to build my own SPCX algorithm." → that is the DPA-side build. Route to
doca-pcc TASKS.md ## build(doca-pcc/TASKS.md#build) for the cross-side build pattern + the public DOCA SPCX / DPACC guides viadoca-public-knowledge-map/SKILL.mdfor the SPCX-specific algorithm authoring detail."I want to build the shipped reference RTT-based algorithm." → route to the ZTR-RTT CC documentation via
doca-public-knowledge-mapfor the algorithm-side discipline; the tool's harness is the same."I want to extend the tool with a new mode." → out of scope here; this skill is for external operators consuming the shipped tool, not for contributors extending it.
The ## What this skill deliberately does not ship block
in SKILL.md explicitly forbids adding a
build recipe for the SPCX tool; revisit that policy
before changing this section.
modify
Do not modify the shipped doca_spcx_cc binary. It
is an NVIDIA-shipped CLI; there is no documented public
way to change its behaviour, output format, or
parameter surface, and none should be invented.
What the agent does modify, every time, is:
The tool invocation — the registered argp flags (
--device,--threads,--wait-time,--probe-packet-format), the algorithm-image / DPA-resource flags exactly as--helplists them, and any capture-surface flags the binary registers. The role (RP) is NOT a runtime knob.The DPA-side algorithm image — the user-authored algorithm body (rebuilt via DPACC) or the shipped reference algorithm's parameter set (the ZTR-RTT CC documentation via
doca-public-knowledge-map).
That is the configuration loop in ## configure
above and the iteration loop in ## test below;
treat modify the invocation + algorithm, not the
binary as the operating mode.
Routing for nearby "modify" questions:
"My algorithm is mis-behaving on the live link — can I tweak it in place?" → no; tweak the source, rebuild via DPACC, re-load. The runtime is immutable.
"I want a different observability surface than the tool exposes." → re-examine the documented observability surface in
CAPABILITIES.md ## Observability; pair withdoca-pcc-counters/SKILL.mdanddoca-rdma/SKILL.mdfor complementary surfaces. Patching the tool's output is out of scope.
run
The prepare → smoke → contention-positive evaluation
flow — every SPCX session goes through it, no
exceptions. The full invocation surface lives in the
DOCA release notes; this section names the shape
of the flow, not verbatim command lines (per
CAPABILITIES.md ## Safety policy
"do not invent flags").
Do-not-invent guard (flags vs subcommands). The
doca_spcx_ccbinary takes flags only — it has no subcommand surface. There is noload/start/observe/stopsubcommand family for this binary. The flag inventory the bundle enumerates verbatim is--device,--threads,--wait-time,--probe-packet-format, plus algorithm-image and capture-surface flags (see## Command appendix). The role (RP vs NP) is not registered as a CLI flag — do not quote--roleagainst--helpoutput that does not list it. The host-side status values reported by the bundle (Active,Standby,Deactivated,ErrorperCAPABILITIES.md ## Capabilities and modes) are status indicators, not subcommands.
Confirm prerequisites. Per
## installand## configure: binary present, library + DPACC + firmware-slot + SPCX availability all aligned, algorithm image pinned, live-link + contention fabric reachable.Capture the pre-flight inventory. Per the bundle-wide hardware-safety meta-policy (
doca-hardware-safety CAPABILITIES.md ## Capabilities and modes(doca-hardware-safety/CAPABILITIES.md#capabilities-and-modes)): PCIe topology, link state, firmware level, BFB level, current CC algorithm in effect (factory or prior programmable), host-side env snapshot. This is the baseline the rollback compares against.Confirm OOB management path is reachable. Per the meta-policy
doca-hardware-safety CAPABILITIES.md ## Safety policy(doca-hardware-safety/CAPABILITIES.md#safety-policy) OOB rule, if the cutover touches a BlueField the operator manages over the same RDMA link the SPCX algorithm controls.Smoke run — load the algorithm, briefly observe the host-side status. Run
doca_spcx_ccwith the chosen role + probe-packet format + algorithm image + thread / core layout for a short window. Confirm the host-side status reachesActiveperCAPABILITIES.md ## Observabilityand the tool emits the documented start banner. If the session does not reachActive, stop and walk## debuglayer by layer.Inject the planned contention pattern. The evaluation only produces signal when the fabric is contended in a way that matches the algorithm's design. Confirm via
doca-pcc-counters/SKILL.mdsnapshots anddoca-rdma/SKILL.mdflow observation that the contention is real.Capture per-port / per-flow runtime output. The tool's tracer-style output is the primary evidence surface; pair it with
doca-pcc-counterssnapshots before / during / after, and withdoca-rdma-side metrics (throughput, latency, completion ordering).Stop the algorithm cleanly. Send SIGINT / SIGTERM per the shipped sample's signal handling (the agent re-confirms against
--help); confirm the host-side status transitions toDeactivatedcleanly; capture the final tracer output.Confirm post-stop state on the link. The fabric should return to the algorithm-in-effect- before state (the captured pre-flight baseline). If it does not, the rollback path is the immediate next step.
When recording the run for downstream consumers (the
evaluation evidence pattern), write down: the DOCA
version, the DPACC compiler version, the BlueField
identity + firmware version + custom-PCC slot state,
the algorithm name + SHA + version + parameter set,
the role assignment per endpoint, the probe-packet
format, the fabric topology + contention shape, the
capture window, the tracer output, the
doca-pcc-counters snapshots, and the doca-rdma
metrics. The downstream ## test,
## debug, and ## use workflows
depend on those fields.
test
doca_spcx_cc is a high-stakes evaluation tool, so
its ## test verb is about iteratively building
evidence — confirming the algorithm's behaviour is
what the user expects under controlled contention, on a
replica that matches production's hardware class — not
unit-testing the tool itself.
## test is an iterative loop, not a one-shot
pass. A single contention-positive run is the
beginning of the evidence pile, not the end. Each
iteration tightens one axis (parameter set, contention
shape, algorithm version, observability completeness,
fabric-topology match) and loops back to
## run.
The eval-loop overlay (rows apply to every SPCX session):
| Iteration trigger | What it looks like | What changes next iteration |
|---|---|---|
Host-side status never reaches Active | Install / device-binding / firmware-slot / DPA-image / algorithm-precondition layer of the error taxonomy | Walk CAPABILITIES.md ## Error taxonomy layers 1–5 in order; do not jump ahead. |
Status reaches Active but tracer / counters show no effect on the link | Live-link / contention layer — the link is idle, the contention is below the algorithm's signal floor, or the contention pattern is wrong | Inject the planned contention; confirm via doca-pcc-counters that the link is in fact congested; re-run. Do NOT conclude the algorithm is broken from an idle-link run. |
| Algorithm running on a congested link but the captured behaviour is wrong (oscillation, rate collapse, persistent under-utilisation) | Runtime layer of the error taxonomy | Do NOT roll forward; stop the algorithm, capture the runtime evidence, walk doca-pcc TASKS.md ## debug (doca-pcc/TASKS.md#debug); fix in the algorithm source, rebuild via DPACC, re-evaluate. |
| Behaviour looks right on this replica but the replica does not match production | Per the bundle-wide hardware-safety replica-first rule | Re-run on a replica that matches production on BlueField generation, firmware level, host kernel, fabric topology class, contention pattern, and representative workload class; do NOT roll forward against a non-matching replica. |
| Two consecutive runs on the same setup produce different captured behaviour | Non-determinism in the contention generator, the algorithm itself, or the observability surface | Pin the contention generator; pin the parameter set; pin the algorithm SHA; re-run; if still divergent, the algorithm's non-determinism is the answer the user came for. |
| Algorithm passes replica testing on every captured axis | Evidence is ready for the production-rollout gate per ## use | Move to ## use; do NOT skip the bounded-blast-radius and rollback-rehearsed steps. |
The agent's rule: every change to the algorithm or its parameters re-opens the loop. Re-running with a tweaked parameter set and quoting the previous captured behaviour without re-checking under the new parameter set is exactly the failure mode this loop replaces.
Loop termination: stop iterating once the captured behaviour is consistent across two consecutive runs on a production-matching replica — including hardware/firmware/kernel/topology, contention pattern, and representative workload class — AND the rollback path has been rehearsed end-to-end on the replica AND the bounded-blast-radius rollout plan is in writing.
This skill does NOT ship a "test fixture" or pre- recorded expected output. CC behaviour is fabric-, topology-, contention-, and algorithm-specific; pinning one would mislead operators on a different setup.
debug
When doca_spcx_cc fails to load, fails to reach
Active, or behaves wrongly on a congested link, walk
the layered error taxonomy in
CAPABILITIES.md ## Error taxonomy
in order. The shape of the diagnosis:
Install. Confirm the binary exists, the SPCX optional component is installed, and the host-side
doca-pcc/SKILL.mdlibrary is present. Route todoca-setup ## install(doca-setup/TASKS.md#configure) if not.Device-binding. Confirm the BlueField is visible to DOCA per
doca-pcc TASKS.md ## configure(doca-pcc/TASKS.md#configure) step 1.Firmware custom-PCC slot. Confirm the slot is enabled via the
mlxconfig-class knob the public guide names. The slot flip is a hardware-touching change perdoca-hardware-safety CAPABILITIES.md ## Safety policy(doca-hardware-safety/CAPABILITIES.md#safety-policy).DPA-image. Confirm the DPA-side algorithm image was built by a DPACC version matched to the host-side DOCA per
CAPABILITIES.md ## Version compatibility; re-build if not.Algorithm-precondition. Confirm the parameter set is within the algorithm's documented ranges; confirm the algorithm's required probe-packet format is exposed on this install; confirm the far-side endpoint exists and has the matching role assignment.
Live-link / contention. Confirm contention actually exists on the fabric and that its shape matches the algorithm's design. This is the most common "my algorithm did nothing" root cause.
Runtime. If the algorithm is running on a congested link but the captured behaviour is wrong, capture the evidence and walk
doca-pcc TASKS.md ## debug(doca-pcc/TASKS.md#debug); the rollback path is the immediate operational response — do NOT keep iterating on a production- exposed deployment.Version. Walk
doca-version TASKS.md ## debug(doca-version/TASKS.md#debug) end-to-end; the tool ↔ library ↔ DPACC ↔ firmware quadruple is the common version mismatch failure.Cross-cutting. Cause is below DOCA — driver, firmware, BlueField mode, host kernel. Hand off to
doca-debug ## debug(doca-debug/SKILL.md) anddoca-setup ## debug(doca-setup/TASKS.md#debug).
In every case: quote what the tool reported. Do not paraphrase the tracer output, do not summarize the per-port / per-flow stream into a single number, and do not skip the live-link / contention layer.
use
The captured evaluation evidence is consumed by the roll-forward vs roll-back decision — the load- bearing safety gate the bundle's hardware-safety meta- policy gates. The agent's hand-off:
Confirm every replica-first criterion is met per
CAPABILITIES.md ## Safety policy: evaluation on a replica that matches production on hardware class, contention shape matched to the algorithm's design, two consecutive runs produced consistent behaviour, rollback rehearsed end-to-end on the replica.Confirm the production rollout plan is bounded. First production cutover is one BlueField pair, not the fleet. Then a small bounded set. Then progressively larger bounded sets, with the observability gate proven at each step.
Confirm the rollback to factory PCC is documented. The rollback names the exact action (revert the loaded algorithm, fall back to the factory PCC behaviour in firmware) and the gate that triggers it (observability surface goes silent, queue depth exceeds threshold, host-side
doca-pccstatus transitions toError, fabric- level link instability).Confirm OOB management path is reachable for every production endpoint the algorithm is loaded onto.
Confirm maintenance window discipline per
doca-hardware-safety CAPABILITIES.md ## Safety policy(doca-hardware-safety/CAPABILITIES.md#safety-policy) — cutovers run inside an explicit, time-boxed window with operations notified.Refuse the cutover when any gate fails. The agent surfaces the failed gate as blocking and does NOT find a creative workaround. Escalate per
doca-hardware-safety CAPABILITIES.md ## Safety policy(doca-hardware-safety/CAPABILITIES.md#safety-policy) no-rollback rule.
The agent's rule: the tool evaluates; this verb gates
the cutover; the
doca-hardware-safety/SKILL.md
meta-policy is the final authority. A "safe to roll
forward" answer requires evidence + bounded plan +
documented rollback + OOB + maintenance window;
anything less is refused.
Deferred task verbs
The verbs below are not doca_spcx_cc work and should
be routed out before the agent does any of them under
this skill's name.
DPA-side algorithm authoring detail →
doca-pcc/SKILL.md+doca-dpa/SKILL.md+ the the public DOCA PCC programming guide viadoca-public-knowledge-map/SKILL.md. This skill is the operator-side harness; the algorithm-side discipline is owned upstream.Factory PCC configuration → firmware-level knobs, no host-side library or tool needed. Route via
doca-public-knowledge-map/SKILL.md.PCC counter inspection without loading an algorithm →
doca-pcc-counters/SKILL.md. The counter tool is read-only and side-effect-free; SPCX loads an algorithm.Raw DPA cycle profiling → different surface, different tool. Route via
doca-public-knowledge-map ## DOCA tools(doca-public-knowledge-map/SKILL.md#doca-tools); this tool's tracer output is at the SPCX-runtime layer, not the DPA-instruction layer.RDMA library programming questions →
doca-rdma/SKILL.md.General DOCA install / repair →
doca-setup ## install(doca-setup/TASKS.md#configure).
Command appendix
doca_spcx_cc-specific invocation classes the verbs
above reach for. Every row is a CLASS — the agent must
not invent flags, role tokens, probe-packet format
tokens, or metric names beyond --help on the
installed binary and the DOCA release notes.
Infra-aware preamble (every row below). Per the
bundle's detect → prefer → fall back → report contract
documented in
doca-structured-tools-contract ## The agent behavior contract (doca-structured-tools-contract/SKILL.md#the-agent-behavior-contract),
the agent should:
Probe for the matching structured helper FIRST (
doca-env --jsonfor version + devices + DPA availability + custom-PCC slot state in one shot;doca-capability-snapshotfor per-device capability flags).If the probe succeeds, the structured tool's output is the authoritative answer.
If the probe fails, fall back to the manual command in the row.
The schemas the structured tools emit are defined in
doca-structured-tools-contract ## Schemas(doca-structured-tools-contract/SKILL.md#schemas).
| Purpose (class) | Invocation (shape) | Owning step | Reads as healthy when … |
|---|---|---|---|
| Discover the documented flag surface | doca_spcx_cc --help + the DOCA release notes | ## configure; ## debug layer 1 | Prints the documented inventory the shipped binary actually registers via argp: --device, --threads, --wait-time, --probe-packet-format, plus algorithm-image / capture-surface flags. The role (RP vs NP) is NOT registered as a CLI flag on this DOCA release; do not quote --role against --help output that does not list it. |
| Smoke-load the algorithm in RP role | doca_spcx_cc --device <mlx5_*> --probe-packet-format <token> ... (flags per --help; the binary runs as RP, see ## configure step 4) | ## run step 4 | Host-side status reaches Active; the documented start banner prints; the per-port tracer surface begins emitting. |
| Drive the contention-positive evaluation | Smoke-load above + the planned contention pattern injected on the fabric | ## run steps 5–6; ## test iteration | The tracer surface shows the algorithm reacting to the contention; doca-pcc-counters snapshots show non-trivial PCC counter activity; doca-rdma metrics show the modulation the algorithm is designed for. |
| Stop the algorithm cleanly | SIGINT / SIGTERM to the running session per the shipped sample's signal handling | ## run step 7 | Host-side status transitions to Deactivated; the post-stop fabric state matches the captured pre-flight baseline. |
| Capture the evidence tuple | Pair the tool's tracer output with doca-pcc-counters snapshots, doca-rdma metrics, and the metadata tuple per CAPABILITIES.md ## Observability | ## test baseline-capture rule; ## use gate | The full (DOCA + DPACC + BlueField + firmware + algorithm SHA + parameter set + role + probe-packet format + fabric topology + contention shape + window) tuple is attached to the captured artifact. |
| Roll back to the factory PCC | The documented rollback path the operator rehearsed on the replica | ## use | The previous CC algorithm (factory or prior programmable) is restored; the captured post-rollback state matches the pre-flight baseline. |
Three cross-cutting rules for this appendix:
Never invent a flag, role token, probe-packet format token, algorithm parameter name, or metric name.
--helpon the installed binary and the DOCA release notes are the joint contract.Smoke before contention, contention before conclusion. Every row above presumes the smoke reached
Activefirst AND the contention precondition was met. Drawing a conclusion from either step in isolation is the canonical SPCX evaluation failure.Cross-link instead of duplicate. Cross-cutting commands (
pkg-config --modversion doca-pcc,doca_caps --list-devs,mlxconfig -d <bdf> qfor the custom-PCC slot state) live indoca-debug ## debug(doca-debug/SKILL.md) anddoca-setup TASKS.md ## debug(doca-setup/TASKS.md#debug); this appendix names onlydoca_spcx_cc-specific invocation classes.
Cross-cutting
A few rules that apply across every verb in this file,
restated here so they are visible at the point of
action and not buried in SKILL.md:
The DOCA release notes plus the installed
--helpare the joint source of truth. When they disagree, the installed--helpwins for the user's actual run.A CC algorithm has no signal under no contention. The agent refuses to declare an algorithm safe based on an idle-link or contention-absent run.
Replica-first is mandatory. No production cutover without a contention-positive evaluation on a hardware-matched replica and a rehearsed rollback.
Factory-PCC rollback is the always-available escape hatch. Every deployment plan names it explicitly; a plan without it is refused per the bundle-wide hardware-safety meta-policy.
Quote the (DOCA + DPACC + BlueField + firmware + algorithm SHA + parameter set + role + probe-packet format + fabric topology + contention shape + window) tuple. Evidence without the tuple is unreplicable.
This skill assumes a healthy DOCA install with the SPCX component, a paired
doca-pcc/SKILL.mdlibraryDPACC, a BlueField with a visible DPA and the firmware custom-PCC slot enabled, and a contention-positive replica fabric. If any of those is in doubt, route to
doca-setup/SKILL.md,doca-pcc/SKILL.md, ordoca-hardware-safety/SKILL.mdbefore running anything else here.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
The author says: Requires DOCA SDK installed at /opt/mellanox/doca on Linux (Ubuntu 22.04/24.04 or RHEL/SLES) with the SPCX optional component, a BlueField exposing its DPA processor with the firmware custom-PCC slot enabled, the DPACC compiler installed and version-matched, and a non-prod RDMA / RoCE fabric with controllable contention reachable for evaluation. Probes via `pkg-config doca-pcc` and `doca_spcx_cc --help`. The validation steps require a live DOCA install.
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- NVIDIA
- Publisher
- NVIDIA (Official)
- Source
- NVIDIA/skills · skills/doca-spcx-cc · commit fce3cca
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE-APACHE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by NVIDIA or NVIDIA.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download doca-spcx-cc.zip