DOCA UROM Service
Where to start: This skill is for operating the DOCA UROM
Service container on the BlueField Arm side. It is not for
linking against a library, and it is not the host-side
enqueue surface. If the user wants to deploy or run the
service container, open TASKS.md and start at
## configure. If the question is what
shape of service is DOCA UROM Service, what does it execute, and
how does it pair with the host-side library, start at
CAPABILITIES.md. If DOCA is not installed
on the BlueField yet, route to
doca-setup first. If the user's
real question is about writing host-side code that enqueues
remote memory operations through the paired API, the right
skill is doca-urom — the
host-side library; this service is the DPU-side executor that
library offloads to.
Example questions this skill answers well
The CLASSES of DOCA UROM Service 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.
- "Is DOCA UROM Service the right thing to deploy on my
BlueField, or do I just need the host library?" — worked
example: "my MPI cluster's host nodes link against
doca-urom; what runs on the BlueField side and why must it
also be there?". Answered by the publisher / executor
paired-contract model in
CAPABILITIES.md ## Capabilities and modes
- the deploy-this-when path-selection rule in
CAPABILITIES.md ## Safety policy
- the env-prep checklist in
TASKS.md ## configure.
- "Which library / service version pair am I supposed to
run together?" — worked example: "the host fleet upgraded
to a newer
doca-urom; do I have to upgrade the service
containers on every BlueField, or is the pairing flexible?".
Answered by the version-contract overlay in
CAPABILITIES.md ## Version compatibility
- the paired-version step in
TASKS.md ## configure +
doca-version as the canonical
body.
- "What does the service configure — UCX components,
collectives, queue depths, how the host pairs over Comch?" — worked
example: "my upstream stack wants to offload all-reduce
collectives; how do I tell the service to expose that
collective family and how does the host pair to it over DOCA
Comch?". Answered by the configuration-axes table in
CAPABILITIES.md ## Capabilities and modes
- the config-authoring step in
TASKS.md ## configure.
- "Host's
doca-urom calls fail with NOT_PERMITTED even
though doca_dev access is fine — is this the service?" —
worked example: "first enqueue from host returns
DOCA_ERROR_NOT_PERMITTED after a clean doca_ctx_start()".
Answered by the Comch-pairing / RDMA-permissions layer in
CAPABILITIES.md ## Error taxonomy
- the layered ladder in
TASKS.md ## debug, which surfaces "is
the DOCA Comch endpoint pair correctly established and is the
underlying RDMA permission stack happy" BEFORE blaming a
service-side authz layer (no such layer exists in the shipped
binary — NOT_PERMITTED here is a Comch / RDMA signal, not a
UROM-service authz signal).
- "Operations enqueue but never complete — service or
substrate?" — worked example: "host enqueue succeeds, the
progress engine never sees the completion, what layer is
hung". Answered by the service-vs-substrate split in
CAPABILITIES.md ## Error taxonomy
- the layered ladder in
TASKS.md ## debug, which separates
service queue full / handler stuck from underlying RDMA
transport down before recommending a fix on either side.
- "Performance with offload is worse than the host-CPU
baseline — is the service the bottleneck?" — worked
example: "we deployed the service, the workload runs, but
collectives are slower than when the host CPU posted them
itself". Answered by the offload-isn't-free rule in
CAPABILITIES.md ## Safety policy
- the smoke-before-scale step in
TASKS.md ## test, which surfaces the
workload's pattern may not actually benefit from DPU offload
as a legitimate diagnosis, not a service bug.
Audience
This skill serves external operators and platform teams who
deploy and operate the DOCA UROM Service container on
BlueField to receive and execute the remote memory operations
HPC / UCX / MPI workloads on the host enqueue through
doca-urom. Concretely: people running the service container
on BlueField Arm, choosing which UCX components and collectives
it exposes, sizing the enqueue queue depth, wiring the DOCA
Comch endpoint pairing between host doca-urom and the
service container (the shipped binary has NO standalone
service-side "host-endpoint authorization list" — access is
governed by Comch pairing + the underlying RDMA permissions),
and validating the host-library + DPU-service paired contract
end-to-end before scaling a real HPC workload on top.
It is not for NVIDIA developers contributing to the DOCA
UROM Service itself, and it is not a programming guide for
building applications on top of DOCA libraries (that is
doca-programming-guide
plus the matching libs/<library> skill). DOCA UROM Service is
a service, not a library: the operator deploys a container
on the BlueField and configures it via the documented config
surface; they do not link lib<uromservice>.so to write their
own program. The paired host-side library
doca-urom is a separate
skill with its own scope and its own audience (HPC application
developers, not service operators); the agent must refuse to
collapse the library and the service into one another.
Path selection up front. Deploy this service when the HPC
cluster's host nodes use the doca-urom library and want host
CPU freed for compute by offloading collective communication
to the BlueField, when the team is building a custom HPC stack
on top of doca-urom, or when an upstream MPI / UCX stack has
been wired to use UROM as a transport. Do not deploy this
service when the hosts are not using doca-urom, when the HPC
stack is neither MPI nor UCX (this service won't help — it
executes UROM-shaped offloads, not arbitrary networking), or
when the BlueField hardware is too constrained for the
intended offload (a cap-query at deploy time surfaces this
upfront, not after the service is running). Deploying the
service speculatively into an environment whose host workloads
will not actually offload through doca-urom adds operational
complexity without any agent-visible benefit.
When to load this skill
Load this skill when the user is doing hands-on DOCA UROM
Service deployment work on a BlueField where DOCA is already
installed. Concretely:
- Deciding whether DOCA UROM Service is the right answer for
the user's HPC environment (vs. keeping the host CPU on the
communication path with raw
doca-rdma or with no DPU
offload at all).
- Deploying the service container on BlueField Arm — pulling
the image per the public DOCA UROM Service Guide, setting the
daemon's CLI flags / env (
SERVICE_ARGS, UROM_PLUGIN_PATH)
and mounting the plugins/ directory, starting / stopping
the container under the BlueField container runtime per the
public Container Deployment Guide.
- Choosing the service's configuration axes — which UCX
components / collectives the service exposes (cap-bound to
what the BlueField generation supports), enqueue queue
depths for the offload path, and how the host's
doca-urom
library pairs to the service over DOCA Comch (access is
governed by that Comch pairing + the underlying RDMA
permissions — there is no service-side authorization list).
Pair only explicitly intended hosts and keep RDMA exports
and permissions to the minimum the workload requires;
pre-start verification through the documented Comch and
RDMA read-only surfaces is mandatory.
- Confirming the host-library + DPU-service version pair is
one the DOCA Compatibility Policy supports — a mismatch is
the canonical subtle-failure mode for the paired contract.
- Reading the service container's logs, the service's
observability surface, and the underlying RDMA substrate
counters to confirm the service is actually executing the
operations the host enqueued.
- Debugging a deployment where the container is healthy but
the host's
doca-urom enqueues fail or never complete, or
where the offload's performance is worse than the host-CPU
baseline.
Do not load this skill for general DOCA orientation,
install of DOCA itself, host-side doca-urom library API
questions, or non-UROM HPC stack topics. For those, route via
doca-public-knowledge-map,
doca-setup, or the matching
host-side library skill
doca-urom.
What this skill provides
This is a thin loader. Substantive material lives in two
companion files:
CAPABILITIES.md — the service's architecture (long-running
container on BlueField Arm that executes UROM offloads from
paired hosts), the publisher / executor paired-contract
model and its load-bearing version-coupling rule, the
configuration axes (UCX-component / collective surface,
enqueue queue sizing, DOCA Comch endpoint pairing), the deployment
shape (container on BlueField Arm per the public Container
Deployment Guide), the pairing surface (host doca-urom
library + underlying doca-rdma transport substrate), the
observability surface (container state + service logs + RDMA
counters), the error taxonomy (container-runtime vs
service-side-resource vs
transport-substrate vs paired-version-mismatch), and the
safety policy (path-selection rule, version-contract rule,
smoke-before-scale).
TASKS.md — step-by-step workflows for the in-scope service
verbs: configure, build, modify, run, test,
debug, plus a Deferred task verbs block routing
out-of-scope questions and a Command appendix of recurring
commands.
The skill assumes a BlueField where DOCA is already installed
and the operator has the privileges the public DOCA UROM
Service Guide expects to pull, run, and configure containers
on BlueField Arm. It does not cover installing DOCA — that path
goes through doca-setup. It does
not cover the host-side doca-urom library API — that is
doca-urom.
What this skill deliberately does not ship
This skill is agent guidance, not a templates or
sample-config bundle. To keep the boundary clean, it
deliberately does not contain — and pull requests should not
add:
- Pre-baked DOCA UROM Service flag / env bundles
(full UCX-component / collective exposure manifests,
ready-to-run queue-depth
SERVICE_ARGS strings) intended
to be copy-pasted into
production. Service configuration is deployment-specific
(per the BlueField
generation's capability cap, per the workload's collective
pattern); the safe answer for an external operator is to
derive the daemon's flags / env from the public DOCA UROM
Service Guide against their own deployment. The agent's job is to
prescribe the procedure and the configuration-axes
decision, not to ship a config the user might run
unmodified.
- Container image names, tags, or registry paths. The
authoritative image source is the public DOCA UROM Service
Guide reachable through
doca-public-knowledge-map ## DOCA services;
the service's image tag is version-bound and changes
between DOCA releases AND must match the host-side library
version per the paired-contract rule. Inventing or
memorizing a tag is the canonical hallucination failure
mode for a service skill, and for this service in
particular it can silently produce a host-library / service
version mismatch.
- Host-side
doca-urom application source code, build
manifests, or MPI / UCX integration glue. Those live on
the host and belong to
doca-urom (host library
API) or to upstream MPI / UCX documentation (stack-side
integration). This skill names that the host side must
be wired through doca-urom and that the version must
pair with the service; the host-side bodies are out of
scope.
- A
samples/, templates/, or reference/ subtree of
any kind. A mock or incomplete artifact in this skill's
tree, even one labeled "reference", is misleading:
operators will read it as production-ready, and for a
paired-contract service that risk is amplified because
"production-ready" implicitly claims a host-library
version pairing that the skill cannot guarantee for the
reader.
Loading order
- Read this
SKILL.md first to confirm the user's question
is in scope and that the DOCA UROM Service is the
right answer at all (vs. routing entirely to the host-side
library skill, or away from UROM if the workload doesn't
actually benefit from offload).
- For the service's deployment shape, the publisher /
executor paired-contract model, the configuration axes,
the host-library + RDMA-substrate pairing surface, the
error taxonomy, the observability surface, the
version-coupling rule, and the path-selection safety
policy, see CAPABILITIES.md.
- For step-by-step workflows — configure, build, modify,
run, test, debug — see TASKS.md.
Related skills
doca-urom — the paired
host-side library. Hosts link doca-urom to ENQUEUE remote
memory operations; this service EXECUTES them. The two
skills load together for any HPC offload deployment and they
do NOT collapse into one another: the library never executes
on its own; this service is never enqueued through by
itself. Mismatches between the library and the service are
the dominant subtle-failure mode for the paired contract.
doca-rdma — the underlying
RDMA transport substrate this service uses to actually move
bytes once a host enqueue lands on the DPU. The service does
NOT replace RDMA; it sits on top of it. A failing RDMA fabric
surfaces at the service as operations enqueued but never
complete and at the host as DOCA_ERROR_IO_FAILED; the fix
is on the substrate side, not in this service's config.
doca-public-knowledge-map
— the routing table to the public DOCA UROM Service Guide
and the rest of the public DOCA documentation set. The
service URL is listed under
## DOCA services.
doca-setup — env preparation
and install verification on the BlueField where the service
container will run, including the I have no install yet
path via the public NGC DOCA container. This skill assumes
its preconditions are satisfied on BlueField Arm.
doca-version — canonical
DOCA version-handling rules. This service's container tag is
version-bound AND its host-library pairing is version-bound;
this skill's ## Version compatibility cross-links the
four-way match rule and adds the host-library + DPU-service
paired-version overlay that is load-bearing for UROM.
doca-structured-tools-contract
— the bundle's structured-tools precedence rule (detect /
prefer / fall back / report). The Command appendix in
TASKS.md honors this contract.
doca-programming-guide
— general DOCA patterns. The DOCA UROM Service is
service-shaped not library-shaped, so the build / modify /
first-app pattern there does not apply directly, but the
cross-library debug discipline (env-before-program,
layer-before-config) remains useful when the service
reports an error that originated in the container runtime
or in a DOCA library it called.
doca-debug — the cross-cutting
debug ladder (install / version / build / link / runtime /
program / driver). Service-specific debug (container not
running, host-library / service version mismatch,
transport substrate down, offload
not actually helping) overlays on top of that ladder.
doca-dms and
doca-firefly — sibling service
skills. The agent reading these skills should see the same
service-skill shape (container on BlueField Arm, public
Container Deployment Guide as the canonical recipe, env
preconditions checked first, configured via the documented
per-service surface — for UROM that is the daemon's CLI flags
/ env, not a mounted config file — smoke-before-scale)
layered on top of a different
per-service problem domain (DMS = device management via
gNMI / gNOI; Firefly = time synchronization via PTP;
UROM Service = HPC remote memory operation execution via
the paired doca-urom library).
1---2name: doca-urom-svc3description: Operate the DOCA UROM Service container on BlueField Arm for remote memory operations (puts, gets, atomics, collectives) enqueued by a paired host using `doca-urom`: pull the NGC image, choose the UCX component, size queues, configure Comch pairing, and align host and service versions. SECURITY: the service has no standalone access control; Comch pairing and RDMA permissions are the boundary. Pair only intended hosts, expose least-privilege memory regions, and verify both views before start. Trigger for slow UCX collectives, unexpected NOT_PERMITTED, or missing completions. Do not use for host application code, MPI/UCX integration design, or DOCA install.4license: Apache-2.05---67# DOCA UROM Service89**Where to start:** This skill is for *operating the DOCA UROM10Service container* on the BlueField Arm side. It is *not* for11*linking against* a library, and it is *not* the host-side12enqueue surface. If the user wants to *deploy* or *run* the13service container, open [`TASKS.md`](TASKS.md) and start at14[`## configure`](TASKS.md#configure). If the question is *what15shape of service is DOCA UROM Service, what does it execute, and16how does it pair with the host-side library*, start at17[`CAPABILITIES.md`](CAPABILITIES.md). If DOCA is not installed18on the BlueField yet, route to19[`doca-setup`](../../doca-setup/SKILL.md) first. If the user's20real question is about *writing host-side code that enqueues21remote memory operations through the paired API*, the right22skill is [`doca-urom`](../../libs/doca-urom/SKILL.md) — the23host-side library; this service is the DPU-side executor that24library offloads to.2526## Example questions this skill answers well2728The CLASSES of DOCA UROM Service questions this skill is built29to answer, each with one worked example. The class is the30load-bearing piece; the worked example is one instance.3132- **"Is DOCA UROM Service the right thing to deploy on my33 BlueField, or do I just need the host library?"** — worked34 example: *"my MPI cluster's host nodes link against35 `doca-urom`; what runs on the BlueField side and why must it36 also be there?"*. Answered by the publisher / executor37 paired-contract model in38 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)39 + the deploy-this-when path-selection rule in40 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)41 + the env-prep checklist in42 [`TASKS.md ## configure`](TASKS.md#configure).43- **"Which library / service version pair am I supposed to44 run together?"** — worked example: *"the host fleet upgraded45 to a newer `doca-urom`; do I have to upgrade the service46 containers on every BlueField, or is the pairing flexible?"*.47 Answered by the version-contract overlay in48 [`CAPABILITIES.md ## Version compatibility`](CAPABILITIES.md#version-compatibility)49 + the paired-version step in50 [`TASKS.md ## configure`](TASKS.md#configure) +51 [`doca-version`](../../doca-version/SKILL.md) as the canonical52 body.53- **"What does the service configure — UCX components,54 collectives, queue depths, how the host pairs over Comch?"** — worked55 example: *"my upstream stack wants to offload all-reduce56 collectives; how do I tell the service to expose that57 collective family and how does the host pair to it over DOCA58 Comch?"*. Answered by the configuration-axes table in59 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)60 + the config-authoring step in61 [`TASKS.md ## configure`](TASKS.md#configure).62- **"Host's `doca-urom` calls fail with `NOT_PERMITTED` even63 though `doca_dev` access is fine — is this the service?"** —64 worked example: *"first enqueue from host returns65 `DOCA_ERROR_NOT_PERMITTED` after a clean `doca_ctx_start()`"*.66 Answered by the Comch-pairing / RDMA-permissions layer in67 [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy)68 + the layered ladder in69 [`TASKS.md ## debug`](TASKS.md#debug), which surfaces *"is70 the DOCA Comch endpoint pair correctly established and is the71 underlying RDMA permission stack happy"* BEFORE blaming a72 service-side authz layer (no such layer exists in the shipped73 binary — `NOT_PERMITTED` here is a Comch / RDMA signal, not a74 UROM-service authz signal).75- **"Operations enqueue but never complete — service or76 substrate?"** — worked example: *"host enqueue succeeds, the77 progress engine never sees the completion, what layer is78 hung"*. Answered by the service-vs-substrate split in79 [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy)80 + the layered ladder in81 [`TASKS.md ## debug`](TASKS.md#debug), which separates82 *service queue full / handler stuck* from *underlying RDMA83 transport down* before recommending a fix on either side.84- **"Performance with offload is worse than the host-CPU85 baseline — is the service the bottleneck?"** — worked86 example: *"we deployed the service, the workload runs, but87 collectives are slower than when the host CPU posted them88 itself"*. Answered by the offload-isn't-free rule in89 [`CAPABILITIES.md ## Safety policy`](CAPABILITIES.md#safety-policy)90 + the smoke-before-scale step in91 [`TASKS.md ## test`](TASKS.md#test), which surfaces *the92 workload's pattern may not actually benefit from DPU offload*93 as a legitimate diagnosis, not a service bug.9495## Audience9697This skill serves **external operators and platform teams who98deploy and operate the DOCA UROM Service container** on99BlueField to receive and execute the remote memory operations100HPC / UCX / MPI workloads on the host enqueue through101`doca-urom`. Concretely: people running the service container102on BlueField Arm, choosing which UCX components and collectives103it exposes, sizing the enqueue queue depth, wiring the DOCA104Comch endpoint pairing between host `doca-urom` and the105service container (the shipped binary has NO standalone106service-side "host-endpoint authorization list" — access is107governed by Comch pairing + the underlying RDMA permissions),108and validating the host-library + DPU-service paired contract109end-to-end before scaling a real HPC workload on top.110111It is **not** for NVIDIA developers contributing to the DOCA112UROM Service itself, and it is **not** a programming guide for113*building applications on top of* DOCA libraries (that is114[`doca-programming-guide`](../../doca-programming-guide/SKILL.md)115plus the matching `libs/<library>` skill). DOCA UROM Service is116a **service**, not a library: the operator deploys a container117on the BlueField and configures it via the documented config118surface; they do not link `lib<uromservice>.so` to write their119own program. The paired host-side library120[`doca-urom`](../../libs/doca-urom/SKILL.md) is a separate121skill with its own scope and its own audience (HPC application122developers, not service operators); the agent must refuse to123collapse the library and the service into one another.124125**Path selection up front.** Deploy this service when the HPC126cluster's host nodes use the `doca-urom` library and want host127CPU freed for compute by offloading collective communication128to the BlueField, when the team is building a custom HPC stack129on top of `doca-urom`, or when an upstream MPI / UCX stack has130been wired to use UROM as a transport. Do **not** deploy this131service when the hosts are not using `doca-urom`, when the HPC132stack is neither MPI nor UCX (this service won't help — it133executes UROM-shaped offloads, not arbitrary networking), or134when the BlueField hardware is too constrained for the135intended offload (a cap-query at deploy time surfaces this136upfront, not after the service is running). Deploying the137service speculatively into an environment whose host workloads138will not actually offload through `doca-urom` adds operational139complexity without any agent-visible benefit.140141## When to load this skill142143Load this skill when the user is doing **hands-on DOCA UROM144Service deployment work** on a BlueField where DOCA is already145installed. Concretely:146147- Deciding *whether* DOCA UROM Service is the right answer for148 the user's HPC environment (vs. keeping the host CPU on the149 communication path with raw `doca-rdma` or with no DPU150 offload at all).151- Deploying the service container on BlueField Arm — pulling152 the image per the public DOCA UROM Service Guide, setting the153 daemon's CLI flags / env (`SERVICE_ARGS`, `UROM_PLUGIN_PATH`)154 and mounting the `plugins/` directory, starting / stopping155 the container under the BlueField container runtime per the156 public Container Deployment Guide.157- Choosing the service's configuration axes — which UCX158 components / collectives the service exposes (cap-bound to159 what the BlueField generation supports), enqueue queue160 depths for the offload path, and how the host's `doca-urom`161 library pairs to the service over DOCA Comch (access is162 governed by that Comch pairing + the underlying RDMA163 permissions — there is no service-side authorization list).164 Pair only explicitly intended hosts and keep RDMA exports165 and permissions to the minimum the workload requires;166 pre-start verification through the documented Comch and167 RDMA read-only surfaces is mandatory.168- Confirming the host-library + DPU-service version pair is169 one the DOCA Compatibility Policy supports — a mismatch is170 the canonical subtle-failure mode for the paired contract.171- Reading the service container's logs, the service's172 observability surface, and the underlying RDMA substrate173 counters to confirm the service is actually executing the174 operations the host enqueued.175- Debugging a deployment where the container is healthy but176 the host's `doca-urom` enqueues fail or never complete, or177 where the offload's performance is worse than the host-CPU178 baseline.179180Do **not** load this skill for general DOCA orientation,181install of DOCA itself, host-side `doca-urom` library API182questions, or non-UROM HPC stack topics. For those, route via183[`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md),184[`doca-setup`](../../doca-setup/SKILL.md), or the matching185host-side library skill186[`doca-urom`](../../libs/doca-urom/SKILL.md).187188## What this skill provides189190This is a **thin loader**. Substantive material lives in two191companion files:192193- `CAPABILITIES.md` — the service's architecture (long-running194 container on BlueField Arm that executes UROM offloads from195 paired hosts), the publisher / executor paired-contract196 model and its load-bearing version-coupling rule, the197 configuration axes (UCX-component / collective surface,198 enqueue queue sizing, DOCA Comch endpoint pairing), the deployment199 shape (container on BlueField Arm per the public Container200 Deployment Guide), the pairing surface (host `doca-urom`201 library + underlying `doca-rdma` transport substrate), the202 observability surface (container state + service logs + RDMA203 counters), the error taxonomy (container-runtime vs204 service-side-resource vs205 transport-substrate vs paired-version-mismatch), and the206 safety policy (path-selection rule, version-contract rule,207 smoke-before-scale).208- `TASKS.md` — step-by-step workflows for the in-scope service209 verbs: `configure`, `build`, `modify`, `run`, `test`,210 `debug`, plus a `Deferred task verbs` block routing211 out-of-scope questions and a `Command appendix` of recurring212 commands.213214The skill assumes a BlueField where DOCA is already installed215and the operator has the privileges the public DOCA UROM216Service Guide expects to pull, run, and configure containers217on BlueField Arm. It does not cover installing DOCA — that path218goes through [`doca-setup`](../../doca-setup/SKILL.md). It does219not cover the host-side `doca-urom` library API — that is220[`doca-urom`](../../libs/doca-urom/SKILL.md).221222## What this skill deliberately does not ship223224This skill is **agent guidance**, not a templates or225sample-config bundle. To keep the boundary clean, it226deliberately does not contain — and pull requests should not227add:228229- **Pre-baked DOCA UROM Service flag / env bundles**230 (full UCX-component / collective exposure manifests,231 ready-to-run queue-depth `SERVICE_ARGS` strings) intended232 to be copy-pasted into233 production. Service configuration is deployment-specific234 (per the BlueField235 generation's capability cap, per the workload's collective236 pattern); the safe answer for an external operator is to237 derive the daemon's flags / env from the public DOCA UROM238 Service Guide against their own deployment. The agent's job is to239 prescribe the *procedure* and the *configuration-axes240 decision*, not to ship a config the user might run241 unmodified.242- **Container image names, tags, or registry paths.** The243 authoritative image source is the public DOCA UROM Service244 Guide reachable through245 [`doca-public-knowledge-map ## DOCA services`](../../doca-public-knowledge-map/SKILL.md#doca-services);246 the service's image tag is version-bound and changes247 between DOCA releases AND must match the host-side library248 version per the paired-contract rule. Inventing or249 memorizing a tag is the canonical hallucination failure250 mode for a service skill, and for this service in251 particular it can silently produce a host-library / service252 version mismatch.253- **Host-side `doca-urom` application source code, build254 manifests, or MPI / UCX integration glue.** Those live on255 the host and belong to256 [`doca-urom`](../../libs/doca-urom/SKILL.md) (host library257 API) or to upstream MPI / UCX documentation (stack-side258 integration). This skill names *that* the host side must259 be wired through `doca-urom` and *that* the version must260 pair with the service; the host-side bodies are out of261 scope.262- **A `samples/`, `templates/`, or `reference/` subtree** of263 any kind. A mock or incomplete artifact in this skill's264 tree, even one labeled *"reference"*, is misleading:265 operators will read it as production-ready, and for a266 paired-contract service that risk is amplified because267 *"production-ready"* implicitly claims a host-library268 version pairing that the skill cannot guarantee for the269 reader.270271## Loading order2722731. Read this `SKILL.md` first to confirm the user's question274 is in scope **and** that the DOCA UROM Service is the275 right answer at all (vs. routing entirely to the host-side276 library skill, or away from UROM if the workload doesn't277 actually benefit from offload).2782. **For the service's deployment shape, the publisher /279 executor paired-contract model, the configuration axes,280 the host-library + RDMA-substrate pairing surface, the281 error taxonomy, the observability surface, the282 version-coupling rule, and the path-selection safety283 policy, see [CAPABILITIES.md](CAPABILITIES.md).**2843. **For step-by-step workflows — configure, build, modify,285 run, test, debug — see [TASKS.md](TASKS.md).**286287## Related skills288289- [`doca-urom`](../../libs/doca-urom/SKILL.md) — the paired290 host-side library. Hosts link `doca-urom` to ENQUEUE remote291 memory operations; this service EXECUTES them. The two292 skills load together for any HPC offload deployment and they293 do NOT collapse into one another: the library never executes294 on its own; this service is never enqueued through by295 itself. Mismatches between the library and the service are296 the dominant subtle-failure mode for the paired contract.297- [`doca-rdma`](../../libs/doca-rdma/SKILL.md) — the underlying298 RDMA transport substrate this service uses to actually move299 bytes once a host enqueue lands on the DPU. The service does300 NOT replace RDMA; it sits on top of it. A failing RDMA fabric301 surfaces at the service as *operations enqueued but never302 complete* and at the host as `DOCA_ERROR_IO_FAILED`; the fix303 is on the substrate side, not in this service's config.304- [`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md)305 — the routing table to the public DOCA UROM Service Guide306 and the rest of the public DOCA documentation set. The307 service URL is listed under308 [`## DOCA services`](../../doca-public-knowledge-map/SKILL.md#doca-services).309- [`doca-setup`](../../doca-setup/SKILL.md) — env preparation310 and install verification on the BlueField where the service311 container will run, including the *I have no install yet*312 path via the public NGC DOCA container. This skill assumes313 its preconditions are satisfied on BlueField Arm.314- [`doca-version`](../../doca-version/SKILL.md) — canonical315 DOCA version-handling rules. This service's container tag is316 version-bound AND its host-library pairing is version-bound;317 this skill's `## Version compatibility` cross-links the318 four-way match rule and adds the host-library + DPU-service319 paired-version overlay that is load-bearing for UROM.320- [`doca-structured-tools-contract`](../../doca-structured-tools-contract/SKILL.md)321 — the bundle's structured-tools precedence rule (detect /322 prefer / fall back / report). The Command appendix in323 [TASKS.md](TASKS.md) honors this contract.324- [`doca-programming-guide`](../../doca-programming-guide/SKILL.md)325 — general DOCA patterns. The DOCA UROM Service is326 service-shaped not library-shaped, so the build / modify /327 first-app pattern there does not apply directly, but the328 cross-library debug discipline (env-before-program,329 layer-before-config) remains useful when the service330 reports an error that originated in the container runtime331 or in a DOCA library it called.332- [`doca-debug`](../../doca-debug/SKILL.md) — the cross-cutting333 debug ladder (install / version / build / link / runtime /334 program / driver). Service-specific debug (container not335 running, host-library / service version mismatch,336 transport substrate down, offload337 not actually helping) overlays on top of that ladder.338- [`doca-dms`](../doca-dms/SKILL.md) and339 [`doca-firefly`](../doca-firefly/SKILL.md) — sibling service340 skills. The agent reading these skills should see the same341 service-skill shape (container on BlueField Arm, public342 Container Deployment Guide as the canonical recipe, env343 preconditions checked first, configured via the documented344 per-service surface — for UROM that is the daemon's CLI flags345 / env, not a mounted config file — smoke-before-scale)346 layered on top of a different347 per-service problem domain (DMS = device management via348 gNMI / gNOI; Firefly = time synchronization via PTP;349 UROM Service = HPC remote memory operation execution via350 the paired `doca-urom` library).