You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#### Overview
Clarify Relay's role across the NVIDIA NeMo ecosystem, agent frameworks, and observability systems.
- [x] I confirm this contribution is my own work, or I have the right to submit it under this project's license.
- [x] I searched existing issues and open pull requests, and this does not duplicate existing work.
#### Details
- Separate model development, inference serving, deployment, observability, and evaluation responsibilities.
- Link named NVIDIA systems to their authoritative documentation.
- Describe each system's role separately from how it connects to Relay.
- Add concrete OpenTelemetry observability and ATIF evaluation flows.
- Replace callback-heavy ownership details with plain framework-owned and Relay-received boundaries.
#### Where should the reviewer start?
Start with the ecosystem relationship table and the two export flows in `docs/about-nemo-relay/ecosystem.mdx`.
#### Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)
- Closes [RELAY-619](https://linear.app/nvidia/issue/RELAY-619/clarify-relays-place-in-the-nemo-ecosystem)
## Summary by CodeRabbit
* **Documentation**
* Updated the ecosystem overview with a clearer NeMo Relay systems overview and tooling relationships.
* Added explicit coverage for Rust, Python, Node.js, Go, and C FFI support.
* Clarified observability flows, including lifecycle events, OpenTelemetry/OpenInference export, OTLP collection, and ATIF evaluation.
* Reworked framework integration guidance with responsibilities, inputs, integration methods, and relevant documentation links.
Authors:
- Alex Fournier (https://github.com/afourniernv)
Approvers:
- https://github.com/lvojtku
URL: #701
| NeMo model, inference, and deployment components | Provide or serve the models an agent uses. | NeMo Relay records and controls LLM execution boundaries, but it does not train, host, or route model inference by itself. |
35
-
| NeMo Agent Toolkit and agent application frameworks | Build, run, profile, and optimize agent workflows across tools, data sources, and framework choices. | NeMo Relay can sit below these systems as the shared runtime contract for scopes, middleware, lifecycle events, subscribers, and plugins. |
36
-
| NeMo Guardrails and policy systems | Define safety, control, and compliance behavior for LLM applications. | NeMo Relay can host runtime guardrails and intercepts around managed tool and LLM calls, while higher-level guardrail systems can still own policy authoring and orchestration. |
37
-
| Application harnesses and workflow code | Decide the agent pattern, planner, memory, retries, scheduling, and user-facing behavior. | NeMo Relay instruments the execution boundaries that the harness already owns. |
38
-
| Observability and evaluation backends | Store traces, trajectories, metrics, and analysis data. | NeMo Relay emits lifecycle events and exports them to in-process subscribers, Agent Trajectory Observability Format (ATOF), Agent Trajectory Interchange Format (ATIF), typed OpenTelemetry projections including OpenInference-compatible traces, or other backends. |
33
+
|[NVIDIA NeMo Framework](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemotoolkit/index.html)| Build and customize generative AI models. | Applications can instrument calls to models produced with NeMo Framework. Relay does not train or customize the model. |
34
+
|[NVIDIA NIM for Large Language Models](https://docs.nvidia.com/nim/large-language-models/latest/introduction.html)| Serve LLM inference through production endpoints. | Relay can observe or control client requests to a NIM endpoint. Relay does not host the endpoint. |
35
+
|[NVIDIA Dynamo](https://docs.nvidia.com/dynamo)| Deploy and scale distributed inference services. | Applications can send Relay-managed model calls to a Dynamo-served endpoint. Relay does not schedule or operate the inference workers. |
36
+
|[NeMo Agent Toolkit](https://docs.nvidia.com/nemo/agent-toolkit/latest/) and agent application frameworks | Build, run, profile, and optimize agent workflows across tools, data sources, and framework choices. | A framework integration can give Relay tool or LLM callbacks to manage, or emit lifecycle events when the framework invokes the callbacks itself. |
37
+
|[NeMo Guardrails](https://docs.nvidia.com/nemo-guardrails/index.html) and policy systems | Define safety, control, and compliance behavior for LLM applications. | Relay can run configured guardrails and intercepts around managed tool and LLM calls while the policy system owns policy authoring. |
38
+
| Application harnesses and workflow code | Decide the agent pattern, planner, memory, retries, scheduling, and user-facing behavior. | NeMo Relay instruments the tool and model calls that the harness already invokes. |
39
+
| Observability backends | Store and query traces, logs, and metrics. | Relay exporters can project lifecycle events into OpenTelemetry or OpenInference-compatible traces and send them through an OTLP pipeline. |
40
+
| Trajectory and evaluation systems | Replay or evaluate completed agent runs. | Relay can project lifecycle events into Agent Trajectory Interchange Format (ATIF) artifacts for offline analysis, replay, or evaluation. |
39
41
40
42
In practical terms, NeMo Relay answers a different question than higher-level
41
43
agent products. A framework asks, "What should the agent do next?" NeMo Relay
@@ -44,91 +46,100 @@ what events are emitted, and which subscribers can consume the result?"
44
46
45
47
## How NeMo Relay Relates to Other Tooling
46
48
47
-
NeMo Relay is an execution-time runtime contract. It captures work at the
48
-
scope, tool, and LLM boundaries, and can apply middleware before or around that
49
-
work. Telemetry conventions and observability or evaluation products serve
49
+
NeMo Relay runs alongside application code while the agent is executing. It
50
+
captures scope, tool, and LLM activity and can apply middleware before or around
51
+
that work. Telemetry conventions and observability or evaluation products serve
50
52
different roles and can be used alongside Relay.
51
53
52
54
| Tooling | Primary Role | Relationship to NeMo Relay |
53
55
|---|---|---|
54
-
| OpenTelemetry GenAI conventions | Define a common representation for AI telemetry. | Relay owns runtime capture and control, then can export its lifecycle events as generic OTLP spans for an existing OpenTelemetry tracing pipeline. |
55
-
| Langfuse, LangSmith, and Arize Phoenix| Store, explore, and evaluate traces and agent runs. | These products are outside Relay's execution control loop. Use Relay to establish consistent execution boundaries and event data, then send data through the configured subscriber or export path that fits your backend. |
56
+
|[OpenTelemetry GenAI conventions](https://opentelemetry.io/docs/specs/semconv/gen-ai/)| Define common attributes and span conventions for AI telemetry. | Relay captures and controls runtime activity, then can export lifecycle events through its typed OpenTelemetry projections. |
57
+
| Langfuse, LangSmith, Arize Phoenix, and other observability products | Storeand explore traces or agent runs. | These products do not run the agent's tool or model calls. They consume data from a configured export path. |
56
58
57
59
Relay is not a replacement for a telemetry standard or an observability backend.
58
60
Its role is to make the real execution path observable and controllable before
59
61
the resulting lifecycle data is stored, visualized, or evaluated elsewhere.
60
62
61
63
<MermaidStyles />
62
64
65
+
The following diagram shows how Relay connects application execution to
subgraph EvaluationFlow[Trajectory and Evaluation Flow]
85
+
ATIF[ATIF Exporter]
86
+
Evaluation[Replay or Evaluation System]
87
+
ATIF --> Evaluation
88
+
end
89
+
90
+
App --> Framework --> Relay
91
+
App -. direct instrumentation .-> Relay
77
92
Relay --> Provider
78
93
Policy --> Relay
79
-
Relay --> Obs
94
+
Relay --> Events
95
+
Events --> OTel
96
+
Events --> ATIF
80
97
81
98
class Framework yellow-lightest;
82
-
class Toolkit blue-lightest;
83
99
class Relay green-light;
84
100
class Provider purple-lightest;
85
-
class Obs grey-light;
86
101
class Policy green-lightest;
102
+
class Events blue-lightest;
103
+
class ObservabilityFlow,EvaluationFlow grey-lightest;
87
104
```
88
105
89
-
The dotted path matters. An application or custom harness can call NeMo Relay
90
-
directly without adopting a higher-level framework. A framework integration can
91
-
also call NeMo Relay on behalf of application code when the framework owns the
92
-
tool or provider boundary.
106
+
The dotted path shows that an application can call Relay directly without
107
+
adopting a higher-level framework. In the observability flow, Relay projects
108
+
events into traces and sends them through an OTLP collector. In the trajectory
109
+
flow, Relay writes ATIF artifacts for replay or evaluation.
93
110
94
-
## How NeMo Relay Fits Agent Frameworks And Harnesses
111
+
## How NeMo Relay Fits Agent Frameworks and Harnesses
95
112
96
113
The agent framework and harness landscape is intentionally mixed. A team might
97
114
use NeMo Agent Toolkit, LangChain, LangGraph, an internal orchestration layer, a
98
115
provider SDK, or direct application code. NeMo Relay is designed to meet those
99
-
systems at stable execution boundaries instead of requiring one framework shape.
116
+
systems at tool, model, and lifecycle hooks, so they do not need to use one
117
+
common API.
100
118
101
-
| Integration Point | Use NeMo Relay For | Keep In The Framework Or Harness |
102
-
|---|---|---|
103
-
| Request, run, workflow, or agent lifecycle hooks | Create scopes, emit scope start and end events, and isolate concurrent work. | Scheduling, routing, retry policy, planner choice, memory, and user session state. |
104
-
| Tool invocation callbacks | Run managed tool execution, apply tool middleware, emit tool lifecycle events, and preserve parent scope context. | Tool discovery, tool schema presentation, framework-specific callback signatures, and application-visible result handling. |
105
-
| LLM or provider adapter calls | Run managed LLM execution, attach model metadata, apply LLM middleware, handle stream lifecycle events, and emit normalized observability payloads. | Provider clients, authentication, transport, provider-native request objects, and provider-specific response types. |
106
-
| Framework internals that cannot hand over a callback | Use explicit lifecycle APIs, request-intercept helpers, guardrail helpers, or mark events. | The actual invocation path when the framework must retain control. |
107
-
| Cross-cutting behavior | Package middleware, subscribers, adaptive behavior, and reusable policy as plugins. | Framework configuration, agent definitions, deployment topology, and business logic. |
108
-
109
-
Prefer a managed execution wrapper when a framework exposes a stable callback
110
-
that NeMo Relay can own. Use explicit lifecycle calls or standalone helpers when
111
-
the framework owns the callback internally but exposes reliable start, finish, or
112
-
request transformation hooks.
119
+
The framework or harness continues to manage:
120
+
121
+
- Agent orchestration, planning, memory, retries, and scheduling.
122
+
- Tool discovery, schemas, and application-visible results.
123
+
- Provider clients, authentication, transport, and provider-native objects.
124
+
- Public callback signatures and framework-specific behavior.
113
125
114
-
This lets NeMo Relay provide consistent runtime semantics without forcing a
115
-
framework migration:
126
+
Relay can receive:
116
127
117
-
- Applications keep their existing agent orchestration model
118
-
- Framework adapters preserve public behavior and callback signatures
119
-
- Non-serializable provider objects stay in framework-owned storage
120
-
- NeMo Relay receives JSON-compatible payloads for middleware and events
121
-
- Subscribers see a consistent scope, tool, and LLM event stream across integrations
128
+
- The scope and parent for work that should be observed.
129
+
- A tool or LLM function when Relay can invoke it through managed execution.
130
+
- Start and end lifecycle notifications when the framework invokes the function.
131
+
- JSON-compatible observability payloads and metadata for events and middleware.
122
132
123
-
## Related Topics
133
+
Prefer a managed execution wrapper when a framework lets NeMo Relay invoke the
134
+
tool or LLM function. Use explicit lifecycle calls or standalone helpers when
135
+
the framework invokes the function but exposes reliable start, finish, or
136
+
request transformation hooks.
124
137
125
-
Use these links to continue into adjacent concepts and workflows.
138
+
This arrangement lets subscribers see a consistent scope, tool, and LLM event
139
+
stream without changing the framework's public behavior.
0 commit comments