Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 10 additions & 22 deletions adapters/claude/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All
SPDX-License-Identifier: Apache-2.0
-->

# Claude Adapter
# NVIDIA NeMo Fabric Claude Adapter

The `nvidia.fabric.claude` adapter uses the official Claude Agent SDK for
Python behind Fabric's normalized invocation contract. The SDK is an
Expand All @@ -15,9 +15,16 @@ another executable.

## Install

To install just the Claude adapter by itself:

```bash
pip install "nemo-fabric[claude]"
```

To install just the Claude adapter along with the NeMo Fabric Runtime:

```bash
just wheels
python -m pip install --find-links dist "nemo-fabric[claude]"
pip install "nemo-fabric[claude, runtime]"
Comment thread
dagardner-nv marked this conversation as resolved.
```

## Authentication
Expand Down Expand Up @@ -207,22 +214,3 @@ assert first.output["session_id"] == second.output["session_id"]
Resume requires the same workspace and Claude state directory on the same host.
The Fabric-to-Claude correlation record alone is insufficient if Claude's
underlying transcript store is removed.

## Tests

The default suite uses deterministic mock Claude Code and Relay CLIs and
requires no credentials. Test a current `nemo-relay` CLI with the mock Claude
client, or run the live integrations on an authenticated developer host:

```bash
FABRIC_NEMO_RELAY_COMMAND="$(command -v nemo-relay)" uv run --no-sync pytest tests/e2e/test_claude.py -q -k real_relay_gateway
RUN_FABRIC_CLAUDE_INTEGRATION=1 uv run --no-sync pytest tests/e2e/test_claude.py -q -k live
RUN_FABRIC_CLAUDE_RELAY_INTEGRATION=1 uv run --no-sync pytest tests/e2e/test_claude.py -q -k live_claude_relay
```

The first command uses the mock Claude client and does not require credentials.
Set `FABRIC_TEST_CLAUDE_MODEL` to override the default live-test model,
`claude-sonnet-4-5`.
The live Relay test applies the same semantic artifact contract as Codex: ATOF
must contain structured LLM requests and token usage, and ATIF must contain the
expected agent response.
23 changes: 23 additions & 0 deletions adapters/claude/testing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<!--
SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0
-->

# Claude Adapter Tests

The default suite uses deterministic mock Claude Code and Relay CLIs and
requires no credentials. Test a current `nemo-relay` CLI with the mock Claude
client, or run the live integrations on an authenticated developer host:

```bash
FABRIC_NEMO_RELAY_COMMAND="$(command -v nemo-relay)" uv run --no-sync pytest tests/e2e/test_claude.py -q -k real_relay_gateway
RUN_FABRIC_CLAUDE_INTEGRATION=1 uv run --no-sync pytest tests/e2e/test_claude.py -q -k live
RUN_FABRIC_CLAUDE_RELAY_INTEGRATION=1 uv run --no-sync pytest tests/e2e/test_claude.py -q -k live_claude_relay
Comment thread
dagardner-nv marked this conversation as resolved.
```

The first command uses the mock Claude client and does not require credentials.
Set `FABRIC_TEST_CLAUDE_MODEL` to override the default live-test model,
`claude-sonnet-4-5`.
The live Relay test applies the same semantic artifact contract as Codex: ATOF
must contain structured LLM requests and token usage, and ATIF must contain the
expected agent response.
36 changes: 10 additions & 26 deletions adapters/codex/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All
SPDX-License-Identifier: Apache-2.0
-->

# Codex Adapter
# NVIDIA NeMo Fabric Codex Adapter

The `nvidia.fabric.codex` adapter uses the official Codex Python SDK behind
Fabric's normalized invocation contract. It does not resolve or execute a
Expand All @@ -12,11 +12,16 @@ app-server runtime and typed JSON-RPC protocol.

## Install

Build the local wheels and install the Codex adapter:
To install just the Codex adapter by itself:

```bash
just wheels
python -m pip install --find-links dist "nemo-fabric[codex]"
pip install "nemo-fabric[codex]"
```

To install just the Codex adapter along with the NeMo Fabric Runtime:

```bash
pip install "nemo-fabric[codex, runtime]"
```

## Authentication
Expand Down Expand Up @@ -134,7 +139,7 @@ cargo install --locked --path nemo-relay/crates/cli
```

Removal of this temporary source installation is tracked in
[TODO.md](../../TODO.md#nemo-relay-06x-request-decoding-release).
[TODO.md](https://github.com/NVIDIA/NeMo-Fabric/blob/main/TODO.md#nemo-relay-06x-request-decoding-release).

The `nemo-relay` Python package does not install this executable. Refer to the
[NeMo Relay installation guide](https://docs.nvidia.com/nemo/relay/getting-started/installation)
Expand All @@ -153,24 +158,3 @@ Relay OpenInference provides the semantic chain, LLM, and tool hierarchy with
decoded prompt, response, and token attributes. Prefer Relay OpenInference for
agent-turn inspection.

## Local Validation

Run the unit and opt-in real SDK tests separately:

```bash
uv run pytest tests/adapters/test_codex_adapter.py -q
RUN_FABRIC_CODEX_INTEGRATION=1 uv run pytest tests/e2e/test_codex.py -q
RUN_FABRIC_CODEX_RELAY_INTEGRATION=1 \
FABRIC_TEST_NEMO_RELAY_COMMAND=/path/to/nemo-relay \
uv run pytest tests/e2e/test_codex.py -q
```

Set `FABRIC_TEST_CODEX_BIN=/path/to/codex` on either opt-in command to validate
an explicit app-server override instead of the SDK-pinned runtime.

The SDK test uses the current Codex authentication state and exercises both a
one-shot invocation and multi-turn thread resume. The Relay test additionally
requires an external gateway binary and verifies one-shot and resumed model
responses, stable thread identity, ATOF, and ATIF; gateway startup alone is not
a passing result. The semantic regression also requires decoded LLM request
content, a model, token usage, and the expected agent response in ATIF.
26 changes: 26 additions & 0 deletions adapters/codex/testing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<!--
SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0
-->

# Testing the Codex Adapter

Run the unit and opt-in real SDK tests separately:

```bash
uv run pytest tests/adapters/test_codex_adapter.py -q
RUN_FABRIC_CODEX_INTEGRATION=1 uv run pytest tests/e2e/test_codex.py -q
RUN_FABRIC_CODEX_RELAY_INTEGRATION=1 \
FABRIC_TEST_NEMO_RELAY_COMMAND=/path/to/nemo-relay \
uv run pytest tests/e2e/test_codex.py -q
```

Set `FABRIC_TEST_CODEX_BIN=/path/to/codex` on either opt-in command to validate
an explicit app-server override instead of the SDK-pinned runtime.

The SDK test uses the current Codex authentication state and exercises both a
one-shot invocation and multi-turn thread resume. The Relay test additionally
requires an external gateway binary and verifies one-shot and resumed model
responses, stable thread identity, ATOF, and ATIF; gateway startup alone is not
a passing result. The semantic regression also requires decoded LLM request
content, a model, token usage, and the expected agent response in ATIF.
7 changes: 6 additions & 1 deletion adapters/common/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@ Install the package directly when developing an adapter:
pip install nemo-fabric-adapters-common
```

Alternately through the NeMo Fabric metapackage:

```bash
pip install "nemo-fabric[adapters-common]"
```
Comment thread
dagardner-nv marked this conversation as resolved.

Refer to the [NeMo Fabric documentation](https://nvidia-nemo-fabric.docs.buildwithfern.com/nemo/fabric)
for adapter and configuration guidance. Source code is available in the
[NVIDIA NeMo Fabric repository](https://github.com/NVIDIA/nemo-fabric/).

12 changes: 9 additions & 3 deletions adapters/deepagents/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,22 @@ SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All
SPDX-License-Identifier: Apache-2.0
-->

# LangChain Deep Agents Adapter
# NVIDIA NeMo Fabric LangChain Deep Agents Adapter

Runs a [LangChain Deep Agents](https://github.com/langchain-ai/deepagents) agent
Comment thread
dagardner-nv marked this conversation as resolved.
through Fabric's inline Python adapter lifecycle. The same adapter supports
one-shot, multi-turn, and resumed execution.

Install Fabric with the adapter dependency before running it:
To install just the Deep Agents adapter by itself:

```bash
python3 -m pip install -e ".[deepagents]"
pip install "nemo-fabric[deepagents]"
```

To install just the Deep Agents adapter along with the NeMo Fabric Runtime:

```bash
pip install "nemo-fabric[deepagents, runtime]"
Comment thread
dagardner-nv marked this conversation as resolved.
```

## Model and Authentication
Expand Down
21 changes: 15 additions & 6 deletions adapters/hermes/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,27 @@ SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All
SPDX-License-Identifier: Apache-2.0
-->

# Hermes Agent Adapter
# NVIDIA NeMo Fabric Hermes Agent Adapter

This adapter runs Hermes Agent through its Python SDK.

Fabric invokes the adapter module with `python -m` through the core runtime
lifecycle. The module entry point and the descriptor's callable route use the
same `run(payload: dict) -> dict` implementation.
## Install

To install just the Hermes adapter by itself:

```bash
pip install "nemo-fabric[adapters-hermes]"
```

To install just the Hermes adapter along with the NeMo Fabric Runtime:

```bash
pip install "nemo-fabric[adapters-hermes, runtime]"
```
Comment thread
dagardner-nv marked this conversation as resolved.

## What It Maps

The adapter receives Fabric's normalized payload and materializes Hermes-native
configuration for:
The adapter receives a normalized payload from Fabric and materializes Hermes-native configuration for:

- model provider, model name, base URL, temperature, and token settings;
- workspace and terminal settings;
Expand Down
76 changes: 76 additions & 0 deletions pypi.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<!--
SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0
-->

# NVIDIA NeMo Fabric

NVIDIA NeMo Fabric is a runtime execution layer for agents. It turns multiple
agent harnesses into one configurable, observable lifecycle surface.

NeMo Fabric standardizes how applications configure, launch, invoke, and
collect artifacts from agent harnesses. It provides:

- a versioned, typed configuration contract;
- profile-based configuration for evaluation and ablation runs;
- adapter integrations for harness-specific launch and control;
- a Python SDK backed by a Rust core;
- normalized run results, artifact manifests, and telemetry references.

## Install

Install the core runtime and Python SDK:

```bash
pip install "nemo-fabric[runtime]"
```

To use a supported agent harness, install its adapter extra:

```bash
pip install "nemo-fabric[claude]"
pip install "nemo-fabric[codex]"
pip install "nemo-fabric[deepagents]"
pip install "nemo-fabric[hermes]"
```

Fabric supports running an agent harness in a different virtual environment than the one used to run Fabric itself. This is useful for running agents that have conflicting dependencies with Fabric or other agents.

The adapter must be installed into the virtual environment that the harness is installed in. For this reason adapters intentionally have minimal dependencies.

### Integrations

Harbor integration:

```bash
pip install "nemo-fabric[harbor]"
```
Comment thread
dagardner-nv marked this conversation as resolved.

Relay integration:

```bash
pip install "nemo-fabric[relay]"
Comment thread
dagardner-nv marked this conversation as resolved.
```

### Python Versions

NeMo Fabric supports Python versions 3.11-3.14, however some of the integrations and adapters may have additional requirements. Specifically the Hermes adapter doesn't support Python 3.14 yet, and the Harbor integration requires Python 3.12 or later.

## Core Concepts

- **Agent source:** Provide either an agent package path or a typed
`FabricConfig`.
- **Typed configuration:** Construct configuration in memory with the Python
SDK, or use `agent.yaml` as a portable representation.
- **Profiles:** Vary the harness, model, MCP servers, tools, skills, telemetry,
or environment without editing the base configuration.
- **Adapters:** Select harness-specific integrations with
`harness.adapter_id`.
- **Artifacts:** Receive normalized output, logs, patches, and telemetry
references through an `ArtifactManifest`.

## Learn More

Refer to the [NVIDIA NeMo Fabric documentation](https://nvidia-nemo-fabric.docs.buildwithfern.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/).
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ classifiers = [
]
license = "Apache-2.0"
license-files = ["LICENSE"]
readme = "README.md"
readme = "pypi.md"
requires-python = ">=3.11"
dependencies = []

Expand Down
Loading