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://mp-staging.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
BENCHMARK.md
Skill Benchmark: nemo-relay-plugin-observability
✅ Overall verdict: PASS — Recommended for publication
Publication Recommendation
Recommended for publication based on the completed evaluation evidence in this report.
Evaluation Metadata
Skill:
nemo-relay-plugin-observabilityEvaluation date: 2026-07-30
Evaluator version:
0.9.2Agents: Claude Code (
aws/anthropic/bedrock-claude-opus-4-8), Codex (openai/openai/gpt-5.5)Tasks: 20 evaluation tasks (16 positive, 4 negative)
Dataset digest:
sha256:f399331a28e80f4e118ccf4bfb6f71b126c0d88cd1103bf84c6126b50eb54d8a(skill-evaluator-dataset-snapshot/1)Attempts per task: 1
Environment:
k8s-sandboxTier 3 evidence: required for publication
Each task attempt ran in its own isolated sandbox pod.
What This Report Answers
The three-tier evaluation checks whether the skill:
is safe to use;
produces correct answers;
is discovered and activated when needed;
helps the agent complete the user's goal and expected workflow; and
avoids wasted skill and tool usage.
Results at a Glance
| Measure | Claude Code (Baseline → Skill Uplift) | Codex (Baseline → Skill Uplift) |
|---|---|---|
| Overall | 53% → 95% (+42 points) | 66% → 92% (+26 points) |
| Security | 100% → 100% (±0 points) | 100% → 95% (-5 points) |
| Correctness | 36% → 100% (+64 points) | 78% → 90% (+12 points) |
| Discoverability | 52% → 100% (+48 points) | 61% → 94% (+33 points) |
| Effectiveness | 38% → 89% (+50 points) | 61% → 87% (+27 points) |
| Efficiency | 39% → 88% (+50 points) | 28% → 92% (+63 points) |
How to read this table: baseline is the same task attempted without the target skill. Uplift is skill score - baseline score, shown in percentage points.
Example: 47% → 92% (+45 points) means the skill-assisted run scored 92%, 45 percentage points above its 47% no-skill baseline.
Tier Status
| Tier | Purpose | Status | Evidence |
|---|---|---|---|
| Tier 1 | Static validation | PASSED WITH OBSERVATIONS | 1 validator(s); 3 finding(s) |
| Tier 2 | Semantic deduplication | NOT RUN | No result was recorded |
| Tier 3 | Live agent evaluation | PASS | 2 agent(s); 20 task(s) |
Findings and Observations
<details> <summary>Show detailed findings and successful checks</summary>
MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Instructions' (
skills/nemo-relay-plugin-observability/SKILL.md)MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Examples' (
skills/nemo-relay-plugin-observability/SKILL.md)LOW SCHEMA/author_format: Author must be of the form 'Name <email@host>' (
skills/nemo-relay-plugin-observability/SKILL.md)
</details>
Scoring Methodology
<details> <summary>Show dimension definitions, source signals, and thresholds</summary>
| Dimension | Question | Scored signals |
|---|---|---|
| Security | Is it safe to use? | security (100%) |
| Correctness | Is the answer correct? | accuracy (100%) |
| Discoverability | Was the right skill loaded when needed? | skill_execution (100%) |
| Effectiveness | Did the skill help complete the task? | goal_accuracy (50%) + behavior_check (50%) |
| Efficiency | Did it avoid wasted tool or skill usage? | skill_efficiency (100%) |
Dimension bands: PASS at 50% or above; NEUTRAL from 40% to below 50%; FAIL below 40%.
Overall Tier 3 lift: PASS at +5 points or more; FAIL at -10 points or less; values between those bands are NEUTRAL.
Overall verdict: PASS only when every configured dimension passes for at least one supported agent. Lift is reported as diagnostic evidence and does not override this gate.
The 50% attempt pass threshold is a separate per-task gate; it is not the dimension pass threshold.
Effectiveness is the equal-weight mean of goal completion (
goal_accuracy) and expected workflow adherence (behavior_check).Token efficiency is a separate report-only signal. It does not change a dimension score or the overall verdict.
Signals present in this run:
security(Security): unsafe operations, secret leakage, and unauthorized access.skill_execution(Skill Execution): whether the expected skill was found and executed.skill_efficiency(Efficiency): routing quality, workspace-aware skill reads, and productive tool use.accuracy(Accuracy): final-answer correctness against the reference answer.goal_accuracy(Goal Accuracy): whether the user's goal was achieved.behavior_check(Behavior Check): whether the expected workflow behavior was followed.
</details>
Freshness
Regenerate this benchmark when the skill, evaluation dataset, target agent/model, evaluator version, environment, or scoring policy changes.
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