This release is a pre-release and may not be stable for production use.
NVIDIA NeMo Fabric Hermes Agent Adapter
This adapter runs Hermes Agent through its Python SDK.
Install
Hermes Agent and this adapter require Python 3.11 through 3.13. The following table shows which components each installation provides:
| Installation | Runtime | Adapter | Harness | NeMo Relay Python Package |
|---|---|---|---|---|
pip install "nemo-fabric[hermes-agent]" |
Yes | Yes | Yes | No |
pip install "nemo-fabric[hermes-agent,relay]" |
Yes | Yes | Yes | Yes |
pip install "nemo-fabric-adapters-hermes[harness]" |
No | Yes | Yes | No |
pip install "nemo-fabric-adapters-hermes[full]" |
No | Yes | Yes | Yes |
pip install "nemo-fabric-adapters-hermes[relay]" |
No | Yes | No | Yes |
pip install nemo-fabric-adapters-hermes |
No | Yes | No | No |
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.
Relay is optional for ordinary runs. Relay telemetry and
Runtime.invoke_stream() require one of the installations in the table that
includes the NeMo Relay Python package.
What It Maps
The adapter receives a normalized payload from NeMo Fabric and materializes a native Hermes Agent configuration for:
- selected model provider, model name, base URL, and temperature through
models; instructions.systemandruntime.max_turns;- workspace and explicit environment variables through
environment; - invocation timeout through
runtime.timeout_seconds; - NeMo Fabric skills as external skill directories for Hermes Agent;
- NeMo Fabric MCP servers as Hermes Agent MCP server config;
tools.enabledandtools.blockedas Hermes-native toolset selection and blocking policy;- optional NeMo Relay telemetry plugin configuration.
Tool selectors are Hermes toolset names because that is the native policy
surface Hermes exposes. The 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. NeMo Fabric adds observability/nemo_relay when Relay telemetry is enabled. |
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:
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.
The adapter derives Hermes state from the NeMo Fabric artifact root and creates
a child under runtimes/<runtime_id>, so invocations in one NeMo Fabric runtime
share state without sharing config or the session database with another
runtime.
Execution Model
Each NeMo Fabric runtime starts one local adapter host, constructs one Hermes Agent
AIAgent, and opens one SessionDB. Ordered Runtime.invoke(...) calls reuse
those native objects and pass the prior turn's returned transcript back to
run_conversation(...). Runtime stop calls the agent's idempotent close()
method, closes the session database, and releases the Relay plugin context when
enabled.
Hermes Agent Relay telemetry is finalized after each NeMo Fabric invocation so its ATOF
and ATIF artifacts are complete when that invocation returns. This telemetry
boundary does not recreate the AIAgent or SessionDB.
Maintaining The Adapter
Keep fabric-adapter.json aligned with the Python implementation:
contract_versionmust match the adapter contract supported by NeMo Fabric core.adapter_idis the stable id selected byharness.adapter_id.adapter_kindispythonbecause NeMo Fabric can invoke it through Python.runner.modulenames the persistent host module that NeMo Fabric invokes withpython -m.requirementssupplies dependency checks to NeMo Fabric diagnostics; keep required env vars, binaries, or packages current.config.acceptsmust match the NeMo Fabric sections this adapter maps into Hermes Agent.telemetry.providersdeclares provider-specific outputs and integration modes the adapter can produce or forward.
Do not put end-user agent settings in this directory. Users vary harness,
model, skills, MCP, tools, telemetry, and runtime behavior through complete
typed FabricConfig values and ordinary Python composition. The adapter
descriptor describes adapter capabilities; it is not an agent configuration.
Add descriptor fields only when NeMo Fabric core or the SDK actually uses them.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file nemo_fabric_adapters_hermes-0.1.0rc6.tar.gz.
File metadata
- Download URL: nemo_fabric_adapters_hermes-0.1.0rc6.tar.gz
- Upload date:
- Size: 7.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
484d88159beeebc9e41facc1a033bf820c42ec6fe530fc62550011b715844c85
|
|
| MD5 |
3d1868ce2449d696592a21840625180f
|
|
| BLAKE2b-256 |
39de3418eee6dab4bc3b50a26af2a7d548bd7834f85224b9712420b32b6d3705
|