Use the Remote Agent Adapter
Use the nvidia.fabric.remote-agent adapter to call an agent service over HTTP
or HTTPS. The service can implement OpenAI Responses, OpenAI Chat Completions,
or Anthropic Messages.
Install the Adapter
Install the runtime and adapter together:
To install the adapter without the runtime, use:
The bare, harness, and full installations contain the same adapter and HTTP
client. They do not install the independently deployed remote service.
Configure the Adapter
Set the remote API root, including its /v1 path, in HarnessConfig.settings.
api_type defaults to openai-responses.
Supported api_type values are openai-responses, openai-completions, and
anthropic-messages. Planning rejects unknown settings and values outside this
set.
The adapter supports models, models.temperature, and replacement
instructions.system values. Set models.default.api_key_env when the service
requires a credential. The adapter sends it as a Bearer token for OpenAI APIs
and as x-api-key for Anthropic Messages. For Anthropic Messages, you can set
models.default.settings.max_tokens; when omitted, the adapter sends 4096.
The connect timeout defaults to 10 seconds, and the timeout between response
bytes defaults to 600 seconds.
Stream Relay Telemetry
The adapter supports Relay-backed Runtime.invoke_stream() when the remote
service already has NVIDIA NeMo Relay instrumentation. Configure Fabric to
connect to the independently managed collector that the remote deployment
publishes to:
Relay-backed streaming has two sides:
- Receiver (Fabric Runtime):
start_runtime(..., streaming=True, launch_collector=False)connects to the independently managed collector atcollector_url. The reservednemo-fabric-streamentry supplies the collector base URL. - Publisher (Remote Deployment): The independently started remote service owns its Relay installation. Its Relay stream sink posts NDJSON ATOF records to the collector. Fabric does not start or configure the remote Relay installation or its sink.
Both sides must use the same collector. The adapter does not send the collector
URL to the remote service. The Fabric sink uses the collector base URL. The
remote Relay sink publishes to <collector-base-url>/v1/atof. For correlation,
the adapter puts the Fabric request ID in metadata.nemo_fabric_request_id in
each mapped OpenAI or Anthropic request body. The remote endpoint must carry it
into its Relay turn correlation metadata. The adapter sends no correlation
headers.
The collector base URL must be reachable from the remote deployment. The externally managed collector must be running before the first invocation. Invocations on one runtime are serialized. Give every turn a unique request ID and fully consume or close each stream before invoking again.
Multiple Fabric runtimes can use invoke against the same remote agent, subject
to the remote service’s concurrency and session-isolation behavior. Multiple
runtimes can also use invoke_stream through the same collector when every
request ID is unique.
The adapter keeps the completed user/assistant transcript for ordered invocations within a runtime.
Limitations
The remote agent is configured and started independently of Fabric, so Fabric
cannot normalize or apply configuration that controls how the agent is
constructed. The adapter normalizes only models, models.temperature, and
replacement instructions.system settings. MCP, skills, tool policy, and
subagents can be configured by the remote deployment, but the adapter does not
expose them through FabricConfig.
capabilities.streaming remains false because that descriptor flag represents
adapter-native OpenAI Chat Completions chunks. The adapter still reduces native
OpenAI and Anthropic streams to a terminal result.