Nemo Relay Plugin Observability
NVIDIAOfficialCreated by NVIDIA Corporation and Affiliates
- Skill
- Tool integration
- Cloud and DevOps
- Apache-2.0
- Medium risk
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides guidance on configuring observability for NeMo Relay 0.6 and 0.7. It covers the setup of built-in plugins, subscribers, and exporters to capture the canonical event stream. Users can choose between raw ATOF JSONL events for debugging, ATIF trajectories for execution analysis, or OTLP-based tracing via OpenTelemetry and OpenInference. The skill details the lifecycle management of these components, including registration, flushing, and shutdown procedures, while emphasizing version-specific configuration requirements.
What it does
- Configures built-in observability plugins for NeMo Relay 0.6 and 0.7.
- Supports raw ATOF event export for local debugging and offline inspection.
- Enables ATIF trajectory generation for structured execution analysis.
- Integrates OpenTelemetry and OpenInference for OTLP tracing.
- Manages subscriber and exporter lifecycles for custom event handling.
- Provides version-specific guidance for observability configuration schemas.
When to use it
- When you need to monitor or debug the execution flow of a NeMo Relay application.
- When you need to export execution traces to external observability platforms.
- When you are setting up local logging for raw lifecycle events.
- When you need to capture structured agent trajectories for evaluation.
- When you need to configure custom telemetry sinks for specific process requirements.
Advantages
- Standardized approach to event capture across different Relay versions.
- Flexible output options ranging from raw logs to structured traces.
- Supports both plugin-managed and manual API-driven observability.
- Ensures consistent event stream handling for logging, analytics, and diagnostics.
Usage examples
- “How do I configure ATOF event logging for NeMo Relay 0.7?”
- The agent will provide the TOML configuration structure using version 3 observability settings, specifying the file or stream sinks required for ATOF output.
- “Show me how to register an AtifExporter in Python.”
- The agent will provide a code snippet demonstrating the creation, registration, and lifecycle management of an AtifExporter for capturing execution trajectories.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/nvidia/nemo-relay-plugin-observability/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip nemo-relay-plugin-observability.zip -d .agents/skills
Documentation by NVIDIA Corporation and Affiliates
Configure Observability Plugins
Start with one exporter managed by the built-in Observability plugin. This is the default for reusable process configuration and the best first plugin for most users because it makes Relay's captured activity visible. Choose one proof output before layering additional telemetry destinations.
Use manual subscriber or exporter APIs only when a test, script, or application needs direct control over registration names, collection windows, or flush timing. Both paths consume the same canonical event stream.
Select The Relay Version
Determine whether the application uses NeMo Relay 0.6 or 0.7 before proposing configuration or binding APIs. Prefer the installed package version, lockfile, or manifest. Ask the user when the version cannot be established; do not mix the two surfaces in one example.
0.6 uses observability configuration version 2. OpenTelemetry and OpenInference are separate exporters with
OpenTelemetryConfig/OpenTelemetrySubscriberandOpenInferenceConfig/OpenInferenceSubscriber.0.7 uses observability configuration version 3. One typed OpenTelemetry exporter provides
full,gen_ai, andopeninferenceprojections.
Choose The Output
Select the output that best matches the user's immediate inspection target:
Console or custom event handling Use a manual subscriber for short-lived in-process inspection.
Raw canonical lifecycle events Use ATOF JSONL; read
references/atof.md.Portable execution trajectories Use ATIF; read
references/atif.md.OTLP tracing For 0.6, choose the separate OpenTelemetry or OpenInference exporter. For 0.7, choose a typed OpenTelemetry endpoint (
full,gen_ai, oropeninference). Readreferences/opentelemetry.mdand, for an OpenInference-aware backend,references/openinference.md.
Choose one output first and verify it before adding another. ATOF is the default local proof because it preserves the raw event stream with the least translation. Use synthetic, non-sensitive payloads for the first proof. Add and verify sanitization before exporters receive production payloads, and never display complete event records while validating an exporter.
Embedded Event And Subscriber Model
Use this model when explaining how capture and export relate:
NeMo Relay emits one canonical event stream from scopes, marks, managed tool calls, managed LLM calls, middleware, and manual lifecycle APIs.
Subscribers consume events without defining the event model. Multiple subscribers can observe the same stream for logging, export, analytics, or diagnostics.
Global subscribers remain active process-wide until removed.
Scope-local subscribers are owned by one active scope and disappear when that scope closes.
Plugin-installed subscribers are reusable, configuration-driven runtime components.
Exporter-oriented subscribers preserve raw ATOF or translate the event stream into ATIF or the version-appropriate OpenTelemetry/OpenInference form.
Event payloads reflect sanitized post-guardrail input and output when calls use managed helpers or manual lifecycle params provide those fields.
LLM annotations follow the freshness rules:
Each owning agent scope starts fresh, and a
compactionmark refreshes it.The first subsequent LLM start retains complete annotation history. Later starts retain system instructions, the latest user message, and every following assistant or tool message.
When a request codec supplies an annotation, Relay applies the same event-only projection to provider-shaped event input without changing provider execution.
Event fields include semantic input/output through the ATOF
datafield, typed profile data such asmodel_nameandtool_call_id, and codec-provided annotated LLM request/response data for in-process subscribers and exporters.First-class skill tools and the requests to read a complete
SKILL.mdautomatically emitskill.loadmarks under the tool span. The payload contains onlyskill_name; metadata records the load source and tool name. Partial reads do not count, and ambiguous slash-command expansions use the separateskill.load.inferredname. The eager mark remains present if tool execution later fails.
Shared Lifecycle
Create the exporter or subscriber.
Register it with a unique name before the relevant scoped work.
Run NeMo Relay-instrumented work inside scopes.
Flush and deregister in the exporter-specific reference's documented order.
Shut it down when the process or subsystem is done.
Binding Names
Use the names exported by the selected language binding and Relay version:
Python 0.6:
nemo_relay.subscribers.register(...),AtofExporter,AtifExporter,OpenTelemetrySubscriber, andOpenInferenceSubscriberPython 0.7: the same registration and file exporters, plus
OpenTelemetrySubscriberfor all three typed projectionsNode.js follows the same 0.6/0.7 split through its root exports
Rust:
nemo_relay::api::subscriberandnemo_relay::observability::*Go: source-first wrappers expose equivalent register, exporter, and subscriber lifecycle methods
Load A Reference When
Load only the reference required by the selected output:
Load
references/atof.mdfor raw JSONL events used in local debugging or offline inspection.Load
references/atif.mdfor ATIF trajectories.Load
references/opentelemetry.mdfor OTLP/OpenTelemetry traces.Load
references/openinference.mdfor the standalone 0.6 OpenInference exporter or the 0.7openinferenceOpenTelemetry projection.
Use Another Skill When
Choose another skill when the task belongs to an adjacent workflow:
Use
nemo-relay-plugin-buildto package subscriber-based export behavior as a reusable plugin.Use
nemo-relay-get-startedornemo-relay-instrument-callswhen no scope, tool call, or LLM call has been instrumented.Use
nemo-relay-debug-runtime-integrationto diagnose missing telemetry.
Related Skills
Use these skills for adjacent workflows:
Instrument application calls with
nemo-relay-instrument-calls.Add typed wrappers with
nemo-relay-instrument-typed-wrappers.Package reusable behavior with
nemo-relay-plugin-build.Diagnose missing events with
nemo-relay-debug-runtime-integration.
Files
- ATTRIBUTION.mdAdded by AutoGineer978 B
- BENCHMARK.md4.7 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md6.6 KiB
- evals/evals.json27.1 KiB
- references/atif.md3.9 KiB
- references/atof.md2.6 KiB
- references/openinference.md4.1 KiB
- references/opentelemetry.md5.1 KiB
- skill-card.md4.2 KiB
- skill.oms.sig5.4 KiB
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.
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 Corporation and Affiliates
- Publisher
- NVIDIA (Official)
- Source
- NVIDIA/skills · skills/nemo-relay-plugin-observability · 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 Corporation and Affiliates or NVIDIA.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download nemo-relay-plugin-observability.zip