From e6277345369c821fb8eca9409a4ec11046d9a1b3 Mon Sep 17 00:00:00 2001 From: Yuchen Zhang <134643420+yczhang-nv@users.noreply.github.com> Date: Thu, 30 Jul 2026 21:30:12 -0700 Subject: [PATCH 1/3] fix: replace deprecated Nemotron Nano model (#166) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### Overview Replace the deprecated `nvidia/nemotron-3-nano-30b-a3b` model with `nvidia/nemotron-3-nano-omni-30b-a3b-reasoning` across the maintained runtime presets and every dependent repository surface. This keeps the Hermes and Deep Agents NVIDIA API Catalog paths usable without changing their provider, credential, endpoint, or harness configuration. - [x] I confirm this contribution is my own work, or I have the right to submit it under this project's license. - [x] I searched existing issues and open pull requests, and this does not duplicate existing work. #### Details - Update the Hermes and Deep Agents CLI preset defaults. - Keep generated Python and Rust scaffolds aligned with the updated preset. - Update README, Fern documentation, code-review and Harbor examples, and both onboarding notebooks. - Update Deep Agents, Hermes, Harbor, ATOF, and ATIF expectations to assert the replacement model. - Remove all 28 tracked references to the deprecated identifier. There are no breaking API or configuration-shape changes. #### Validation - `cargo fmt --all -- --check` - `just test-rust` — passed - `just test-python` — 574 passed, 15 skipped - `npx --prefix docs --no-install fern check --warnings` — 0 errors; redirect check skipped because Fern authentication was unavailable - Verified `nemo-fabric plan --preset hermes` and `nemo-fabric plan --preset deepagents` resolve the replacement model - Manually ran the Hermes code-review example with Relay and confirmed ATOF/ATIF model metadata - Manually ran the Harbor calculator Hermes Relay job — 1 trial, 0 exceptions, reward 1.0, telemetry validation succeeded - Manually ran the Harbor SWE-bench `django__django-13741` Hermes job — 1 trial, 0 exceptions, reward 1.0 #### Where should the reviewer start? Start in `crates/fabric-cli/src/presets.rs`, where the maintained Hermes and Deep Agents defaults are defined, then review the corresponding model expectations in `crates/fabric-cli/src/scaffold.rs` and `tests/e2e/test_hermes_e2e.py`. #### Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to) - Relates to: none ## Summary by CodeRabbit - **Documentation** - Updated quick-start guides, SDK examples, preset references, notebooks, and sample projects to use `nvidia/nemotron-3-nano-omni-30b-a3b-reasoning`. - Refreshed Hermes and Deep Agents preset documentation and example commands with the new default model. - **Configuration** - Updated default model selections across generated configurations and example agents. - **Tests** - Updated validation and integration coverage to reflect the new model identifier. Authors: - Yuchen Zhang (https://github.com/yczhang-nv) Approvers: - Ajay Thorve (https://github.com/AjayThorve) - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah) URL: https://github.com/NVIDIA/NeMo-Fabric/pull/166 --- README.md | 2 +- crates/fabric-cli/src/presets.rs | 4 ++-- crates/fabric-cli/src/scaffold.rs | 2 +- docs/experimentation/cli.mdx | 4 ++-- docs/getting-started/quickstart.mdx | 2 +- docs/sdk/python.mdx | 2 +- examples/code_review_agent/config.py | 2 +- examples/harbor/calculator/README.md | 4 ++-- examples/harbor/swebench/README.md | 6 +++--- examples/notebooks/01_quickstart.ipynb | 2 +- examples/notebooks/02_variations.ipynb | 2 +- tests/adapters/test_deepagents.py | 4 ++-- tests/e2e/test_hermes_config_mapping.py | 4 ++-- tests/e2e/test_hermes_e2e.py | 8 ++++---- tests/integrations/test_harbor_runner.py | 8 ++++---- 15 files changed, 28 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 6a918c5f3..2e56b9d55 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ config = FabricConfig( models={ "default": ModelConfig( provider="nvidia", - model="nvidia/nemotron-3-nano-30b-a3b", + model="nvidia/nemotron-3-nano-omni-30b-a3b-reasoning", api_key_env="NVIDIA_API_KEY", base_url="https://integrate.api.nvidia.com/v1", ) diff --git a/crates/fabric-cli/src/presets.rs b/crates/fabric-cli/src/presets.rs index c8bf3cd3d..febe640d6 100644 --- a/crates/fabric-cli/src/presets.rs +++ b/crates/fabric-cli/src/presets.rs @@ -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", 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), )), diff --git a/crates/fabric-cli/src/scaffold.rs b/crates/fabric-cli/src/scaffold.rs index 7973f3d3b..f8cfb6a49 100644 --- a/crates/fabric-cli/src/scaffold.rs +++ b/crates/fabric-cli/src/scaffold.rs @@ -431,7 +431,7 @@ mod tests { }; let source = fs::read_to_string(launcher).expect("read launcher"); assert!(source.contains("nvidia.fabric.hermes")); - assert!(source.contains("nvidia/nemotron-3-nano-30b-a3b")); + assert!(source.contains("nvidia/nemotron-3-nano-omni-30b-a3b-reasoning")); assert!(source.contains("https://integrate.api.nvidia.com/v1")); if language == Language::Rust { let manifest = diff --git a/docs/experimentation/cli.mdx b/docs/experimentation/cli.mdx index 65f1ac9d7..c75e88dc1 100644 --- a/docs/experimentation/cli.mdx +++ b/docs/experimentation/cli.mdx @@ -67,10 +67,10 @@ experiments: | Preset | Harness | Default model | Endpoint | | --- | --- | --- | --- | | `scripted` | Deterministic test adapter | None | None | -| `hermes` | Hermes Agent | `nvidia/nemotron-3-nano-30b-a3b` | NVIDIA API Catalog | +| `hermes` | Hermes Agent | `nvidia/nemotron-3-nano-omni-30b-a3b-reasoning` | NVIDIA API Catalog | | `claude` | Claude Code | `aws/anthropic/claude-opus-4-5` | `NVIDIA_FRONTIER_BASE_URL` | | `codex` | Codex | `azure/openai/gpt-5.4` | `NVIDIA_FRONTIER_BASE_URL` | -| `deepagents` | LangChain Deep Agents | `nvidia/nemotron-3-nano-30b-a3b` | NVIDIA API Catalog | +| `deepagents` | LangChain Deep Agents | `nvidia/nemotron-3-nano-omni-30b-a3b-reasoning` | NVIDIA API Catalog | The `scripted` preset does not call a model. It returns a deterministic response through the same NeMo Fabric runtime and adapter contract, which makes it useful for diff --git a/docs/getting-started/quickstart.mdx b/docs/getting-started/quickstart.mdx index ebd046982..9a656b0a5 100644 --- a/docs/getting-started/quickstart.mdx +++ b/docs/getting-started/quickstart.mdx @@ -53,7 +53,7 @@ config = FabricConfig( models={ "default": ModelConfig( provider="nvidia", - model="nvidia/nemotron-3-nano-30b-a3b", + model="nvidia/nemotron-3-nano-omni-30b-a3b-reasoning", api_key_env="NVIDIA_API_KEY", base_url="https://integrate.api.nvidia.com/v1", ) diff --git a/docs/sdk/python.mdx b/docs/sdk/python.mdx index 2eb21a6d7..06fed6656 100644 --- a/docs/sdk/python.mdx +++ b/docs/sdk/python.mdx @@ -60,7 +60,7 @@ config = FabricConfig( models={ "default": ModelConfig( provider="nvidia", - model="nvidia/nemotron-3-nano-30b-a3b", + model="nvidia/nemotron-3-nano-omni-30b-a3b-reasoning", api_key_env="NVIDIA_API_KEY", ) }, diff --git a/examples/code_review_agent/config.py b/examples/code_review_agent/config.py index c7c39abc8..3a706f28d 100644 --- a/examples/code_review_agent/config.py +++ b/examples/code_review_agent/config.py @@ -44,7 +44,7 @@ def base_config() -> FabricConfig: models={ "default": ModelConfig( provider="nvidia", - model="nvidia/nemotron-3-nano-30b-a3b", + model="nvidia/nemotron-3-nano-omni-30b-a3b-reasoning", temperature=0.0, api_key_env="NVIDIA_API_KEY", ) diff --git a/examples/harbor/calculator/README.md b/examples/harbor/calculator/README.md index 22ffbd7af..04ee3dd12 100644 --- a/examples/harbor/calculator/README.md +++ b/examples/harbor/calculator/README.md @@ -81,7 +81,7 @@ Expected Harbor summary: one trial, zero exceptions, and mean reward `1.000`. uv run --extra harbor harbor run \ --path "$TASK_DIR" \ --agent nemo_fabric.integrations.harbor:FabricAgent \ - --model nvidia/nemotron-3-nano-30b-a3b \ + --model nvidia/nemotron-3-nano-omni-30b-a3b-reasoning \ --ak fabric_adapter_id=nvidia.fabric.hermes \ --ak fabric_config_base_dir=/opt/fabric-calculator \ --ak fabric_workspace=/app \ @@ -106,7 +106,7 @@ typed config. The API key is passed separately as a task credential. uv run --extra harbor harbor run \ --path "$TASK_DIR" \ --agent nemo_fabric.integrations.harbor:FabricAgent \ - --model nvidia/nemotron-3-nano-30b-a3b \ + --model nvidia/nemotron-3-nano-omni-30b-a3b-reasoning \ --ak fabric_adapter_id=nvidia.fabric.hermes \ --ak fabric_config_base_dir=/opt/fabric-calculator \ --ak fabric_workspace=/app \ diff --git a/examples/harbor/swebench/README.md b/examples/harbor/swebench/README.md index fae53a678..fbbc55f67 100644 --- a/examples/harbor/swebench/README.md +++ b/examples/harbor/swebench/README.md @@ -75,7 +75,7 @@ The default Hermes Agent command uses NVIDIA's hosted API: uv run --extra harbor harbor run \ --task swe-bench/django__django-13741 \ --agent "$FABRIC_AGENT" \ - --model nvidia/nemotron-3-nano-30b-a3b \ + --model nvidia/nemotron-3-nano-omni-30b-a3b-reasoning \ --ak fabric_adapter_id=nvidia.fabric.hermes \ --ak fabric_config_bundle="$FABRIC_BUNDLE" \ --ak "fabric_package=$FABRIC_PACKAGE" \ @@ -141,7 +141,7 @@ For example, the complete skill variation is: uv run --extra harbor harbor run \ --task swe-bench/django__django-13741 \ --agent "$FABRIC_AGENT" \ - --model nvidia/nemotron-3-nano-30b-a3b \ + --model nvidia/nemotron-3-nano-omni-30b-a3b-reasoning \ --skill "$PWD/examples/harbor/swebench/skills/swebench-debugging" \ --ak fabric_adapter_id=nvidia.fabric.hermes \ --ak fabric_config_bundle="$FABRIC_BUNDLE" \ @@ -232,7 +232,7 @@ uv run --extra harbor harbor run \ --dataset swe-bench/swe-bench-verified \ --n-tasks 5 \ --agent "$FABRIC_AGENT" \ - --model nvidia/nemotron-3-nano-30b-a3b \ + --model nvidia/nemotron-3-nano-omni-30b-a3b-reasoning \ --ak fabric_adapter_id=nvidia.fabric.hermes \ --ak fabric_config_bundle="$FABRIC_BUNDLE" \ --ak fabric_telemetry=relay \ diff --git a/examples/notebooks/01_quickstart.ipynb b/examples/notebooks/01_quickstart.ipynb index a288f26b7..173a01b51 100644 --- a/examples/notebooks/01_quickstart.ipynb +++ b/examples/notebooks/01_quickstart.ipynb @@ -216,7 +216,7 @@ " models={\n", " \"default\": ModelConfig(\n", " provider=\"nvidia\",\n", - " model=\"nvidia/nemotron-3-nano-30b-a3b\",\n", + " model=\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\",\n", " base_url=\"https://integrate.api.nvidia.com/v1\",\n", " temperature=0.0,\n", " api_key_env=\"NVIDIA_API_KEY\",\n", diff --git a/examples/notebooks/02_variations.ipynb b/examples/notebooks/02_variations.ipynb index ac6610297..24ebaa92b 100644 --- a/examples/notebooks/02_variations.ipynb +++ b/examples/notebooks/02_variations.ipynb @@ -197,7 +197,7 @@ "\n", "\n", "NVIDIA_MODEL = ModelConfig(\n", - " provider=\"nvidia\", model=\"nvidia/nemotron-3-nano-30b-a3b\",\n", + " provider=\"nvidia\", model=\"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\",\n", " temperature=0.0, api_key_env=\"NVIDIA_API_KEY\",\n", ")\n", "\n", diff --git a/tests/adapters/test_deepagents.py b/tests/adapters/test_deepagents.py index e8b316cfb..551e9dbd6 100644 --- a/tests/adapters/test_deepagents.py +++ b/tests/adapters/test_deepagents.py @@ -158,7 +158,7 @@ def make(tmp_path: Path, *, runtime_id: str = "run-1") -> dict[str, Any]: "models": { "default": { "provider": "nvidia", - "model": "nvidia/nemotron-3-nano-30b-a3b", + "model": "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning", "api_key_env": "NVIDIA_API_KEY", "base_url": "https://integrate.api.nvidia.com/v1", } @@ -268,7 +268,7 @@ async def test_single_invocation_normalizes_response_usage_and_thread( assert output["harness"] == "deepagents" assert output["mode"] == "deepagents" - assert output["model"] == "nvidia/nemotron-3-nano-30b-a3b" + assert output["model"] == "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning" assert output["response"] == "reply to hello" assert output["message_count"] == 2 assert output["usage"] == { diff --git a/tests/e2e/test_hermes_config_mapping.py b/tests/e2e/test_hermes_config_mapping.py index 7f6c0d70b..17e8c4d47 100644 --- a/tests/e2e/test_hermes_config_mapping.py +++ b/tests/e2e/test_hermes_config_mapping.py @@ -32,7 +32,7 @@ def test_hermes_config_mapping(tmp_path: Path): assert config["model"] == { "provider": "nvidia", - "default": "nvidia/nemotron-3-nano-30b-a3b", + "default": "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning", "base_url": "https://integrate.api.nvidia.com/v1", } assert config["terminal"]["backend"] == "local" @@ -59,7 +59,7 @@ def payload(tmpdir: str) -> dict: "models": { "default": { "provider": "nvidia", - "model": "nvidia/nemotron-3-nano-30b-a3b", + "model": "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning", "api_key_env": "NVIDIA_API_KEY", "base_url": "https://integrate.api.nvidia.com/v1", } diff --git a/tests/e2e/test_hermes_e2e.py b/tests/e2e/test_hermes_e2e.py index 80d82f6f4..50537bb33 100644 --- a/tests/e2e/test_hermes_e2e.py +++ b/tests/e2e/test_hermes_e2e.py @@ -162,7 +162,7 @@ async def test_artifacts(self): hermes_config = yaml.safe_load(hermes_config_path.read_text(encoding="utf-8")) assert hermes_config["model"]["provider"] == "nvidia" - assert hermes_config["model"]["default"] == "nvidia/nemotron-3-nano-30b-a3b" + assert hermes_config["model"]["default"] == "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning" assert hermes_config["model"]["base_url"] == f"{self.api_server}/v1" assert hermes_config["plugins"]["enabled"] == ["observability/nemo_relay"] assert output["hermes_native_config"]["plugins"] == ["observability/nemo_relay"] @@ -223,7 +223,7 @@ async def test_atof_artifacts(self): assert len(atof_records) == 7 assert all( - record["metadata"]["model"] == "nvidia/nemotron-3-nano-30b-a3b" + record["metadata"]["model"] == "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning" and record["metadata"]["platform"] == self.atof_platform for record in atof_records ) @@ -254,12 +254,12 @@ async def test_atif_artifacts(self): assert first_step["message"] == "Reply with exactly: relay ok" assert ( first_step["extra"]["llm_request"]["model"] - == "nvidia/nemotron-3-nano-30b-a3b" + == "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning" ) last_step = steps[-1] assert last_step["source"] == "agent" assert last_step["message"] == self.output["response"] - assert last_step["model_name"] == "nvidia/nemotron-3-nano-30b-a3b" + assert last_step["model_name"] == "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning" assert last_step["extra"]["invocation"]["framework"] == "nemo_relay" assert last_step["extra"]["invocation"]["status"] == "completed" diff --git a/tests/integrations/test_harbor_runner.py b/tests/integrations/test_harbor_runner.py index 70ea4fe1d..6186db9e0 100644 --- a/tests/integrations/test_harbor_runner.py +++ b/tests/integrations/test_harbor_runner.py @@ -314,7 +314,7 @@ def test_harbor_calculator_documents_explicit_cli_commands(): assert "fabric_config_factory" not in swebench assert "fabric_harness_settings" not in calculator assert "fabric_workspace=/app" in calculator - assert "--model nvidia/nemotron-3-nano-30b-a3b" in calculator + assert "--model nvidia/nemotron-3-nano-omni-30b-a3b-reasoning" in calculator assert "--model anthropic/claude-sonnet-4-5" in calculator assert 'CALCULATOR_DIR="$PWD/examples/harbor/calculator"' in calculator assert "calculator/README.md" in landing @@ -396,7 +396,7 @@ def test_harbor_relay_telemetry_exports_direct_atof_and_atif(): config = build_harbor_config( adapter_id="nvidia.fabric.hermes", workspace="/app", - model_name="nvidia/nemotron-3-nano-30b-a3b", + model_name="nvidia/nemotron-3-nano-omni-30b-a3b-reasoning", telemetry="relay", ) assert config.harness.settings == {} @@ -446,7 +446,7 @@ def test_swebench_matrix_translates_harbor_inputs_to_typed_config(tmp_path: Path adapter_id="nvidia.fabric.hermes", workspace="/testbed", telemetry="relay", - model_name="nvidia/nemotron-3-nano-30b-a3b", + model_name="nvidia/nemotron-3-nano-omni-30b-a3b-reasoning", skills_dir="/harbor/skills", mcp_servers=tuple( HarborMcpServer.model_validate(server.model_dump(mode="python")) @@ -478,7 +478,7 @@ def test_swebench_matrix_translates_harbor_inputs_to_typed_config(tmp_path: Path assert base.mcp is None assert base.tools is None assert base.telemetry is None - assert relay.models["default"].model == "nvidia/nemotron-3-nano-30b-a3b" + assert relay.models["default"].model == "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning" assert relay.skills is not None assert relay.skills.paths == ["/harbor/skills"] assert relay.mcp is not None From 12442031b142db6fbeddc23c61656df4d84719da Mon Sep 17 00:00:00 2001 From: David Gardner <96306125+dagardner-nv@users.noreply.github.com> Date: Fri, 31 Jul 2026 09:24:47 -0700 Subject: [PATCH 2/3] docs: Incorporate changes from PR #89 (#165) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### Overview * Incorporate some of the changes from PR #89 * The library has moved/changed a bit since then, as we are no longer promoting the CLI as a new-user tool, and have removed it from our examples #### Where should the reviewer start? * `docs/about-nemo-fabric/overview.mdx` - [x] I confirm this contribution is my own work, or I have the right to submit it under this project's license. - [x] I searched existing issues and open pull requests, and this does not duplicate existing work. ## Summary by CodeRabbit * **Documentation** * Refreshed the NeMo Fabric overview with stronger branded messaging, improved interface selection guidance, a simplified “Core Workflow,” and a “Learn More” resource list. * Renamed the installation guide to “NVIDIA NeMo Fabric Installation” for clearer labeling. * Updated the quickstart to use the current template library version and adjusted spacing around the “Next Steps” section. Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah) - Lawrence Lane (https://github.com/lbliii) URL: https://github.com/NVIDIA/NeMo-Fabric/pull/165 --- docs/about-nemo-fabric/overview.mdx | 160 +++++++--------------------- docs/getting-started/install.mdx | 2 +- docs/getting-started/quickstart.mdx | 2 + tests/docs/test_python_api_docs.py | 32 +++--- 4 files changed, 57 insertions(+), 139 deletions(-) diff --git a/docs/about-nemo-fabric/overview.mdx b/docs/about-nemo-fabric/overview.mdx index 3aeba8962..4b728685e 100644 --- a/docs/about-nemo-fabric/overview.mdx +++ b/docs/about-nemo-fabric/overview.mdx @@ -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 - + Construct a complete, versioned `FabricConfig` in Python. Applications create variants with ordinary functions and typed copies. - + Plan and invoke different harnesses through one Rust core, CLI, and Python SDK instead of embedding harness launch logic in every consumer. - + Resolve configs, inspect capabilities, run single-invocation jobs, and hold multi-turn runtimes with typed requests, plans, handles, and results. - + Collect output, errors, lifecycle events, artifact manifests, and telemetry references in stable contracts suitable for platforms and evaluations. -## 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 | +| --- | --- | --- | +| 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 ```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 - - - Resolve, plan, diagnose, run, and start stateful runtimes. - - - Invoke multiple ordered turns and stop runtime handles safely. - - - Consume live, raw NeMo Relay ATOF records and retrieve the terminal run result. - - - Explore all mutable config objects and immutable request, plan, result, - artifact, telemetry, and runtime models. - - - Handle config, capability, lifecycle, state, and native-extension failures. - - +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. +- **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. diff --git a/docs/getting-started/install.mdx b/docs/getting-started/install.mdx index f0a6aa9cd..c76f76fed 100644 --- a/docs/getting-started/install.mdx +++ b/docs/getting-started/install.mdx @@ -1,5 +1,5 @@ --- -title: "Install NVIDIA NeMo Fabric" +title: "NVIDIA NeMo Fabric Installation" description: "Install guide." --- {/* SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. diff --git a/docs/getting-started/quickstart.mdx b/docs/getting-started/quickstart.mdx index 9a656b0a5..8b1e3bd3f 100644 --- a/docs/getting-started/quickstart.mdx +++ b/docs/getting-started/quickstart.mdx @@ -1,6 +1,7 @@ --- title: "NVIDIA NeMo Fabric Quickstart" description: "Get started with NVIDIA NeMo Fabric." +template-library-version: "1.0.0" --- {/* SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. SPDX-License-Identifier: Apache-2.0 */} @@ -68,4 +69,5 @@ A more detailed version of this example is available as a [Jupyter Notebook](htt at [`examples/notebooks/01_quickstart.ipynb`](https://github.com/NVIDIA/NeMo-Fabric/blob/main/examples/notebooks/01_quickstart.ipynb). ## Next Steps + - [Python SDK](../sdk/python.mdx) diff --git a/tests/docs/test_python_api_docs.py b/tests/docs/test_python_api_docs.py index 503d7c938..3f85fbb1c 100644 --- a/tests/docs/test_python_api_docs.py +++ b/tests/docs/test_python_api_docs.py @@ -32,6 +32,8 @@ ROOT = Path(__file__).resolve().parents[2] REFERENCE_DIR = ROOT / "docs" / "reference" / "api" / "python-library-reference" LANDING_PAGE = ROOT / "docs" / "about-nemo-fabric" / "overview.mdx" +INSTALL_PAGE = ROOT / "docs" / "getting-started" / "install.mdx" +QUICKSTART_PAGE = ROOT / "docs" / "getting-started" / "quickstart.mdx" NAVIGATION = ROOT / "docs" / "index.yml" MODULE_SLUGS = { "nemo_fabric.client": "/reference/api/python-library-reference/client", @@ -354,33 +356,33 @@ def test_generated_module_and_class_headings_have_blank_lines(): def test_landing_page_routes_new_users_through_the_product() -> None: landing = LANDING_PAGE.read_text(encoding="utf-8") + installation = INSTALL_PAGE.read_text(encoding="utf-8") + quickstart = QUICKSTART_PAGE.read_text(encoding="utf-8") navigation = NAVIGATION.read_text(encoding="utf-8") assert " - section: API\n" in navigation assert " - section: APIs\n" not in navigation + assert 'title: "NVIDIA NeMo Fabric Documentation"' in landing + assert 'title: "NVIDIA NeMo Fabric Installation"' in installation + assert 'title: "NVIDIA NeMo Fabric Quickstart"' in quickstart + assert 'template-library-version: "1.0.0"' in landing + assert 'template-library-version: "1.0.0"' in quickstart for heading in ( "## What NeMo Fabric Gives You", - "## How NeMo Fabric Fits", - "## Quick Start", "## Choose Your Interface", "## Core Workflow", - "## Next Steps", + "## Learn More", ): assert heading in landing for destination in ( - "/reference/api/python-library-reference/client", - "/reference/api/python-library-reference/runtime", - "/reference/api/python-library-reference/streaming", - "/reference/api/python-library-reference/types", - "/reference/api/python-library-reference/errors", + "../getting-started/install.mdx", + "../getting-started/quickstart.mdx", + "../experimentation/cli.mdx", + "../sdk/python.mdx", + "../reference/api/python-library-reference/nemo_fabric.client.md", + "../reference/api/python-library-reference/nemo_fabric.runtime.md", + "../reference/api/python-library-reference/nemo_fabric.streaming.md", ): assert destination in landing - - quick_start = landing.split("## Quick Start", maxsplit=1)[1].split( - "## Choose Your Interface", maxsplit=1 - )[0] - assert "client.plan(" not in quick_start - assert "client.doctor(" not in quick_start - assert "/sdk/python" in quick_start From 11752276b04c409c1a4bbacb2a41ac15f2de239c Mon Sep 17 00:00:00 2001 From: David Gardner <96306125+dagardner-nv@users.noreply.github.com> Date: Fri, 31 Jul 2026 12:20:08 -0700 Subject: [PATCH 3/3] chore: Misc release prep (#163) #### Overview * Remove references to alpha and RC tags * Replace buildwithfern.com links with docs.nvidia.com #### Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to) - Closes FABRIC-135 - [x] I confirm this contribution is my own work, or I have the right to submit it under this project's license. - [x] I searched existing issues and open pull requests, and this does not duplicate existing work. ## Summary by CodeRabbit * **Documentation** * Updated NeMo Fabric and NeMo Relay links across installation guides, package pages, project metadata, and examples to point to the official NVIDIA documentation site. * Refreshed installation instructions to reference the stable `0.1.0` package release instead of a pre-release version. * **Tests** * Updated integration expectations to match the stable package version. Authors: - David Gardner (https://github.com/dagardner-nv) Approvers: - Zhongxuan (Daniel) Wang (https://github.com/zhongxuanwang-nv) URL: https://github.com/NVIDIA/NeMo-Fabric/pull/163 --- adapters/claude/README.md | 6 +++--- adapters/claude/pypi.md | 4 ++-- adapters/claude/pyproject.toml | 2 +- adapters/codex/README.md | 4 ++-- adapters/codex/pypi.md | 4 ++-- adapters/codex/pyproject.toml | 2 +- adapters/common/README.md | 2 +- adapters/common/pypi.md | 2 +- adapters/common/pyproject.toml | 2 +- adapters/deepagents/README.md | 2 +- adapters/deepagents/pypi.md | 2 +- adapters/deepagents/pyproject.toml | 2 +- adapters/hermes/README.md | 2 +- adapters/hermes/pypi.md | 2 +- adapters/hermes/pyproject.toml | 2 +- examples/harbor/swebench/README.md | 4 +--- pypi.md | 4 ++-- pyproject.toml | 2 +- python/README.md | 2 +- python/pypi.md | 2 +- python/pyproject.toml | 2 +- tests/integrations/test_harbor_runner.py | 2 +- 22 files changed, 28 insertions(+), 30 deletions(-) diff --git a/adapters/claude/README.md b/adapters/claude/README.md index f40429def..e809ac0cf 100644 --- a/adapters/claude/README.md +++ b/adapters/claude/README.md @@ -24,7 +24,7 @@ The following table shows which components each installation provides: For split runtime and adapter environments, configure `ADAPTER_PYTHON` and use matching NeMo Fabric release versions. Refer to the -[installation guide](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/getting-started/install#install-an-adapter-and-harness-without-the-runtime). +[installation guide](https://docs.nvidia.com/nemo/fabric/getting-started/install#install-an-adapter-and-harness-without-the-runtime). The `full` extra is equivalent to `harness`. Relay is optional for ordinary runs. Relay telemetry and `Runtime.invoke_stream()` require the external CLI @@ -58,7 +58,7 @@ Unset unused `ANTHROPIC_API_KEY` and `ANTHROPIC_AUTH_TOKEN` variables before using WIF. Anthropic credential resolution treats an empty variable as selected, so an empty API credential prevents fallback to a federation profile. -Refer to the [Claude adapter authentication guide](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/integrations/harness/claude) +Refer to the [Claude adapter authentication guide](https://docs.nvidia.com/nemo/fabric/integrations/harness-integrations/claude-code) for mode selection, required WIF variables, and the Relay boundary. Package installation is verified by the adapter wheel and module-entrypoint tests. @@ -122,7 +122,7 @@ by the SDK and is not persisted as a NeMo Fabric artifact. Relay requires a separately installed NeMo Relay 0.6.x CLI on `PATH`; the Python `nemo-relay` package does not provide the executable. Follow the -[NeMo Relay installation instructions](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/getting-started/install#install-nemo-relay). +[NeMo Relay installation instructions](https://docs.nvidia.com/nemo/fabric/getting-started/install#install-nemo-relay). Enable Relay through the normalized NeMo Fabric configuration: diff --git a/adapters/claude/pypi.md b/adapters/claude/pypi.md index a214272c4..a9411a830 100644 --- a/adapters/claude/pypi.md +++ b/adapters/claude/pypi.md @@ -25,6 +25,6 @@ Installation can be performed using the `nemo-fabric` meta package with the `cla The `full` extra is equivalent to `harness`. NeMo Relay is optional for ordinary runs. NeMo Relay telemetry and streaming require the `nemo-relay` CLI tool. -Refer to the [NeMo Relay installation guide](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/getting-started/install#nemo-relay-cli) for instructions. +Refer to the [NeMo Relay installation guide](https://docs.nvidia.com/nemo/fabric/getting-started/install#nemo-relay-cli) for instructions. -Refer to the [installation guide](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/getting-started/install) for more details. +Refer to the [installation guide](https://docs.nvidia.com/nemo/fabric/getting-started/install) for more details. diff --git a/adapters/claude/pyproject.toml b/adapters/claude/pyproject.toml index 22bdceec2..ec6b1b2c4 100644 --- a/adapters/claude/pyproject.toml +++ b/adapters/claude/pyproject.toml @@ -41,7 +41,7 @@ full = [ Repository = "https://github.com/NVIDIA/NeMo-Fabric" Homepage = "https://github.com/NVIDIA/NeMo-Fabric" Issues = "https://github.com/NVIDIA/NeMo-Fabric/issues" -Documentation = "https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric" +Documentation = "https://docs.nvidia.com/nemo/fabric" [tool.setuptools.packages.find] where = ["src"] diff --git a/adapters/codex/README.md b/adapters/codex/README.md index ba1a7e880..a073a231b 100644 --- a/adapters/codex/README.md +++ b/adapters/codex/README.md @@ -23,7 +23,7 @@ The following table shows which components each installation provides: For an environment-managed SDK, use `openai-codex==0.144.4`. For split runtime and adapter environments, configure `ADAPTER_PYTHON` and use matching NeMo Fabric release versions. Refer to the -[installation guide](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/getting-started/install#install-an-adapter-and-harness-without-the-runtime). +[installation guide](https://docs.nvidia.com/nemo/fabric/getting-started/install#install-an-adapter-and-harness-without-the-runtime). The `full` extra is equivalent to `harness`. Relay is optional for ordinary runs. Relay telemetry and `Runtime.invoke_stream()` require the external CLI @@ -147,7 +147,7 @@ Codex state variables, the selected model's `api_key_env`, and explicit Relay requires a separately installed NeMo Relay 0.6.x CLI on `PATH`; the Python `nemo-relay` package does not provide the executable. Follow the -[NeMo Relay installation instructions](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/getting-started/install#install-nemo-relay). +[NeMo Relay installation instructions](https://docs.nvidia.com/nemo/fabric/getting-started/install#install-nemo-relay). Enable Relay with `FabricConfig.enable_relay(...)`. The adapter starts the installed `nemo-relay` CLI as a supervised sidecar; do not start the gateway diff --git a/adapters/codex/pypi.md b/adapters/codex/pypi.md index 86bc588a9..a85f2551c 100644 --- a/adapters/codex/pypi.md +++ b/adapters/codex/pypi.md @@ -25,6 +25,6 @@ Installation can be performed using the `nemo-fabric` meta package with the `cod The `full` extra is equivalent to `harness`. NeMo Relay is optional for ordinary runs. NeMo Relay telemetry and streaming require the `nemo-relay` CLI tool. -Refer to the [NeMo Relay installation guide](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/getting-started/install#nemo-relay-cli) for instructions. +Refer to the [NeMo Relay installation guide](https://docs.nvidia.com/nemo/fabric/getting-started/install#nemo-relay-cli) for instructions. -Refer to the [installation guide](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/getting-started/install) for more details. +Refer to the [installation guide](https://docs.nvidia.com/nemo/fabric/getting-started/install) for more details. diff --git a/adapters/codex/pyproject.toml b/adapters/codex/pyproject.toml index 5b2da91a1..75f3b8629 100644 --- a/adapters/codex/pyproject.toml +++ b/adapters/codex/pyproject.toml @@ -41,7 +41,7 @@ full = [ Repository = "https://github.com/NVIDIA/NeMo-Fabric" Homepage = "https://github.com/NVIDIA/NeMo-Fabric" Issues = "https://github.com/NVIDIA/NeMo-Fabric/issues" -Documentation = "https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric" +Documentation = "https://docs.nvidia.com/nemo/fabric" [tool.setuptools.packages.find] where = ["src"] diff --git a/adapters/common/README.md b/adapters/common/README.md index c2f4143e9..aca188bdc 100644 --- a/adapters/common/README.md +++ b/adapters/common/README.md @@ -15,7 +15,7 @@ Install the package directly when developing an adapter: pip install nemo-fabric-adapters-common ``` -Refer to the [NeMo Fabric documentation](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric) +Refer to the [NeMo Fabric documentation](https://docs.nvidia.com/nemo/fabric) for adapter and configuration guidance. Source code is available in the [NVIDIA NeMo Fabric repository](https://github.com/NVIDIA/nemo-fabric/). diff --git a/adapters/common/pypi.md b/adapters/common/pypi.md index 354f67c48..f81299f8e 100644 --- a/adapters/common/pypi.md +++ b/adapters/common/pypi.md @@ -23,6 +23,6 @@ Install the package directly when developing an adapter: pip install nemo-fabric-adapters-common ``` -Refer to the [NeMo Fabric documentation](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric) +Refer to the [NeMo Fabric documentation](https://docs.nvidia.com/nemo/fabric) for adapter and configuration guidance. Source code is available in the [NVIDIA NeMo Fabric repository](https://github.com/NVIDIA/NeMo-Fabric). diff --git a/adapters/common/pyproject.toml b/adapters/common/pyproject.toml index 7b644669f..206a32761 100644 --- a/adapters/common/pyproject.toml +++ b/adapters/common/pyproject.toml @@ -29,7 +29,7 @@ requires-python = ">=3.11" Repository = "https://github.com/NVIDIA/NeMo-Fabric" Homepage = "https://github.com/NVIDIA/NeMo-Fabric" Issues = "https://github.com/NVIDIA/NeMo-Fabric/issues" -Documentation = "https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric" +Documentation = "https://docs.nvidia.com/nemo/fabric" [tool.setuptools.packages.find] where = ["src"] diff --git a/adapters/deepagents/README.md b/adapters/deepagents/README.md index 0fec6010d..378dc700a 100644 --- a/adapters/deepagents/README.md +++ b/adapters/deepagents/README.md @@ -26,7 +26,7 @@ For an environment-managed stack, use `deepagents>=0.6.12,<0.7.0`, `langchain>=1.3,<2.0`, and `langgraph>=1.2,<2.0`. For split runtime and adapter environments, configure `ADAPTER_PYTHON` and use matching NeMo Fabric release versions. Refer to the -[installation guide](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/getting-started/install#install-an-adapter-and-harness-without-the-runtime). +[installation guide](https://docs.nvidia.com/nemo/fabric/getting-started/install#install-an-adapter-and-harness-without-the-runtime). ## Model and Authentication diff --git a/adapters/deepagents/pypi.md b/adapters/deepagents/pypi.md index ee177e1d9..e68ca88f6 100644 --- a/adapters/deepagents/pypi.md +++ b/adapters/deepagents/pypi.md @@ -30,4 +30,4 @@ NeMo Relay is optional for ordinary runs. NeMo Relay telemetry and streaming require one of the installations in the table that includes the NeMo Relay Python package. -Refer to the [installation guide](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/getting-started/install) for more details. +Refer to the [installation guide](https://docs.nvidia.com/nemo/fabric/getting-started/install) for more details. diff --git a/adapters/deepagents/pyproject.toml b/adapters/deepagents/pyproject.toml index 08c2c5091..2e4f71971 100644 --- a/adapters/deepagents/pyproject.toml +++ b/adapters/deepagents/pyproject.toml @@ -53,7 +53,7 @@ full = [ Repository = "https://github.com/NVIDIA/NeMo-Fabric" Homepage = "https://github.com/NVIDIA/NeMo-Fabric" Issues = "https://github.com/NVIDIA/NeMo-Fabric/issues" -Documentation = "https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric" +Documentation = "https://docs.nvidia.com/nemo/fabric" [tool.setuptools.packages.find] where = ["src"] diff --git a/adapters/hermes/README.md b/adapters/hermes/README.md index 66ea66a4d..dee7644ab 100644 --- a/adapters/hermes/README.md +++ b/adapters/hermes/README.md @@ -24,7 +24,7 @@ table shows which components each installation provides: For an environment-managed harness, use `hermes-agent>=0.17.0`. For split runtime and adapter environments, configure `ADAPTER_PYTHON` and use matching NeMo Fabric release versions. Refer to the -[installation guide](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/getting-started/install#install-an-adapter-and-harness-without-the-runtime). +[installation guide](https://docs.nvidia.com/nemo/fabric/getting-started/install#install-an-adapter-and-harness-without-the-runtime). Relay is optional for ordinary runs. Relay telemetry and `Runtime.invoke_stream()` require one of the installations in the table that diff --git a/adapters/hermes/pypi.md b/adapters/hermes/pypi.md index 1758da49f..05c75d799 100644 --- a/adapters/hermes/pypi.md +++ b/adapters/hermes/pypi.md @@ -31,4 +31,4 @@ NeMo Relay is optional for ordinary runs. NeMo Relay telemetry and streaming require one of the installations in the table that includes the NeMo Relay Python package. -Refer to the [installation guide](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/getting-started/install) for more details. +Refer to the [installation guide](https://docs.nvidia.com/nemo/fabric/getting-started/install) for more details. diff --git a/adapters/hermes/pyproject.toml b/adapters/hermes/pyproject.toml index 5e4fd5fac..1f5459ee6 100644 --- a/adapters/hermes/pyproject.toml +++ b/adapters/hermes/pyproject.toml @@ -45,7 +45,7 @@ full = [ Repository = "https://github.com/NVIDIA/NeMo-Fabric" Homepage = "https://github.com/NVIDIA/NeMo-Fabric" Issues = "https://github.com/NVIDIA/NeMo-Fabric/issues" -Documentation = "https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric" +Documentation = "https://docs.nvidia.com/nemo/fabric" [tool.setuptools.packages.find] where = ["src"] diff --git a/examples/harbor/swebench/README.md b/examples/harbor/swebench/README.md index fbbc55f67..2210649f2 100644 --- a/examples/harbor/swebench/README.md +++ b/examples/harbor/swebench/README.md @@ -22,14 +22,12 @@ then continue in the same shell. Export `NVIDIA_API_KEY` for Hermes Agent runs o Build the standalone Relay executable that will be uploaded into the isolated task container for the Claude walkthrough: -> **TEMP — replace the pre-release alpha tag with a stable release once available.** - ```bash cd "$(git rev-parse --show-toplevel)" export FABRIC_AGENT='nemo_fabric.integrations.harbor:FabricAgent' export FABRIC_BUNDLE="$PWD/examples/harbor/swebench" -export FABRIC_PACKAGE='nemo-fabric[claude,hermes-agent,relay]==0.1.0a20260724' +export FABRIC_PACKAGE='nemo-fabric[claude,hermes-agent,relay]==0.1.0' export RUNS_DIR="$PWD/.tmp/harbor/fabric-swebench" curl -fsSL https://raw.githubusercontent.com/NVIDIA/NeMo-Relay/main/install.sh | diff --git a/pypi.md b/pypi.md index eef833434..09aa95a9a 100644 --- a/pypi.md +++ b/pypi.md @@ -119,11 +119,11 @@ The LangChain Deep Agents and Hermes Agent adapter packages also provide Claude and Codex require the [`nemo-relay` CLI](https://crates.io/crates/nemo-relay-cli) instead of the NeMo Relay Python package. They do not provide a `relay` extra. Refer to the -[NeMo Relay CLI](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric/getting-started/install#nemo-relay-cli) +[NeMo Relay CLI](https://docs.nvidia.com/nemo/fabric/getting-started/install#nemo-relay-cli) install guide for instructions on installing the CLI tool. ## Learn More -Refer to the [NVIDIA NeMo Fabric documentation](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric) +Refer to the [NVIDIA NeMo Fabric documentation](https://docs.nvidia.com/nemo/fabric) for installation, configuration, and usage guidance. Source code is available in the [NVIDIA NeMo Fabric repository](https://github.com/NVIDIA/nemo-fabric/). diff --git a/pyproject.toml b/pyproject.toml index a3bb57263..998a983b4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ dependencies = [ Repository = "https://github.com/NVIDIA/NeMo-Fabric" Homepage = "https://github.com/NVIDIA/NeMo-Fabric" Issues = "https://github.com/NVIDIA/NeMo-Fabric/issues" -Documentation = "https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric" +Documentation = "https://docs.nvidia.com/nemo/fabric" [tool.setuptools] packages = [] diff --git a/python/README.md b/python/README.md index 5bf14c44b..79630b333 100644 --- a/python/README.md +++ b/python/README.md @@ -17,7 +17,7 @@ The package exposes the `nemo_fabric` Python module for typed agent configuration, validation, run planning, runtime lifecycle management, normalized results, artifacts, diagnostics, and telemetry references. -Refer to the [NeMo Fabric documentation](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric) +Refer to the [NeMo Fabric documentation](https://docs.nvidia.com/nemo/fabric) for installation and usage guidance. Source code is available in the [NVIDIA NeMo Fabric repository](https://github.com/NVIDIA/nemo-fabric/). diff --git a/python/pypi.md b/python/pypi.md index 19960770a..6d339a2ad 100644 --- a/python/pypi.md +++ b/python/pypi.md @@ -30,6 +30,6 @@ The package exposes the `nemo_fabric` Python module for typed agent configuration, validation, run planning, runtime lifecycle management, normalized results, artifacts, diagnostics, and telemetry references. -Refer to the [NeMo Fabric documentation](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric) +Refer to the [NeMo Fabric documentation](https://docs.nvidia.com/nemo/fabric) for installation and usage guidance. Source code is available in the [NVIDIA NeMo Fabric repository](https://github.com/NVIDIA/NeMo-Fabric). diff --git a/python/pyproject.toml b/python/pyproject.toml index 4f720e09f..08ab4006e 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -31,7 +31,7 @@ dynamic = ["version"] Repository = "https://github.com/NVIDIA/NeMo-Fabric" Homepage = "https://github.com/NVIDIA/NeMo-Fabric" Issues = "https://github.com/NVIDIA/NeMo-Fabric/issues" -Documentation = "https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric" +Documentation = "https://docs.nvidia.com/nemo/fabric" [tool.maturin] manifest-path = "../crates/fabric-python/Cargo.toml" diff --git a/tests/integrations/test_harbor_runner.py b/tests/integrations/test_harbor_runner.py index 6186db9e0..0fdd64118 100644 --- a/tests/integrations/test_harbor_runner.py +++ b/tests/integrations/test_harbor_runner.py @@ -330,7 +330,7 @@ def test_harbor_calculator_documents_explicit_cli_commands(): assert "raw.githubusercontent.com/NVIDIA/NeMo-Relay/main/install.sh" in swebench assert ( "FABRIC_PACKAGE=" - "'nemo-fabric[claude,hermes-agent,relay]==0.1.0a20260724'" + "'nemo-fabric[claude,hermes-agent,relay]==0.1.0'" in swebench ) assert "PIP_FIND_LINKS" not in swebench