diff --git a/README.md b/README.md index 32f78c2b..11fe1d15 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/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 34e4ebcf..b980d8a9 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 478f62d9..f3fb1a59 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 fbb27f89..0a3bc1f0 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 44689d61..70de4a1b 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 edf647fd..1d49d4a7 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/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/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/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/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 ebd04698..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 */} @@ -53,7 +54,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", ) @@ -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/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 a8e5e4e5..d6f8556a 100644 --- a/examples/harbor/swebench/README.md +++ b/examples/harbor/swebench/README.md @@ -73,7 +73,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" \ @@ -139,7 +139,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" \ @@ -230,7 +230,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/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 adbc776b..edfb23b3 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/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/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 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 251c3d07..60b2f8e2 100644 --- a/tests/integrations/test_harbor_runner.py +++ b/tests/integrations/test_harbor_runner.py @@ -316,7 +316,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 @@ -398,7 +398,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 == {} @@ -448,7 +448,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")) @@ -480,7 +480,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