Skip to content

feat(nemo-agents): support for nemo agents run and nemo agents deploy for Fabric backed agents - #909

Merged
mmogallapalli merged 16 commits into
mainfrom
mmogallapall/aircore-932-define-and-implement-managed-fabric-runtimesession-lifecycle
Jul 28, 2026
Merged

feat(nemo-agents): support for nemo agents run and nemo agents deploy for Fabric backed agents#909
mmogallapalli merged 16 commits into
mainfrom
mmogallapall/aircore-932-define-and-implement-managed-fabric-runtimesession-lifecycle

Conversation

@mmogallapalli

@mmogallapalli mmogallapalli commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR implements the first Platform-managed serving lifecycle for Fabric-backed NeMo Agents as part of AIRCORE-932.

It adds a local FastAPI serving process that creates one Fabric runtime per logical session. The same server can be started directly through nemo agents run for foreground development or through nemo agents deploy for Platform-managed serving:

Platform-owned agent.yaml
  -> nemo agents run
  -> foreground Fabric serving process

Platform Agent entity
  -> nemo agents deploy
  -> managed Fabric serving process

Either Fabric serving path
  -> logical session
  -> translated FabricConfig
  -> FabricRuntime
  -> ordered invoke calls
  -> runtime stop

Fabric continues to own harness execution and the runtime start / invoke / stop lifecycle. NeMo Platform owns the multi-user server, logical session identity, runtime registry, request routing, concurrency policy, expiration, and cleanup.

Changes

  • Added an OpenAI-compatible Fabric serving application with:
    • GET /health
    • POST /v1/chat/completions
    • DELETE /v1/sessions/{session_id}
  • Updated nemo agents run to dispatch by agent config format:
    • nemo-agents-spec-v1 starts the Platform-owned Fabric server.
    • nat-workflow-v1 continues to run nat start fastapi.
    • Unsupported formats fail before starting a server.
  • Added typed request and response models for the chat-completions boundary.
  • Added a runtime session registry that maps opaque Platform session IDs to active Fabric runtimes.
  • Added a session manager responsible for:
    • Lazy FabricConfig translation and runtime startup.
    • Reusing the same runtime for later turns in a logical session.
    • Serializing invocations within one session.
    • Limiting concurrent invocations across independent sessions.
    • Explicit session closure.
    • Idle-session expiration.
    • Draining and stopping all runtimes during server shutdown.
  • Added invocation support for an already-active Fabric runtime while retaining the existing one-shot invocation path.
  • Added shared local-environment preparation so configured workspaces exist before either one-shot or managed runtime startup.
  • Added a shared agent-config format registry/protocol used by agent creation and deployment config resolution.
  • Updated the in-memory runner to deploy nemo-agents-spec-v1 agents by:
    • Persisting a canonical agent.yaml under the Platform agent workspace.
    • Running Fabric plan/doctor validation before spawning the server.
    • Starting the Fabric server as a managed local subprocess.
    • Reusing existing port allocation, readiness polling, log handling, process termination, and deployment cleanup behavior.
  • Preserved the existing NAT deployment path for nat-workflow-v1.
  • Added focused tests for format handling, HTTP routing, session lifecycle, concurrency, expiration, runtime cleanup, local deployment, and failure paths.

Design Choices

Platform owns sessions; Fabric owns runtimes

A Platform session is a logical conversation rather than an HTTP connection. Platform maintains the session_id -> FabricRuntime mapping, while Fabric remains unaware of users, HTTP routing, and other runtimes.

This keeps the integration aligned with Fabric's public lifecycle contract instead of adding lifecycle behavior inside adapters.

Runtimes are created lazily

Server startup loads and validates the reusable Platform agent definition but does not create a Fabric runtime. A complete FabricConfig is translated when the first request opens a logical session, and that config is bound to the resulting runtime.

This avoids allocating harness resources for sessions that never invoke the agent and leaves room for future per-session policy, environment, and profile resolution.

Session identity uses a response header

The first request may omit X-Nemo-Session-Id. Platform generates an opaque session ID and returns it in that response header. Later requests provide the same header to reuse the runtime.

Using a header keeps the request body compatible with the OpenAI chat-completions shape. Supplying an unknown or closed session ID returns 404; it does not silently create a replacement runtime.

One runtime processes one turn at a time

Invocations for the same session are serialized with a per-session lock because ordered turns share harness state. Different sessions may run concurrently, subject to a server-wide semaphore. The initial default permits eight concurrent invocations.

The runtime owns conversation state

Each HTTP request passes the current user message to the existing runtime. Prior turns are not replayed from the HTTP payload because the Fabric runtime and selected harness adapter own the session's conversation state.

Cleanup is explicit and bounded

Clients can close sessions explicitly. The server also expires idle sessions after 30 minutes, checks every five minutes, and drains all remaining runtimes during shutdown. Runtime registration failures also stop any runtime that was already started.

Local deployment builds on the existing runner

The first implementation uses the existing in-memory subprocess backend rather than introducing a second process-management system. Fabric and NAT deployments therefore share port allocation, health polling, logs, status transitions, termination, and filesystem cleanup.

Docker/Kubernetes runtime placement and distributed session ownership remain separate follow-up work.

run and deploy share the Fabric server

nemo agents run starts the Fabric server in the foreground from a local agent.yaml, with the caller choosing the host and port and stopping it with Ctrl-C. It does not require a running Platform or create an Agent or AgentDeployment entity.

nemo agents deploy starts the same server through the existing Platform runner. Platform allocates the port, tracks deployment status, routes requests through the gateway, exposes logs, and owns process cleanup.

Keeping both paths on the same server implementation provides the Fabric equivalent of the existing NAT run/deploy split without duplicating runtime or session behavior.

Agent formats share a small internal protocol

Agent creation and deployment now resolve behavior through config-format handlers. This keeps nat-workflow-v1 as the default and adds nemo-agents-spec-v1 without spreading format-specific branches through the API layer.

Error Behavior

  • Unknown or closed session: 404
  • Fabric runtime startup failure: 503
  • Fabric invocation failure or failed result: 502
  • Fabric invocation timeout: 504
  • Runtime shutdown failure: 502

Errors for an existing session preserve the session ID header where appropriate.

Out of Scope

  • Durable session recovery after a Platform/server restart.
  • Distributed session registries or routing across replicas.
  • Docker/Kubernetes Fabric server deployment and remote runtime placement.
  • Authentication and authorization inside the Fabric serving process; those remain Platform gateway concerns.
  • Streaming chat completions.
  • User-facing cancellation APIs.
  • Per-user concurrency quotas or configurable limits through public API fields.

Validation

Focused branch coverage:

222 passed

This includes agent config handling, format dispatch, Fabric translation/validation, one-shot and active-runtime invocation, serving routes, session registry/manager behavior, deployment APIs, controller behavior, and the in-memory runner.

Additional nested NeMo Agents suites:

104 passed

Focused CLI validation, including NAT and Fabric nemo agents run dispatch:

18 passed

Repository Python style and formatting:

All checks passed
2793 files already formatted

Manual end-to-end validation:

  1. Registered a nemo-agents-spec-v1 Agent from agent.yaml.
  2. Deployed it through the Platform API/CLI.
  3. Observed pending -> starting -> running.
  4. Invoked it through the Platform agent gateway.
  5. Opened a logical session and received X-Nemo-Session-Id.
  6. Reused that session for a second turn and confirmed conversation state was preserved.
  7. Closed the session and received 204.
  8. Confirmed reuse of the closed session returned 404.
  9. Deleted the deployment and verified its process and prepared base directory were removed.

Summary by CodeRabbit

  • New Features
    • Added a local Fabric agent serving server with OpenAI-compatible chat completions, session reuse, idle cleanup, and per-session concurrency limits.
    • Added unified agent configuration validation and deployment-resolution across NAT and Nemo spec formats (with consistent normalization).
    • Added support for launching either Fabric or NAT servers via the local CLI based on agent config type.
  • Bug Fixes
    • Improved error handling and HTTP status mapping for timeouts, execution failures, session issues, and response conversion issues.
    • Enforced secure local workspace creation (rejecting absolute/escaping paths) and strengthened Fabric deployment directory cleanup.

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>
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 requested review from a team as code owners July 27, 2026 16:59
@github-actions github-actions Bot added the feat label Jul 27, 2026
@coderabbitai

coderabbitai Bot commented Jul 27, 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
📝 Walkthrough

Walkthrough

The PR centralizes agent-config validation and deployment resolution, adds a session-based Fabric HTTP server and runtime lifecycle management, integrates local Fabric subprocess deployments, and routes the CLI between NAT and Fabric servers.

Changes

Agent configuration and Fabric serving

Layer / File(s) Summary
Configuration format resolution
plugins/nemo-agents/src/nemo_agents_plugin/agent_config_formats.py, plugins/nemo-agents/src/nemo_agents_plugin/api/v2/*.py, plugins/nemo-agents/src/nemo_agents_plugin/utils.py, plugins/nemo-agents/tests/unit/test_agent_config_formats.py, plugins/nemo-agents/tests/unit/test_utils.py
Centralizes format validation, normalization, deployment resolution, gateway injection, and format errors.
Fabric runtime contracts and invocation
plugins/nemo-agents/src/nemo_agents_plugin/fabric/{runtime.py,environment.py,invocation.py,serving_models.py}, plugins/nemo-agents/tests/unit/test_fabric_{runtime,invocation,serving_models}.py
Adds active-runtime and one-shot request types, workspace validation, timeout handling, runtime invocation, and chat schemas.
Session registry and manager with concurrency
plugins/nemo-agents/src/nemo_agents_plugin/fabric/{session_registry.py,session_manager.py}, plugins/nemo-agents/tests/unit/test_fabric_session_{registry,manager}.py
Implements session registration, lifecycle management, serialized invocation, concurrency limits, idle expiry, and cleanup.
Fabric HTTP serving flow
plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py, plugins/nemo-agents/tests/unit/test_fabric_server.py
Adds FastAPI health, chat-completion, session deletion, startup, shutdown, and idle-cleanup behavior.
In-memory Fabric deployment integration
plugins/nemo-agents/src/nemo_agents_plugin/runner/in_memory.py, plugins/nemo-agents/tests/unit/test_runner_in_memory.py
Writes validated configs, launches Fabric server subprocesses, tracks deployment metadata, and cleans deployment directories.
CLI server startup routing
plugins/nemo-agents/src/nemo_agents_plugin/cli.py, plugins/nemo-agents/tests/unit/test_cli.py
Routes local server startup to NAT or Fabric based on config_format and handles subprocess errors.

Sequence Diagram(s)

sequenceDiagram
  participant OpenAIClient
  participant FabricServingApp
  participant FabricSessionManager
  participant FabricRuntime
  OpenAIClient->>FabricServingApp: POST /v1/chat/completions
  FabricServingApp->>FabricSessionManager: resolve_session and invoke_session
  FabricSessionManager->>FabricRuntime: invoke_fabric_runtime
  FabricRuntime-->>FabricSessionManager: FabricRuntimeResult
  FabricSessionManager-->>FabricServingApp: normalized result
  FabricServingApp-->>OpenAIClient: ChatCompletionResponse and session ID
Loading

Possibly related PRs

Suggested labels: feat

Suggested reviewers: benmccown, anuradhakaruppiah, mikeknep

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 21.18% 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 main change: adding run and deploy support for Fabric-backed 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
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch mmogallapall/aircore-932-define-and-implement-managed-fabric-runtimesession-lifecycle

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 (4)
plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py (1)

170-182: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Reject stream=true explicitly.

Streaming is out of scope, but the field is accepted and ignored, so OpenAI-compatible clients get a non-streaming body they won't parse. Return 400 instead.

♻️ Proposed change
     ) -> ChatCompletionResponse:
+        if request.stream:
+            raise HTTPException(status_code=400, detail="Streaming responses are not supported.")
         try:
🤖 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/src/nemo_agents_plugin/fabric/server.py` around lines 170
- 182, Update chat_completions to validate request.stream before resolving the
session or processing the invocation; when streaming is requested, raise
HTTPException with status 400, while preserving the existing non-streaming
session and response flow.
plugins/nemo-agents/src/nemo_agents_plugin/fabric/session_registry.py (1)

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

Import Runtime normally rather than under TYPE_CHECKING.

session_manager.py line 24 already imports nemo_fabric at module scope with the ty suppression, so the guard isn't needed here.

As per coding guidelines: "do not import those types only under TYPE_CHECKING; import them normally when possible".

♻️ Proposed change
 from dataclasses import dataclass, field
-from typing import TYPE_CHECKING
 
-if TYPE_CHECKING:
-    from nemo_fabric import Runtime
+# CI type-checks this plugin via ty extra-paths without installing nemo-agents deps.
+from nemo_fabric import Runtime  # ty: ignore[unresolved-import]
🤖 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/src/nemo_agents_plugin/fabric/session_registry.py` around
lines 12 - 23, Update the Runtime import used by FabricRuntimeSession to import
Runtime normally at module scope instead of guarding it with TYPE_CHECKING;
remove the now-unused TYPE_CHECKING import while preserving the session_id and
runtime annotations.

Source: Coding guidelines

plugins/nemo-agents/src/nemo_agents_plugin/fabric/session_manager.py (2)

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

Use the concrete Fabric type instead of Any.

Fabric is already imported normally at line 24, so the injection point can be typed precisely.

As per coding guidelines: "prefer concrete type hints over string-based type hints, and do not import those types only under TYPE_CHECKING".

♻️ Proposed change
-        fabric: Any | None = None,
+        fabric: Fabric | None = None,
🤖 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/src/nemo_agents_plugin/fabric/session_manager.py` at line
50, Update the fabric parameter or attribute declaration in the session manager
to use the imported concrete Fabric type instead of Any, preserving the existing
optional None default and avoiding string-based or TYPE_CHECKING-only typing.

Source: Coding guidelines


133-140: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Shutdown aborts on the first unexpected stop error.

stop_session only swallows FabricSessionStopError; anything else propagates out of gather, leaving the remaining stop coroutines un-awaited and runtimes leaked during shutdown.

♻️ Proposed change
-        await asyncio.gather(*(stop_session(session) for session in sessions))
+        await asyncio.gather(*(stop_session(session) for session in sessions), return_exceptions=True)
🤖 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/src/nemo_agents_plugin/fabric/session_manager.py` around
lines 133 - 140, Update the local stop_session helper in the session shutdown
flow to catch unexpected exceptions as well as FabricSessionStopError, logging
them without re-raising so asyncio.gather can complete all session stops.
Preserve the existing session-specific error logging and return len(sessions)
after every stop coroutine has been awaited.
🤖 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/src/nemo_agents_plugin/fabric/environment.py`:
- Around line 16-19: Constrain workspace handling in the environment setup flow:
resolve the configured workspace against base_dir, reject absolute paths and any
resolved path that escapes base_dir (including traversal such as ../../x), and
only then create the directory. Add tests covering both absolute and traversal
configurations.

In `@plugins/nemo-agents/src/nemo_agents_plugin/fabric/runtime.py`:
- Around line 100-103: Update the TimeoutError handling in runtime.invoke and
run_fabric_agent_once so timeout_seconds=None produces a valid timeout message
instead of applying numeric formatting to None. Build the timeout text
conditionally for configured versus unset deadlines, then raise
FabricRuntimeTimeoutError with that text while preserving the original error as
the cause.

In `@plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py`:
- Around line 158-161: Update the shutdown cleanup in the surrounding server
lifecycle method so exceptions or cancellation from cleanup_task do not prevent
session_manager.close_all_sessions() from running. Ensure close_all_sessions()
is always awaited after signaling cleanup_shutdown, while preserving the cleanup
task’s existing exception behavior where appropriate.

---

Nitpick comments:
In `@plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py`:
- Around line 170-182: Update chat_completions to validate request.stream before
resolving the session or processing the invocation; when streaming is requested,
raise HTTPException with status 400, while preserving the existing non-streaming
session and response flow.

In `@plugins/nemo-agents/src/nemo_agents_plugin/fabric/session_manager.py`:
- Line 50: Update the fabric parameter or attribute declaration in the session
manager to use the imported concrete Fabric type instead of Any, preserving the
existing optional None default and avoiding string-based or TYPE_CHECKING-only
typing.
- Around line 133-140: Update the local stop_session helper in the session
shutdown flow to catch unexpected exceptions as well as FabricSessionStopError,
logging them without re-raising so asyncio.gather can complete all session
stops. Preserve the existing session-specific error logging and return
len(sessions) after every stop coroutine has been awaited.

In `@plugins/nemo-agents/src/nemo_agents_plugin/fabric/session_registry.py`:
- Around line 12-23: Update the Runtime import used by FabricRuntimeSession to
import Runtime normally at module scope instead of guarding it with
TYPE_CHECKING; remove the now-unused TYPE_CHECKING import while preserving the
session_id and runtime annotations.
🪄 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: e7d3e9a2-999d-4276-b6a8-9212cd7b0aa9

📥 Commits

Reviewing files that changed from the base of the PR and between dae9035 and 0098e9a.

📒 Files selected for processing (19)
  • plugins/nemo-agents/src/nemo_agents_plugin/agent_config_formats.py
  • plugins/nemo-agents/src/nemo_agents_plugin/api/v2/agents.py
  • plugins/nemo-agents/src/nemo_agents_plugin/api/v2/deployments.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/environment.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/invocation.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/runtime.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/serving_models.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/session_manager.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/session_registry.py
  • plugins/nemo-agents/src/nemo_agents_plugin/runner/in_memory.py
  • plugins/nemo-agents/tests/unit/test_agent_config_formats.py
  • plugins/nemo-agents/tests/unit/test_controller.py
  • plugins/nemo-agents/tests/unit/test_fabric_runtime.py
  • plugins/nemo-agents/tests/unit/test_fabric_server.py
  • plugins/nemo-agents/tests/unit/test_fabric_serving_models.py
  • plugins/nemo-agents/tests/unit/test_fabric_session_manager.py
  • plugins/nemo-agents/tests/unit/test_fabric_session_registry.py
  • plugins/nemo-agents/tests/unit/test_runner_in_memory.py
💤 Files with no reviewable changes (1)
  • plugins/nemo-agents/tests/unit/test_controller.py

Comment thread plugins/nemo-agents/src/nemo_agents_plugin/fabric/environment.py Outdated
Comment thread plugins/nemo-agents/src/nemo_agents_plugin/fabric/runtime.py
Comment thread plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py Outdated
@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor
Suite Lines Covered Line Rate Branch Rate
Unit Tests 27559/35314 78.0% 62.5%
Integration Tests 16094/34032 47.3% 19.8%

Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>

@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

🧹 Nitpick comments (1)
pr_description.md (1)

1-147: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

Keep this page within one Diataxis type.

The page mixes explanation, reference content, and validation/how-to material. Reframe or split it into one quadrant, add prerequisites before the main content, and add a Next Steps section with cross-links.

As per coding guidelines, each documentation page should fit ONE Diataxis quadrant, list prerequisites at the top, and include a Next Steps section at the end.

🤖 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 `@pr_description.md` around lines 1 - 147, Rework pr_description.md to fit a
single Diataxis type, removing or relocating mixed design, reference, and
validation/how-to material as appropriate. Add a Prerequisites section near the
beginning before the main content, and append a Next Steps section containing
links to related documentation or follow-up topics.

Source: Coding guidelines

🤖 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 `@pr_description.md`:
- Line 1: Update the first heading in pr_description.md from level 2 to level 1
by changing Summary to use a single leading hash, preserving the heading text.

---

Nitpick comments:
In `@pr_description.md`:
- Around line 1-147: Rework pr_description.md to fit a single Diataxis type,
removing or relocating mixed design, reference, and validation/how-to material
as appropriate. Add a Prerequisites section near the beginning before the main
content, and append a Next Steps section containing links to related
documentation or follow-up topics.
🪄 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: 79bf39b3-69a5-4c53-bd15-b7d07990fb66

📥 Commits

Reviewing files that changed from the base of the PR and between 0098e9a and 0f588be.

📒 Files selected for processing (8)
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/environment.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/runtime.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/session_registry.py
  • plugins/nemo-agents/tests/unit/test_fabric_invocation.py
  • plugins/nemo-agents/tests/unit/test_fabric_runtime.py
  • plugins/nemo-agents/tests/unit/test_fabric_server.py
  • pr_description.md
🚧 Files skipped from review as they are similar to previous changes (5)
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/environment.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/session_registry.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py
  • plugins/nemo-agents/tests/unit/test_fabric_server.py
  • plugins/nemo-agents/src/nemo_agents_plugin/fabric/runtime.py

Comment thread pr_description.md Outdated
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
@mmogallapalli mmogallapalli changed the title feat(nemo-agents): support for nemo agents run for Fabric backed agents feat(nemo-agents): support for nemo agents run and nemo agents deploy for Fabric backed agents Jul 27, 2026

@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 `@plugins/nemo-agents/src/nemo_agents_plugin/cli.py`:
- Line 220: Update the configuration-loading flow around _load_yaml and
config_format to validate that the loaded YAML value is a mapping before calling
.get(); treat None or other invalid values as an invalid configuration and exit
cleanly. Preserve the existing default config_format for valid mappings, and add
a test covering an empty YAML file.
🪄 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: ebed3ba3-3379-4706-b60d-e71013c9e379

📥 Commits

Reviewing files that changed from the base of the PR and between 0f588be and e76e524.

📒 Files selected for processing (2)
  • plugins/nemo-agents/src/nemo_agents_plugin/cli.py
  • plugins/nemo-agents/tests/unit/test_cli.py

Comment thread plugins/nemo-agents/src/nemo_agents_plugin/cli.py Outdated
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>

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

Nice foundation, looks good.

Comment thread plugins/nemo-agents/src/nemo_agents_plugin/runner/in_memory.py Outdated
Comment thread plugins/nemo-agents/src/nemo_agents_plugin/agent_config_formats.py
Comment thread plugins/nemo-agents/src/nemo_agents_plugin/runner/in_memory.py
Comment thread plugins/nemo-agents/src/nemo_agents_plugin/fabric/session_manager.py Outdated
Comment thread plugins/nemo-agents/src/nemo_agents_plugin/fabric/session_manager.py Outdated
Comment thread plugins/nemo-agents/src/nemo_agents_plugin/fabric/invocation.py
Comment thread plugins/nemo-agents/src/nemo_agents_plugin/fabric/server.py Outdated
Comment thread plugins/nemo-agents/src/nemo_agents_plugin/agent_config_formats.py
Comment thread plugins/nemo-agents/src/nemo_agents_plugin/agent_config_formats.py
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
Signed-off-by: Manjesh Mogallapalli <mmogallapall@nvidia.com>
@mmogallapalli
mmogallapalli requested a review from mikeknep July 28, 2026 19:29
@mmogallapalli
mmogallapalli added this pull request to the merge queue Jul 28, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 28, 2026
@mmogallapalli
mmogallapalli added this pull request to the merge queue Jul 28, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 28, 2026
@mmogallapalli
mmogallapalli added this pull request to the merge queue Jul 28, 2026
Merged via the queue into main with commit 3fd2aec Jul 28, 2026
58 checks passed
@mmogallapalli
mmogallapalli deleted the mmogallapall/aircore-932-define-and-implement-managed-fabric-runtimesession-lifecycle branch July 28, 2026 22:01
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