> This page is for NeMo Fabric, version v0.4.0.
> For other versions, use one of these documentation indexes:
> - Latest (v0.4.0) (default): https://docs.nvidia.com/nemo/fabric/latest/llms.txt
> - dev: https://docs.nvidia.com/nemo/fabric/dev/llms.txt
> - v0.5.0: https://docs.nvidia.com/nemo/fabric/v0.5.0/llms.txt
> - v0.4.0: https://docs.nvidia.com/nemo/fabric/v0.4.0/llms.txt
> - v0.3.0: https://docs.nvidia.com/nemo/fabric/v0.3.0/llms.txt
> - v0.2.0: https://docs.nvidia.com/nemo/fabric/v0.2.0/llms.txt
> - v0.1.1: https://docs.nvidia.com/nemo/fabric/v0.1.1/llms.txt
> - v0.1.0: https://docs.nvidia.com/nemo/fabric/v0.1.0/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/fabric/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/fabric/_mcp/server.

# Use the Hermes Agent Adapter

> Install and configure the NeMo Fabric harness integration for Hermes Agent.

The NVIDIA NeMo Fabric `nvidia.fabric.hermes` adapter runs Hermes Agent through
its Python SDK. The adapter maps normalized NeMo Fabric configuration into
Hermes Agent models, tools, skills, Model Context Protocol (MCP) servers,
sessions, and Relay telemetry.

## Install the Adapter

The adapter supports Python 3.11 through 3.14. Hermes Agent 0.20 and later is
no longer installable from PyPI. For ordinary invocations, follow the
[Hermes Agent installation guide](https://hermes-agent.nousresearch.com/docs/installation).
The published Hermes v2026.9.24 release requires Relay 0.8 and does not support
this adapter's Relay telemetry or streaming path.

Install the NeMo Fabric runtime and bare Hermes adapter into the Python
environment that runs Hermes Agent:

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

These packages do not install Hermes Agent. If a different environment runs
NeMo Fabric, install only the bare adapter in the Hermes Agent environment:

```bash
python -m pip install nemo-fabric-adapters-hermes
```

The adapter package provides `relay` and `full` extras for Relay 0.9. Use them
only with a Hermes Agent checkout that supports Relay 0.9; the published release
requires a conflicting Relay version. Neither extra installs Hermes Agent. If
Relay telemetry is enabled with an incompatible Hermes or Relay installation,
the adapter fails at startup with a compatibility error.

For Relay telemetry or streaming in local NeMo Fabric development, run the
following command from the repository root. The recipe checks out the merged,
unreleased Hermes Relay 0.9 revision and creates an isolated Python 3.14
environment with the adapter's `relay` extra. Update it to a compatible release
when one is available:

```bash
just install-hermes-agent
export ADAPTER_PYTHON="$PWD/.venv-hermes/bin/python"
```

For separate environments, set `ADAPTER_PYTHON` in the runtime environment to
the adapter environment's Python interpreter. Use
matching NeMo Fabric release versions for the runtime and adapter package
unless a different pairing has been explicitly validated.

## Configure the Adapter

Select the Hermes Agent harness integration in `HarnessConfig`:

```python
from nemo_fabric import HarnessConfig

harness = HarnessConfig(adapter_id="nvidia.fabric.hermes")
```

Use normalized `FabricConfig` fields to configure the model, workspace, skills,
MCP servers, replacement system instructions, turn limit, and native tool
selectors, and telemetry. The adapter rejects `append` system instructions.

During run-plan resolution, NeMo Fabric Core validates the
`models.<role>.top_p` (from 0 through 1) and positive
`models.<role>.max_tokens` fields against the Hermes descriptor before
runtime startup. Hermes reads these prevalidated values from `AgentConfig`. A
model-level `max_tokens` overrides the harness-level default for the selected
model role.

The Hermes descriptor validates the following `harness.settings` fields:

| Setting             | Type                      | Default              | Description                                                                                                                                                                          |
| ------------------- | ------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `reasoning_config`  | object                    | `{"effort": "none"}` | Configures Hermes model reasoning. The closed object accepts an optional `enabled` boolean and an optional `effort` value of `none`, `minimal`, `low`, `medium`, `high`, or `xhigh`. |
| `plugins_enabled`   | array of nonempty strings | `[]`                 | Enables Hermes plugins by identifier. Relay telemetry uses the generated `plugins.toml`; do not list the removed `observability/nemo_relay` plugin.                                  |
| `save_trajectories` | boolean                   | `false`              | Enables Hermes-native JSONL conversation trajectory saving. This is separate from normalized NeMo Fabric telemetry.                                                                  |
| `max_tokens`        | positive integer          | `512`                | Limits the number of tokens in each Hermes model response.                                                                                                                           |
| `terminal_timeout`  | positive number           | `60`                 | Limits a Hermes terminal operation in seconds.                                                                                                                                       |

For example:

```python
from nemo_fabric import HarnessConfig

harness = HarnessConfig(
    adapter_id="nvidia.fabric.hermes",
    settings={
        "reasoning_config": {"enabled": True, "effort": "medium"},
        "plugins_enabled": ["disk-cleanup"],
        "save_trajectories": True,
        "max_tokens": 1024,
        "terminal_timeout": 90,
    },
)
```

Use `runtime.max_turns` to set the Hermes agent-loop budget. The adapter maps
that normalized field to `AIAgent.max_iterations`; `max_iterations` is not a
Hermes harness setting.

## Understand the Runtime Lifecycle

Each NeMo Fabric runtime creates one Hermes Agent `AIAgent` and one `SessionDB`.
Ordered invocations reuse those objects and the conversation history until the
runtime stops. The adapter finalizes and flushes Relay subscriber output after
each invocation so ATOF and ATIF artifacts are complete when it returns.

For the complete configuration and lifecycle reference, refer to the
[Hermes Agent adapter guide](https://github.com/NVIDIA/NeMo-Fabric/tree/v0.4.0/adapters/python/hermes).