-
Notifications
You must be signed in to change notification settings - Fork 11
Forward-merge release/0.1 into main- #167 #169
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -184,7 +184,7 @@ fn hermes() -> FabricConfig { | |
| "nvidia.fabric.hermes", | ||
| Some(model( | ||
| "nvidia", | ||
| "nvidia/nemotron-3-nano-30b-a3b", | ||
| "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning", | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win Should Fix: Add Exact Default-Model Assertions.
Proposed test+ for (name, expected_model) in [
+ ("hermes", "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning"),
+ ("deepagents", "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning"),
+ ] {
+ let config = find(name)
+ .expect("catalog preset")
+ .config()
+ .expect("construct catalog config");
+ let model = config.models.get("default").expect("default model");
+ assert_eq!(model.model, expected_model);
+ }As per coding guidelines: “Run the relevant Rust and Python test suites for every affected language surface.” Also applies to: 243-243 🤖 Prompt for AI AgentsSource: Coding guidelines |
||
| Some("NVIDIA_API_KEY"), | ||
| Some(NVIDIA_API_CATALOG_BASE_URL), | ||
| )), | ||
|
|
@@ -240,7 +240,7 @@ fn deepagents() -> FabricConfig { | |
| "nvidia.fabric.langchain.deepagents", | ||
| Some(model( | ||
| "nvidia", | ||
| "nvidia/nemotron-3-nano-30b-a3b", | ||
| "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning", | ||
| Some("NVIDIA_API_KEY"), | ||
| Some(NVIDIA_API_CATALOG_BASE_URL), | ||
| )), | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,15 +1,17 @@ | ||
| --- | ||
| title: "NVIDIA NeMo Fabric" | ||
| title: "NVIDIA NeMo Fabric Documentation" | ||
| slug: "/about-nemo-fabric/overview" | ||
| description: "Configure, plan, run, and observe agent harnesses through one typed execution contract." | ||
| template-library-version: "1.0.0" | ||
| --- | ||
| {/* SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. | ||
| SPDX-License-Identifier: Apache-2.0 */} | ||
|
|
||
| NeMo Fabric is the harness-management layer that turns multiple agent runtimes | ||
| NVIDIA NeMo Fabric is the harness-management layer that turns multiple agent runtimes | ||
| into one configurable, observable execution surface. Applications use the same | ||
| versioned config, lifecycle, result, artifact, and telemetry contracts whether | ||
| the selected harness is Hermes Agent, Codex, or a custom adapter. | ||
| the selected harness is [Hermes Agent](https://hermes-agent.nousresearch.com/docs/), | ||
| [Codex SDK](https://openai.com/codex/), or a custom adapter. | ||
|
|
||
| NeMo Fabric owns the seam between an application and its harness. It resolves | ||
| configuration, selects an adapter, drives the runtime lifecycle, | ||
|
|
@@ -19,25 +21,42 @@ into the caller. | |
| ## What NeMo Fabric Gives You | ||
|
|
||
| <CardGroup cols={2}> | ||
| <Card title="Typed configuration"> | ||
| <Card title="Typed Configuration"> | ||
| Construct a complete, versioned `FabricConfig` in Python. Applications | ||
| create variants with ordinary functions and typed copies. | ||
| </Card> | ||
| <Card title="Harness-neutral execution"> | ||
| <Card title="Harness-Neutral Execution"> | ||
| Plan and invoke different harnesses through one Rust core, CLI, and Python | ||
| SDK instead of embedding harness launch logic in every consumer. | ||
| </Card> | ||
| <Card title="Typed lifecycle contracts"> | ||
| <Card title="Typed Lifecycle Contracts"> | ||
| Resolve configs, inspect capabilities, run single-invocation jobs, and hold | ||
| multi-turn runtimes with typed requests, plans, handles, and results. | ||
| </Card> | ||
| <Card title="Normalized evidence"> | ||
| <Card title="Normalized Evidence"> | ||
| Collect output, errors, lifecycle events, artifact manifests, and telemetry | ||
| references in stable contracts suitable for platforms and evaluations. | ||
| </Card> | ||
| </CardGroup> | ||
|
|
||
| ## How NeMo Fabric Fits | ||
|
|
||
| ## Choose Your Interface | ||
|
|
||
| Use the following table to choose the NeMo Fabric interface that best fits how | ||
| your application works with harnesses: | ||
|
|
||
| | Interface | Use it when | Start with | | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win Should Fix: Use Title Case for Table Headers. Change As per coding guidelines: “Use consistent title case for technical-document headings and table headers.” 🤖 Prompt for AI AgentsSource: Coding guidelines |
||
| | --- | --- | --- | | ||
| | Python SDK | Your application owns job config, runtime lifecycle, or multi-turn state | [Client API](../reference/api/python-library-reference/nemo_fabric.client.md) | | ||
| | Runtime API | You need multiple ordered turns over one live harness runtime | [Runtime](../reference/api/python-library-reference/nemo_fabric.runtime.md) | | ||
| | Streaming API | You need live ATOF records generated by NeMo Relay during a runtime turn | [Streaming](../reference/api/python-library-reference/nemo_fabric.streaming.md) | | ||
| | `nemo-fabric` CLI | You are experimenting with harnesses, running maintained examples, or troubleshooting configs | [Experimentation CLI](../experimentation/cli.mdx) | | ||
| | JSON Schema | You are building editors, validation, code generation, or another language binding | Committed schemas in the [repository](https://github.com/NVIDIA/NeMo-Fabric/tree/main/schemas) | | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win Should Fix: Use the Repository Name as Link Text. Replace As per coding guidelines: “Link GitHub repositories using owner/repository link text.” 🤖 Prompt for AI AgentsSource: Coding guidelines |
||
|
|
||
| Use `FabricConfig` as the canonical configuration contract. CLI selectors | ||
| obtain complete typed configs from built-in presets or maintained examples. | ||
|
|
||
| ## Core Workflow | ||
|
|
||
| ```text | ||
| Application or evaluation harness | ||
|
|
@@ -55,87 +74,6 @@ Hermes Agent | Codex | custom harness | |
| RunResult + artifacts + events + telemetry references | ||
| ``` | ||
|
|
||
| The experimentation CLI and its catalogs live in the Rust `fabric-cli` crate | ||
| and are installed separately from the Python SDK. Built-in presets and | ||
| maintained examples produce a complete `FabricConfig` before using the same | ||
| run-plan contract. Adapters own harness-specific preparation and invocation; | ||
| consumers own the request and returned evidence. | ||
|
|
||
| ## Quick Start | ||
|
|
||
| Install `just` 1.50.0+ if it is not already available. | ||
|
|
||
| ```bash | ||
| cargo install just --locked | ||
| ``` | ||
|
|
||
| Refer to the [official installation guide](https://just.systems/man/en/installation.html) | ||
| for more details. | ||
|
|
||
| Ensure that the Cargo bin directory is in your `PATH`: | ||
|
|
||
| ```bash | ||
| export PATH="$HOME/.cargo/bin:$PATH" | ||
| ``` | ||
|
|
||
| Create a Python virtual environment and activate it (replace `3.13` with your preferred Python version): | ||
|
|
||
| ```bash | ||
| uv venv -p 3.13 --seed .venv | ||
| source .venv/bin/activate | ||
| ``` | ||
|
|
||
| Build the Python SDK and install the Rust CLI from a source checkout: | ||
|
|
||
| ```bash | ||
| just build-all | ||
| ``` | ||
|
|
||
| Run the example through the Python SDK: | ||
|
|
||
| ```python | ||
| import asyncio | ||
| from examples.code_review_agent import BASE_DIR, hermes_config | ||
| from nemo_fabric import Fabric | ||
|
|
||
|
|
||
| async def main() -> None: | ||
| config = hermes_config() | ||
| client = Fabric() | ||
| result = await client.run( | ||
| config, | ||
| base_dir=BASE_DIR, | ||
| input="Reply with exactly: fabric works", | ||
| ) | ||
|
|
||
| print(result.status) | ||
|
|
||
|
|
||
| asyncio.run(main()) | ||
| ``` | ||
|
|
||
| Harness installation and credential requirements differ by adapter. The | ||
| [repository quick start](https://github.com/NVIDIA/NeMo-Fabric#quick-start-hermes-agent) | ||
| contains the complete Hermes Agent environment recipe. | ||
|
|
||
| Refer to the [Python SDK guide](../sdk/python.mdx) for planning, | ||
| diagnostics, typed requests, multi-turn runtimes, and NVIDIA NeMo Relay streaming. | ||
|
|
||
| ## Choose Your Interface | ||
|
|
||
| | Interface | Use it when | Start with | | ||
| | --- | --- | --- | | ||
| | Python SDK | Your application owns job config, runtime lifecycle, or multi-turn state | [Client API](../reference/api/python-library-reference/nemo_fabric.client.md) | | ||
| | Runtime API | You need multiple ordered turns over one live harness runtime | [Runtime](../reference/api/python-library-reference/nemo_fabric.runtime.md) | | ||
| | Streaming API | You need live ATOF records generated by NeMo Relay during a runtime turn | [Streaming](../reference/api/python-library-reference/nemo_fabric.streaming.md) | | ||
| | `nemo-fabric` CLI | You are experimenting with harnesses, running maintained examples, or troubleshooting configs | [Experimentation CLI](../experimentation/cli.mdx) | | ||
| | JSON Schema | You are building editors, validation, code generation, or another language binding | Committed schemas in the [repository](https://github.com/NVIDIA/NeMo-Fabric/tree/main/schemas) | | ||
|
|
||
| Use `FabricConfig` as the canonical configuration contract. CLI selectors | ||
| obtain complete typed configs from built-in presets or maintained examples. | ||
|
|
||
| ## Core Workflow | ||
|
|
||
| 1. **Configure** a typed `FabricConfig` with a harness adapter, | ||
| environment, models, tools, skills, MCP, and telemetry. | ||
| 2. **Create variants** from deep copies to vary harness, model, environment, or | ||
|
|
@@ -148,38 +86,14 @@ obtain complete typed configs from built-in presets or maintained examples. | |
| 5. **Consume evidence** from `RunResult`: output, structured failure details, | ||
| artifacts, events, and telemetry references. | ||
|
|
||
| ## Next Steps | ||
| ## Learn More | ||
|
|
||
| <CardGroup cols={2}> | ||
| <Card | ||
| title="Client API" | ||
| href="/reference/api/python-library-reference/client" | ||
| > | ||
| Resolve, plan, diagnose, run, and start stateful runtimes. | ||
| </Card> | ||
| <Card | ||
| title="Runtime" | ||
| href="/reference/api/python-library-reference/runtime" | ||
| > | ||
| Invoke multiple ordered turns and stop runtime handles safely. | ||
| </Card> | ||
| <Card | ||
| title="Streaming" | ||
| href="/reference/api/python-library-reference/streaming" | ||
| > | ||
| Consume live, raw NeMo Relay ATOF records and retrieve the terminal run result. | ||
| </Card> | ||
| <Card | ||
| title="Types" | ||
| href="/reference/api/python-library-reference/types" | ||
| > | ||
| Explore all mutable config objects and immutable request, plan, result, | ||
| artifact, telemetry, and runtime models. | ||
| </Card> | ||
| <Card | ||
| title="Errors" | ||
| href="/reference/api/python-library-reference/errors" | ||
| > | ||
| Handle config, capability, lifecycle, state, and native-extension failures. | ||
| </Card> | ||
| </CardGroup> | ||
| Continue exploring NeMo Fabric through these resources. | ||
|
|
||
| - **Installation** — [Installation](../getting-started/install.mdx) to set up the runtime and adapters. | ||
| - **Quickstart** — [Quickstart](../getting-started/quickstart.mdx) to build from | ||
| source and run the maintained SDK example. | ||
|
Comment on lines
+94
to
+95
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win Must Fix: Correct the Quickstart Description. The Quickstart installs the package and runs an SDK example. It does not build from source. Replace “to build from source and run” with “to install NVIDIA NeMo Fabric and run.” The published Quickstart uses As per coding guidelines: “Treat incorrect or stale commands, package names, paths, APIs, support claims, procedures, examples, terminology, or public behavior documentation as blocking issues.” 🤖 Prompt for AI AgentsSources: Coding guidelines, Path instructions |
||
| - **Python SDK** — [Python SDK](../sdk/python.mdx) for planning, diagnostics, | ||
| typed requests, and multi-turn runtimes. | ||
| - **API Reference** — [Client API](../reference/api/python-library-reference/nemo_fabric.client.md) | ||
| to resolve, plan, diagnose, run, and start stateful runtimes. | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Fix the package documentation URL in both adapter manifests.
The exact no-slash URL returns 404. Use the slash-terminated documentation root or the canonical overview page. ()
adapters/deepagents/pyproject.toml#L56-L56: add the trailing slash toDocumentation.adapters/hermes/pyproject.toml#L48-L48: add the trailing slash toDocumentation.📍 Affects 2 files
adapters/deepagents/pyproject.toml#L56-L56(this comment)adapters/hermes/pyproject.toml#L48-L48🤖 Prompt for AI Agents
Source: MCP tools