Skip to content

feat(nemo-agents): validate fabric relay telemetry - #928

Merged
mmogallapalli merged 7 commits into
mainfrom
mmogallapall/aircore-902-configure-relay-telemetry-emission-for-fabric-backed-nemo
Jul 29, 2026
Merged

feat(nemo-agents): validate fabric relay telemetry#928
mmogallapalli merged 7 commits into
mainfrom
mmogallapall/aircore-902-configure-relay-telemetry-emission-for-fabric-backed-nemo

Conversation

@mmogallapalli

@mmogallapalli mmogallapalli commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR completes AIRCORE-902 by wiring Fabric-backed NeMo Agents to Relay telemetry output and validating the two expected local telemetry paths:

Fabric-backed agent -> Relay -> local ATIF/ATOF artifacts
Fabric-backed agent -> Relay -> Platform Intake -> ClickHouse -> Studio Intake UI

The goal of this PR is to prove that Platform-owned agent.yaml telemetry settings can be translated into the Fabric/Relay config shape and used by deployed Fabric-backed agents.

Changes

  • Updated the Fabric dependency pin to the latest 0.2.0 RC used for Relay 0.6 compatible telemetry.
  • Updated Fabric translation to emit the Relay v2 observability config shape.
  • Added support for local ATOF and ATIF file output config.
  • Added support for ATIF HTTP storage config, including the local Platform Intake endpoint.
  • Added agent-relay.yaml as a Relay local-file telemetry example.
  • Added agent-relay-intake.yaml as a Relay-to-Intake telemetry example.
  • Updated plugins/nemo-agents/examples/nemo-agent-config/README.md with reviewer test flows.
  • Added/updated unit coverage for Relay telemetry translation.

To Reproduce/Test

The easiest place to start is:

  • plugins/nemo-agents/examples/nemo-agent-config/README.md
  • plugins/nemo-agents/examples/nemo-agent-config/agent.yaml
  • plugins/nemo-agents/examples/nemo-agent-config/agent-relay.yaml
  • plugins/nemo-agents/examples/nemo-agent-config/agent-relay-intake.yaml

The README includes three local flows:

  • agent.yaml: telemetry-neutral local invoke.
  • agent-relay.yaml: Fabric-backed deployed agent emitting local ATIF and ATOF files through Relay.
  • agent-relay-intake.yaml: Fabric-backed deployed agent emitting ATIF through Relay to local Platform Intake, then viewing the trace in Studio.

For Relay-backed Codex/Claude telemetry, reviewers also need the Relay CLI in addition to the Python deps:

uv pip install -e "plugins/nemo-agents[fabric]"
cargo install nemo-relay-cli --root .venv
.venv/bin/nemo-relay --version

For the Intake path, reviewers should start ClickHouse first:

services/intake/scripts/spans/run_clickhouse.sh

Validated

  • Fabric-backed deployment successfully invoked through nemo agents invoke --agent-deployment ....
  • Relay local file export produced both:
    • trajectory-*.atif.json
    • events.atof.jsonl
  • Relay HTTP export posted ATIF data to Platform Intake.
  • Intake persisted spans to ClickHouse.
  • Studio Intake UI displayed the generated trace with usage and output details.
Screenshot 2026-07-28 at 5 55 49 PM

Notes

  • nemo-relay Python package and nemo-relay CLI are separate install surfaces. The Codex/Claude gateway path requires the CLI binary.
  • Local Intake validation requires ClickHouse.
  • Studio trace viewing requires VITE_FF_INTAKE_ENABLED=true and VITE_PLATFORM_BASE_URL=http://localhost:8080.
  • Broader production packaging/dependency cleanup with Evaluator and shared Relay versions is being coordinated separately.

Summary by CodeRabbit

  • New Features
    • Added runnable agent relay examples for local file output and local Intake integration, including ATIF/ATOF and Studio trace verification guidance.
  • Documentation
    • Rewrote the agent config README with clearer setup for “NeMo Agent Config”, local invoke steps, and relay-to-Intake walkthroughs.
  • Updates
    • Updated Fabric-backed telemetry support to the newer relay observability shape (version 2), with normalized ATOF sinks (file/stream).
    • Refreshed optional integration package versions to newer release candidates.

@mmogallapalli
mmogallapalli changed the base branch from main to mmogallapall/aircore-932-define-and-implement-managed-fabric-runtimesession-lifecycle July 27, 2026 21:06
@github-actions github-actions Bot added the feat label Jul 27, 2026
@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor
Suite Lines Covered Line Rate Branch Rate
Unit Tests 27601/35351 78.1% 62.5%
Integration Tests 16110/34069 47.3% 19.8%

Base automatically changed from mmogallapall/aircore-932-define-and-implement-managed-fabric-runtimesession-lifecycle to main July 28, 2026 22:01
@mmogallapalli
mmogallapalli force-pushed the mmogallapall/aircore-902-configure-relay-telemetry-emission-for-fabric-backed-nemo branch from 12ea4a0 to 033a650 Compare July 28, 2026 22:10
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
@mmogallapalli
mmogallapalli force-pushed the mmogallapall/aircore-902-configure-relay-telemetry-emission-for-fabric-backed-nemo branch from 5b4fe98 to 7fca774 Compare July 28, 2026 23:11
@mmogallapalli
mmogallapalli marked this pull request as ready for review July 28, 2026 23:11
@mmogallapalli
mmogallapalli requested review from a team as code owners July 28, 2026 23:11
@mmogallapalli mmogallapalli changed the title feat(nemo-agents): support relay -> intake telemetry feat(nemo-agents): validate fabric relay telemetry Jul 28, 2026
@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: ceef5793-401a-4870-b1f3-a485e5aea38f

📥 Commits

Reviewing files that changed from the base of the PR and between 7fca774 and 74cbd28.

📒 Files selected for processing (2)
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.py
  • plugins/nemo-agents/tests/unit/test_fabric_translator.py
🚧 Files skipped from review as they are similar to previous changes (2)
  • plugins/nemo-agents/tests/unit/test_fabric_translator.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.py

📝 Walkthrough

Walkthrough

Relay telemetry translation now emits Fabric observability schema version 2 with normalized ATOF sinks. Fabric dependencies, tests, example relay configurations, and local file/Intake usage documentation were updated.

Changes

Relay telemetry and examples

Layer / File(s) Summary
Fabric telemetry translation and validation
plugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.py, plugins/nemo-agents/tests/unit/test_fabric_translator.py, plugins/nemo-agents/pyproject.toml
Updates Fabric package pins, emits observability version 2, normalizes ATOF sinks, and aligns translator assertions with the new schema.
Relay configurations and local workflows
plugins/nemo-agents/examples/nemo-agent-config/agent-relay.yaml, plugins/nemo-agents/examples/nemo-agent-config/agent-relay-intake.yaml, plugins/nemo-agents/examples/nemo-agent-config/README.md
Adds relay configurations and documents local invocation, ATIF/ATOF artifact checks, Intake setup, and trace inspection.

Suggested reviewers: mikeknep, ajaythorve, stefan-kickoff, anuradhakaruppiah

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: validating Fabric relay telemetry for Nemo Agents.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch mmogallapall/aircore-902-configure-relay-telemetry-emission-for-fabric-backed-nemo

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
plugins/nemo-agents/examples/nemo-agent-config/README.md (2)

119-129: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add the required Next Steps section.

End with cross-links to related agent configuration and telemetry documentation.

As per coding guidelines, documentation pages must include a Next Steps section with cross-links.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/nemo-agents/examples/nemo-agent-config/README.md` around lines 119 -
129, Add a “Next Steps” section at the end of the README after the Studio trace
instructions, including cross-links to the related agent configuration and
telemetry documentation pages. Preserve the existing setup and trace-inspection
instructions.

Source: Coding guidelines


1-12: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add prerequisites before the first command.

State the required Python/uv, Cargo, Codex CLI, and local Intake/ClickHouse/Platform setup, including which dependencies apply to each workflow.

As per coding guidelines, documentation pages must list prerequisites at the top.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/nemo-agents/examples/nemo-agent-config/README.md` around lines 1 -
12, Update the README before the installation command to add a prerequisites
section covering required Python/uv, Cargo, and Codex CLI versions or setup,
plus local Intake, ClickHouse, and Platform services. Clearly identify which
prerequisites apply to each workflow, while preserving the existing Fabric
dependency installation guidance.

Source: Coding guidelines

plugins/nemo-agents/tests/unit/test_fabric_translator.py (1)

203-220: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Add coverage for the new ATOF normalization branches.

This assertion covers only flat file settings. Add cases for endpoint-to-stream conversion, existing sinks, explicit output-directory precedence, and conflicting fields so _relay_atof_config behavior is locked down.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugins/nemo-agents/tests/unit/test_fabric_translator.py` around lines 203 -
220, Add unit-test cases in test_fabric_translator.py covering each new
_relay_atof_config normalization branch: endpoint-to-stream conversion,
preservation of existing sinks, precedence of an explicit output directory, and
handling of conflicting fields. Keep the current flat file-settings assertion
and verify the normalized ATOF configuration for each scenario.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@plugins/nemo-agents/examples/nemo-agent-config/README.md`:
- Around line 89-97: Update the “Relay to Intake (Local)” setup instructions to
explicitly ensure Platform/Intake is running at 127.0.0.1:8080 before deployment
and API checks, either by adding the appropriate startup command to the shell
block or clearly stating that it must already be running.
- Around line 57-63: Make both workflow checks fail when expected output is
missing: in plugins/nemo-agents/examples/nemo-agent-config/README.md lines
57-63, update the artifact check to require at least one ATIF and one ATOF file;
in the same file lines 112-117, make the HTTP request fail on HTTP errors and
assert that the returned Intake data is non-empty.

In `@plugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.py`:
- Around line 166-171: Update the translated stream-sink handling in the
endpoint loop to remove the legacy endpoint field after mapping it to url, and
ensure every resulting sink has type set to stream rather than preserving a
conflicting value. Keep the existing sink collection behavior unchanged.

---

Nitpick comments:
In `@plugins/nemo-agents/examples/nemo-agent-config/README.md`:
- Around line 119-129: Add a “Next Steps” section at the end of the README after
the Studio trace instructions, including cross-links to the related agent
configuration and telemetry documentation pages. Preserve the existing setup and
trace-inspection instructions.
- Around line 1-12: Update the README before the installation command to add a
prerequisites section covering required Python/uv, Cargo, and Codex CLI versions
or setup, plus local Intake, ClickHouse, and Platform services. Clearly identify
which prerequisites apply to each workflow, while preserving the existing Fabric
dependency installation guidance.

In `@plugins/nemo-agents/tests/unit/test_fabric_translator.py`:
- Around line 203-220: Add unit-test cases in test_fabric_translator.py covering
each new _relay_atof_config normalization branch: endpoint-to-stream conversion,
preservation of existing sinks, precedence of an explicit output directory, and
handling of conflicting fields. Keep the current flat file-settings assertion
and verify the normalized ATOF configuration for each scenario.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: eaa3493e-e70e-4a79-b751-d381171418b4

📥 Commits

Reviewing files that changed from the base of the PR and between 4a6d40f and 7fca774.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • plugins/nemo-agents/examples/nemo-agent-config/README.md
  • plugins/nemo-agents/examples/nemo-agent-config/agent-relay-intake.yaml
  • plugins/nemo-agents/examples/nemo-agent-config/agent-relay.yaml
  • plugins/nemo-agents/pyproject.toml
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.py
  • plugins/nemo-agents/tests/unit/test_fabric_translator.py

Comment thread plugins/nemo-agents/examples/nemo-agent-config/README.md
Comment thread plugins/nemo-agents/examples/nemo-agent-config/README.md
Comment thread plugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.py
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
Comment thread plugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.py
@mmogallapalli
mmogallapalli added this pull request to the merge queue Jul 29, 2026
Merged via the queue into main with commit 0639758 Jul 29, 2026
58 checks passed
@mmogallapalli
mmogallapalli deleted the mmogallapall/aircore-902-configure-relay-telemetry-emission-for-fabric-backed-nemo branch July 29, 2026 14:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants