Skip to content

fix(nemo-agents): support IGW for Fabric agents and install deps by default - #1003

Merged
mmogallapalli merged 9 commits into
mainfrom
mmogallapall/aircore-943-todos-pt-1
Jul 31, 2026
Merged

fix(nemo-agents): support IGW for Fabric agents and install deps by default#1003
mmogallapalli merged 9 commits into
mainfrom
mmogallapall/aircore-943-todos-pt-1

Conversation

@mmogallapalli

@mmogallapalli mmogallapalli commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Summary

This MR finishes the Fabric-backed agent wiring for the nemo-agents plugin:

  • Moves Fabric, Relay, Claude, Codex, and DeepAgents dependencies into the default nemo-agents install so Fabric-backed agents have the required runtime packages for subprocess, Docker, and Kubernetes deployments.
  • Keeps Hermes split out because hermes-agent still has dependency conflicts with the Platform environment.
  • Adds DeepAgents adapter wiring and example coverage.
  • Fixes Fabric IGW routing by flattening model base_url into Fabric ModelConfig.base_url.
  • Makes IGW injection provider-aware so OpenAI-compatible/NVIDIA models route through Platform IGW while native Anthropic Claude models are not given the OpenAI-compatible IGW URL.
  • Adds top-level instructions.system support for shared Fabric system instructions.
  • Updates example configs and docs for Codex, DeepAgents, Claude, Hermes, Relay local files, and Relay to Intake.
  • Refreshes generated dependency/license files.
  • Rebases Platform IGW base_url values for Fabric-backed Docker/Kubernetes deployments, including the current top-level Fabric model.base_url shape and legacy settings.base_url.

Validation

  • Unit coverage added/updated for:

    • Fabric gateway URL injection
    • provider-aware IGW behavior
    • legacy settings.base_url promotion
    • top-level instructions.system
    • Fabric translation behavior
  • Verified Fabric planning for all example harnesses:

    • Codex
    • DeepAgents
    • Claude
    • Hermes
  • Verified end-to-end create/deploy/invoke flows locally:

    • Codex through Platform IGW
    • DeepAgents through Platform IGW
    • Claude with harness-local Anthropic model config
    • Hermes with separate .venv-hermes and ADAPTER_PYTHON

Notes

Hermes remains intentionally documented as a separate setup path. For subprocess deployments, ADAPTER_PYTHON must be exported before Platform starts so the Platform service can launch the Hermes adapter with the separate interpreter.

Fabric dependencies were previously optional, which worked for local development paths but left non-local deployments without the packages needed to start Fabric-backed agents.

Summary by CodeRabbit

  • New Features
    • Added shared system instruction support in agent configurations.
    • Improved model endpoint handling across Fabric and deployments.
    • Expanded multi-harness examples with Claude and DeepAgents support.
  • Documentation
    • Unified multi-harness workflows and updated Relay, Intake, Hermes, and secrets guidance.
  • Tests
    • Added coverage for instruction validation, model endpoints, translation, and deployment behavior.
  • Chores
    • Refreshed dependency pins and license manifests.

@mmogallapalli mmogallapalli changed the title fix(nemo-agents) fix(nemo-agents): support IGW for Fabric agents and install deps by default Jul 30, 2026
@mmogallapalli
mmogallapalli marked this pull request as ready for review July 30, 2026 21:13
@mmogallapalli
mmogallapalli requested review from a team as code owners July 30, 2026 21:13
@github-actions github-actions Bot added the fix label Jul 30, 2026
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

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: 0eccca03-281c-42e8-8d89-d5dd8a7c1a97

📥 Commits

Reviewing files that changed from the base of the PR and between 627c79e and 3a24d1a.

📒 Files selected for processing (1)
  • plugins/nemo-agents/tests/unit/test_utils.py

📝 Walkthrough

Walkthrough

Adds Fabric adapter dependencies and multi-harness examples, introduces top-level instructions and model base_url fields, updates Platform-to-Fabric translation and gateway URL handling, and refreshes tests, licenses, and dependency locks.

Changes

Fabric agent configuration

Layer / File(s) Summary
Fabric dependencies and lock metadata
packages/nemo_platform/pyproject.toml, plugins/nemo-agents/pyproject.toml, third_party/*, tools/nemo-platform-sdk-tools/src/.../overrides.yaml
Adds Fabric adapters and related packages, refreshes pinned hashes, and updates license reports and overrides.
Configuration schema and Fabric translation
plugins/nemo-agents/src/nemo_agents_plugin/agent_config.py, plugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.py, plugins/nemo-agents/tests/unit/test_agent_config.py, plugins/nemo-agents/tests/unit/test_fabric_translator.py
Adds validated system instructions and model base_url, translates them to Fabric, and preserves legacy model URL settings.
Inference gateway URL injection and rebasing
plugins/nemo-agents/src/nemo_agents_plugin/utils.py, plugins/nemo-agents/src/nemo_agents_plugin/runner/deployments_backend.py, plugins/nemo-agents/tests/unit/test_utils.py, plugins/nemo-agents/tests/unit/test_runner_deployments.py, plugins/nemo-agents/tests/unit/test_deployments_api.py
Preserves explicit endpoints, promotes legacy values, restricts gateway injection by provider, and rewrites Fabric gateway URLs during deployment creation.
Multi-harness examples and invocation workflow
plugins/nemo-agents/examples/nemo-agent-config/*, plugins/nemo-agents/README.md
Documents Platform invocation, shared Fabric capabilities, harness configuration, Hermes setup, Relay files, and Intake integration.

Possibly related PRs

Suggested reviewers: stefan-kickoff, mikeknep

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 10.34% 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 clearly summarizes the PR’s main changes: Fabric agent IGW support and default dependency installation.
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-943-todos-pt-1

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: 5

🤖 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 27-29: Update the README description of instructions.system to
call it the shared system prompt field or location, not a path, while preserving
the existing guidance about inline content and adapter-specific settings.
- Around line 3-4: Add a prerequisites section at the beginning of the README
before the command list, covering the required runtime, CLI setup, credentials,
and any optional services needed by the nemo-agents-spec-v1 configurations.
Clearly distinguish required prerequisites from optional service dependencies,
while preserving the existing command instructions.
- Around line 35-64: Add a Python SDK tab alongside the existing CLI workflow in
the README, documenting an equivalent agent create, deploy, and invoke sequence
using the required SDK commands and configuration. Test the documented Python
flow end to end and ensure it matches the CLI example’s agent, deployment, and
input behavior.
- Around line 52-59: Update the README’s Relay verification commands to use the
same configuration file and deployment name established by the create/deploy
flow, specifically agent.yaml and fabric-agent-deployment. Replace the unrelated
hard-coded artifact path with a path derived from or matching that deployment,
and apply the same alignment to the additionally referenced section.

In `@plugins/nemo-agents/pyproject.toml`:
- Line 23: Update the nemo-fabric dependency declaration in pyproject.toml so
the deepagents extra is not included in the default installation. Move
deepagents to a separate opt-in dependency extra while preserving the existing
claude, codex, and relay requirements and version bounds.
🪄 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: bce4982f-09b7-4ead-bab1-f3b7b0c7f3e9

📥 Commits

Reviewing files that changed from the base of the PR and between 9c36aac and cebdaa4.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (17)
  • packages/nemo_platform/pyproject.toml
  • plugins/nemo-agents/README.md
  • 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/examples/nemo-agent-config/agent.yaml
  • plugins/nemo-agents/pyproject.toml
  • plugins/nemo-agents/src/nemo_agents_plugin/agent_config.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.py
  • plugins/nemo-agents/src/nemo_agents_plugin/utils.py
  • plugins/nemo-agents/tests/unit/test_agent_config.py
  • plugins/nemo-agents/tests/unit/test_deployments_api.py
  • plugins/nemo-agents/tests/unit/test_fabric_translator.py
  • plugins/nemo-agents/tests/unit/test_utils.py
  • third_party/licenses.jsonl
  • third_party/osv-licenses.json
  • third_party/requirements-main.txt

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/examples/nemo-agent-config/README.md
Comment thread plugins/nemo-agents/examples/nemo-agent-config/README.md
Comment thread plugins/nemo-agents/pyproject.toml
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-943-todos-pt-1 branch from cebdaa4 to 897f998 Compare July 30, 2026 21:39
@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor
Suite Lines Covered Line Rate Branch Rate
Unit Tests 29100/37023 78.6% 63.1%
Integration Tests 17216/35741 48.2% 20.7%

@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: 1

🤖 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 `@third_party/requirements-main.txt`:
- Around line 1688-1690: Update the nemo-fabric-adapters-hermes requirement
marker to include the existing Python <3.14 constraint, matching the
corresponding source manifests and uv.lock while preserving the current platform
conditions and hash.
🪄 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: b5a1bb40-f0b1-4214-b5ae-e1c4fd19c907

📥 Commits

Reviewing files that changed from the base of the PR and between cebdaa4 and 897f998.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (20)
  • packages/nemo_platform/pyproject.toml
  • plugins/nemo-agents/README.md
  • 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/examples/nemo-agent-config/agent.yaml
  • plugins/nemo-agents/pyproject.toml
  • plugins/nemo-agents/src/nemo_agents_plugin/agent_config.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.py
  • plugins/nemo-agents/src/nemo_agents_plugin/runner/deployments_backend.py
  • plugins/nemo-agents/src/nemo_agents_plugin/utils.py
  • plugins/nemo-agents/tests/unit/test_agent_config.py
  • plugins/nemo-agents/tests/unit/test_deployments_api.py
  • plugins/nemo-agents/tests/unit/test_fabric_translator.py
  • plugins/nemo-agents/tests/unit/test_runner_deployments.py
  • plugins/nemo-agents/tests/unit/test_utils.py
  • third_party/licenses.jsonl
  • third_party/osv-licenses.json
  • third_party/requirements-main.txt
  • tools/nemo-platform-sdk-tools/src/nemo_platform_sdk_tools/license/overrides.yaml
🚧 Files skipped from review as they are similar to previous changes (3)
  • plugins/nemo-agents/README.md
  • third_party/licenses.jsonl
  • plugins/nemo-agents/examples/nemo-agent-config/README.md

Comment thread third_party/requirements-main.txt
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>

@AjayThorve AjayThorve 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.

aligned with new fabric changes

Comment thread plugins/nemo-agents/examples/nemo-agent-config/README.md Outdated
Comment thread plugins/nemo-agents/src/nemo_agents_plugin/utils.py Outdated

@tylersbray tylersbray 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.

Looks good.

Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
@mmogallapalli
mmogallapalli enabled auto-merge July 31, 2026 00:02

@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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
plugins/nemo-agents/tests/unit/test_utils.py (1)

189-204: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Assert that the original nested endpoint is preserved.

The test only checks that base_url was not added to the original top level. It would still pass if translation removed config["models"]["default"]["settings"]["base_url"] in place.

         assert fabric_config.models["default"].base_url == "http://legacy:8080/v1"
         assert "base_url" not in result["models"]["default"]["settings"]
+        assert config["models"]["default"]["settings"]["base_url"] == "http://legacy:8080/v1"
🤖 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_utils.py` around lines 189 - 204, Update
test_promotes_legacy_settings_endpoint to assert that
config["models"]["default"]["settings"]["base_url"] remains
"http://legacy:8080/v1" after inject_fabric_gateway_url, while preserving the
existing assertions that the result promotes the endpoint and the original top
level is unchanged.
🤖 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.

Outside diff comments:
In `@plugins/nemo-agents/tests/unit/test_utils.py`:
- Around line 189-204: Update test_promotes_legacy_settings_endpoint to assert
that config["models"]["default"]["settings"]["base_url"] remains
"http://legacy:8080/v1" after inject_fabric_gateway_url, while preserving the
existing assertions that the result promotes the endpoint and the original top
level is unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 944cf31a-b7ba-47f8-b246-8d08b92f49ea

📥 Commits

Reviewing files that changed from the base of the PR and between aec67c9 and 627c79e.

📒 Files selected for processing (5)
  • plugins/nemo-agents/examples/nemo-agent-config/README.md
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/translator.py
  • plugins/nemo-agents/src/nemo_agents_plugin/utils.py
  • plugins/nemo-agents/tests/unit/test_fabric_translator.py
  • plugins/nemo-agents/tests/unit/test_utils.py

@mmogallapalli
mmogallapalli disabled auto-merge July 31, 2026 00:11
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
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