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 6a918c5f..2e56b9d5 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 c8bf3cd3..febe640d 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 7973f3d3..f8cfb6a4 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 65f1ac9d..c75e88dc 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 ebd04698..9a656b0a 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 2eb21a6d..06fed665 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 c7c39abc..3a706f28 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 22ffbd7a..04ee3dd1 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 fae53a67..fbbc55f6 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 a288f26b..173a01b5 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 ac661029..24ebaa92 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 e8b316cf..551e9dbd 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 7f6c0d70..17e8c4d4 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 80d82f6f..50537bb3 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 70ea4fe1..6186db9e 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 3aeba896..4b728685 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 f0a6aa9c..c76f76fe 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 9a656b0a..8b1e3bd3 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 503d7c93..3f85fbb1 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 f40429de..e809ac0c 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 a214272c..a9411a83 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 22bdceec..ec6b1b2c 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 ba1a7e88..a073a231 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 86bc588a..a85f2551 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 5b2da91a..75f3b862 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 c2f4143e..aca188bd 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 354f67c4..f81299f8 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 7b644669..206a3276 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 0fec6010..378dc700 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 ee177e1d..e68ca88f 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 08c2c509..2e4f7197 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 66ea66a4..dee7644a 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 1758da49..05c75d79 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 5e4fd5fa..1f5459ee 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 fbbc55f6..2210649f 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 eef83343..09aa95a9 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 a3bb5726..998a983b 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 5bf14c44..79630b33 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 19960770..6d339a2a 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 4f720e09..08ab4006 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 6186db9e..0fdd6411 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