Skip to content

docs: clarify Hermes integration paths#249

Open
mnajafian-nv wants to merge 7 commits into
NVIDIA:mainfrom
mnajafian-nv:docs/hermes-integration-paths
Open

docs: clarify Hermes integration paths#249
mnajafian-nv wants to merge 7 commits into
NVIDIA:mainfrom
mnajafian-nv:docs/hermes-integration-paths

Conversation

@mnajafian-nv

@mnajafian-nv mnajafian-nv commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Overview

Clarifies the current Hermes integration docs so users can choose the right NeMo Relay path without confusing the CLI wrapper, upstream Hermes plugin, and legacy patch-maintenance flow.

  • I confirm this contribution is my own work, or I have the right to submit it under this project's license.
  • I searched existing issues and open pull requests, and this does not duplicate existing work.

Details

  • Clarifies that the nemo-relay hermes CLI path observes Hermes through shell hooks plus gateway-routed provider traffic.
  • Documents that Hermes pre_api_request, post_api_request, and api_request_error are the hook-based LLM lifecycle events, while legacy pre_llm_call and post_llm_call remain private correlation hints.
  • Distinguishes the upstream Hermes observability/nemo_relay plugin from the NeMo Relay CLI wrapper path.
  • Keeps adaptive execution explicitly gated on a compatible Hermes build and NeMo Relay runtime.
  • Reframes third_party/hermes-agent and patches/hermes-agent docs as patch-maintenance material, not the primary user path.

Where should the reviewer start?

Start with docs/nemo-relay-cli/hermes.mdx. That file contains the main contract clarification and path-selection guidance. Then check docs/nemo-relay-cli/basic-usage.mdx for the hook mapping table.

Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)

  • Closes #
    N/A

Summary by CodeRabbit

  • Documentation
    • Clarified which hooks are emitted as events vs retained as private correlation hints.
    • Split agent subscription guidance into LLM lifecycle/correlation hooks and scope/tool/mark hooks.
    • Updated Hermes observability guidance, smoke test, and verification steps to require a standalone gateway and confirm dual export outputs.
    • Revised patch maintenance notes and patch runtime contract wording, plus exporter/output examples.

Signed-off-by: mnajafian-nv <mnajafian@nvidia.com>
@mnajafian-nv mnajafian-nv added this to the 0.4 milestone Jun 10, 2026
@mnajafian-nv mnajafian-nv self-assigned this Jun 10, 2026
@mnajafian-nv mnajafian-nv requested review from a team and lvojtku as code owners June 10, 2026 22:41
@mnajafian-nv mnajafian-nv added the Documentation documentation-related label Jun 10, 2026
@coderabbitai

coderabbitai Bot commented Jun 10, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: f505b4cc-eb40-4382-b799-cc6ba6d69f50

📥 Commits

Reviewing files that changed from the base of the PR and between b62a845 and 09d0cee.

📒 Files selected for processing (1)
  • patches/hermes-agent/notes.md
📜 Recent review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Check / Run
  • GitHub Check: Preview docs
🧰 Additional context used
📓 Path-based instructions (12)
**/*.{md,rst,html,txt}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-brand-terminology.md)

**/*.{md,rst,html,txt}: Always spell NVIDIA in all caps. Do not use Nvidia, nvidia, nVidia, nVIDIA, or NV.
Use an NVIDIA before a noun because the name starts with an 'en' sound.
Do not add a registered trademark symbol after NVIDIA when referring to the company.
Use trademark symbols with product names only when the document type or legal guidance requires them.
Verify official capitalization, spacing, and hyphenation for product names.
Precede NVIDIA product names with NVIDIA on first mention when it is natural and accurate.
Do not rewrite product names for grammar or title-case rules.
Preserve third-party product names according to the owner's spelling.
Include the company name and full model qualifier on first use when it helps identify the model.
Preserve the official capitalization and punctuation of model names.
Use shorter family names only after the full name is established.
Spell out a term on first use and put the acronym in parentheses unless the acronym is widely understood by the intended audience.
Use the acronym on later mentions after it has been defined.
For long documents, reintroduce the full term if readers might lose context.
Form plurals of acronyms with s, not an apostrophe, such as GPUs.
In headings, common acronyms can remain abbreviated. Spell out the term in the first or second sentence of the body.
Common terms such as CPU, GPU, PC, API, and UI usually do not need to be spelled out for developer audiences.

Files:

  • patches/hermes-agent/notes.md
**/*.{md,rst,html}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-brand-terminology.md)

Link the first mention of a product name when the destination helps the reader.

Files:

  • patches/hermes-agent/notes.md
**/*.md

📄 CodeRabbit inference engine (.agents/skills/contribute-integration/SKILL.md)

Documentation must be updated if activation or usage changed

**/*.md: Use title case consistently in technical documentation headings
Avoid quotation marks, ampersands, and exclamation marks in headings
Keep product, event, research, and whitepaper names in their official title case
Use title case for table headers
Do not force social-media sentence case into technical docs
Format code elements, commands, parameters, package names, and expressions in monospace
Format directories, file names, and paths in monospace using backticks
Use angle brackets inside monospace for variables inside paths, such as /home/<username>/.login
Format error messages and strings in quotation marks, keeping literal code strings in code formatting when clearer
Format UI buttons, menus, fields, and labels in bold
Use angle brackets between UI labels for menu paths, such as File > Save As
Use italics for new terms on first use, sparingly and only when introducing the term
Use italics for publication titles
Format keyboard shortcuts in plain text, such as Press Ctrl+Alt+Delete
Use owner/repo link text for GitHub repositories, preferring [NVIDIA/NeMo](link) over prose references like 'the GitHub repo'
Introduce every code block with a complete sentence
Do not make a code block complete the grammar of the previous sentence
Do not continue a sentence after a code block
Use syntax highlighting when the format supports it for code blocks
Avoid the word 'snippet' unless the surrounding docs already use it as a term of art
Keep inline method, function, and class references consistent with nearby docs, omitting empty parentheses for prose readability when no call is shown
Use descriptive anchor text that matches the destination title when possible for links
Avoid raw URLs in running text
Avoid generic anchor text such as 'here,' 'this page,' and 'read more'
Include acronyms in link text when a linked term includes an acronym
Do not link long sentences or multiple sentences
Avoid links ...

Files:

  • patches/hermes-agent/notes.md
**/{docs,examples,**/*.md,*.patch,*.diff,.github,*.sh,*.yaml,*.yml}

📄 CodeRabbit inference engine (.agents/skills/rename-surfaces/SKILL.md)

Update documentation, examples, CI configuration, and patch artifacts when performing rename operations

Files:

  • patches/hermes-agent/notes.md
**/*.{md,rst,txt}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-guide.md)

Spell NVIDIA in all caps. Do not use Nvidia, nvidia, or NV.

Files:

  • patches/hermes-agent/notes.md
**/*.{md,rst}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-guide.md)

**/*.{md,rst}: Format commands, code elements, expressions, package names, file names, and paths as inline code.
Use descriptive link text. Avoid raw URLs and weak anchors such as "here" or "read more."
Use title case consistently for technical documentation headings.
Introduce code blocks, lists, tables, and images with complete sentences.
Write procedures as imperative steps. Keep steps parallel and split long procedures into smaller tasks.
Prefer active voice, present tense, short sentences, contractions, and plain English.
Use can for possibility and reserve may for permission.
Use after for temporal relationships instead of once.
Prefer refer to over see when the wording points readers to another resource.
Avoid culture-specific idioms, unnecessary Latinisms, jokes, and marketing exaggeration in technical docs.
Spell out months in body text, avoid ordinal dates, and use clear time zones.
Spell out whole numbers from zero through nine unless they are technical values, parameters, versions, or UI values.
Use numerals for 10 or greater and include commas in thousands.
Do not add trademark symbols to learning-oriented docs unless the source, platform, or legal guidance explicitly requires them.

Files:

  • patches/hermes-agent/notes.md
{docs/**,README.md,CONTRIBUTING.md,**/*.md}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

Run docs link validation with just docs-linkcheck when links change

Files:

  • patches/hermes-agent/notes.md
{docs/**,README.md,**/Cargo.toml,**/package.json,**/*.md}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

Ensure renamed public surfaces are reflected consistently in manifests and docs for large or public-facing changes

Files:

  • patches/hermes-agent/notes.md
**/*.{md,mdx,py,sh,yaml,yml,toml,json}

📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)

Keep package names, repo references, and build commands current

Files:

  • patches/hermes-agent/notes.md
**/*.{html,md,mdx}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Include SPDX license header in HTML and Markdown files using HTML comment syntax

Files:

  • patches/hermes-agent/notes.md
**/*.{rs,py,js,ts,tsx,jsx,go,sh,toml,yaml,yml,md}

📄 CodeRabbit inference engine (AGENTS.md)

Keep SPDX headers on source, docs, scripts, and configuration files. The project is Apache-2.0.

Files:

  • patches/hermes-agent/notes.md
**

⚙️ CodeRabbit configuration file

**:

AGENTS.md

This file provides guidance to agents, including Claude Code and OpenAI Codex, when working in this repository.

Project Overview

NeMo Relay is a multi-language agent runtime framework for execution scopes, lifecycle events, middleware, plugins, and observability around tool and LLM calls. The core runtime is Rust. Primary supported bindings are Rust, Python, and Node.js. Go, WebAssembly, and the raw C FFI are experimental and source-first.

The shared runtime model is:

  1. Scope stacks decide where work belongs and which scope-local behavior is visible.
  2. Middleware registries decide what guardrails and intercepts run around managed calls.
  3. Plugins install reusable runtime behavior from configuration.
  4. Events record runtime behavior in ATOF form.
  5. Subscribers and exporters consume events in-process or export them to ATIF, OpenTelemetry, OpenInference, or other backends.

Repository Structure

The repository layout separates the Rust runtime, language bindings, documentation,
integration patches, and agent-facing skills.

crates/
  core/       # Rust core runtime crate, published as nemo-relay
  adaptive/   # Adaptive runtime primitives and plugin components
  python/     # PyO3 native extension for the Python package
  ffi/        # Raw C ABI layer used by downstream bindings such as Go
  node/       # NAPI Node.js binding and JavaScript/TypeScript entry points
  wasm/       # wasm-bindgen WebAssembly binding and JS wrappers
python/
  nemo_relay/  # Python wrapper package: scopes, tools, LLM, middleware, typed helpers, plugins, adaptive helpers
  tests/      # Python tests
go/
  nemo_relay/  # Experimental Go CGo binding and tests
fern/         # Fern documentation site
scripts/      # Stable wrappers and helper scripts; build/test/docs entry points live in justfile
third_party/  # P...

Files:

  • patches/hermes-agent/notes.md
🔇 Additional comments (5)
patches/hermes-agent/notes.md (5)

6-9: LGTM!


16-18: LGTM!


98-102: LGTM!


125-125: LGTM!


173-173: Good correction: ATOF→ATIF aligns with patch export behavior.

Line 173 terminology ("patch runtime settings") is consistent with the clarified distinction. Line 214 correctly changes "ATOF export" to "ATIF export" — the patch writes ATIF trajectory JSON on session finalization, confirmed by context snippets showing AtifExporter and ATIF output validation.

Also applies to: 214-214


Walkthrough

This PR updates documentation across three files to clarify Hermes Agent hook observability semantics, hook-to-event mappings, NeMo Relay gateway integration, exporter configuration examples, smoke test workflows, and patch runtime settings. All changes are documentation-only.

Changes

Hermes Agent Observability and Testing

Layer / File(s) Summary
Hook observability mapping reference
docs/nemo-relay-cli/basic-usage.mdx
Runtime mapping description clarified to state that prompt/response/agent-thought and legacy pre_llm_call/post_llm_call hooks are private correlation hints only, not emitted as NeMo Relay events. Hook subscription table reorganized to separate "LLM lifecycle and correlation hooks" from "Scope, tool, and mark hooks"; Hermes row updated to show pre_api_request/post_api_request/api_request_error mapping to NeMo Relay LLM start/end events while pre_llm_call/post_llm_call remain correlation hints.
Hermes observability guidance and configuration examples
docs/nemo-relay-cli/hermes.mdx (lines 10–44, 107–110)
Observability path explanation replaced with wrapper-vs-upstream distinctions; authoritative API hook names identified for LLM lifecycle telemetry; sanitized payload capture vs gateway-routed provider fallback behavior clarified. Example configuration extended with [components.config.atof] block enabling ATOF exporter at .nemo-relay/atof output directory alongside existing atif exporter.
Hermes testing and export validation
docs/nemo-relay-cli/hermes.mdx (lines 163–173, 187–200)
Smoke Test flow updated to require standalone NeMo Relay gateway running on 127.0.0.1:4040 in one terminal first, then Hermes hook-forwarding validation from another terminal. Verify Export instructions updated to confirm both .nemo-relay/atof and .nemo-relay/atif outputs; ATIF boundary description and ATOF continuous raw event stream behavior clarified.
Patch maintenance notes framing and runtime clarification
patches/hermes-agent/notes.md
Patch notes reframed from operator runbook to "Hermes Patch Maintenance Notes" emphasizing source-first compatibility artifact and runtime observation/validation paths. Step 4 updated to specify ~/.hermes/.env as patch runtime settings, explicitly contrasted with upstream observability/nemo_relay plugin configuration. Contract terminology changed from "operator contract" to "patch runtime contract"; smoke validation narrative updated to reference patch runtime settings; trajectory export wording corrected from "ATOF export" to "ATIF export".

🎯 1 (Trivial) | ⏱️ ~4 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title follows Conventional Commits format with type 'docs' and a concise imperative summary under 72 characters.
Description check ✅ Passed The description includes all required sections with substantive content: overview, details, reviewer guidance, and license/duplication confirmations.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

Review ran into problems

🔥 Problems

Stopped waiting for pipeline failures after 30000ms. One of your pipelines takes longer than our 30000ms fetch window to run, so review may not consider pipeline-failure results for inline comments if any failures occurred after the fetch window. Increase the timeout if you want to wait longer or run a @coderabbit review after the pipeline has finished.


Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot added the size:M PR is medium label Jun 10, 2026
@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/nemo-relay-cli/hermes.mdx`:
- Line 29: Update the title text in the docs heading by replacing "Choose The
Right Hermes Path" with "Choose the Right Hermes Path" so the article "the" is
lowercase per title case conventions; locate and edit the header string in the
hermes.mdx file (the heading line containing "Choose The Right Hermes Path").
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: c447d542-30eb-4b79-b1e1-5a2f6193fdbc

📥 Commits

Reviewing files that changed from the base of the PR and between 2fafd3e and b9cc6a2.

⛔ Files ignored due to path filters (1)
  • third_party/README-hermes-agent.md is excluded by !third_party/**
📒 Files selected for processing (4)
  • README.md
  • docs/nemo-relay-cli/basic-usage.mdx
  • docs/nemo-relay-cli/hermes.mdx
  • patches/hermes-agent/notes.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (23)
**/*.{md,rst,html,txt}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-brand-terminology.md)

**/*.{md,rst,html,txt}: Always spell NVIDIA in all caps. Do not use Nvidia, nvidia, nVidia, nVIDIA, or NV.
Use an NVIDIA before a noun because the name starts with an 'en' sound.
Do not add a registered trademark symbol after NVIDIA when referring to the company.
Use trademark symbols with product names only when the document type or legal guidance requires them.
Verify official capitalization, spacing, and hyphenation for product names.
Precede NVIDIA product names with NVIDIA on first mention when it is natural and accurate.
Do not rewrite product names for grammar or title-case rules.
Preserve third-party product names according to the owner's spelling.
Include the company name and full model qualifier on first use when it helps identify the model.
Preserve the official capitalization and punctuation of model names.
Use shorter family names only after the full name is established.
Spell out a term on first use and put the acronym in parentheses unless the acronym is widely understood by the intended audience.
Use the acronym on later mentions after it has been defined.
For long documents, reintroduce the full term if readers might lose context.
Form plurals of acronyms with s, not an apostrophe, such as GPUs.
In headings, common acronyms can remain abbreviated. Spell out the term in the first or second sentence of the body.
Common terms such as CPU, GPU, PC, API, and UI usually do not need to be spelled out for developer audiences.

Files:

  • README.md
  • patches/hermes-agent/notes.md
**/*.{md,rst,html}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-brand-terminology.md)

Link the first mention of a product name when the destination helps the reader.

Files:

  • README.md
  • patches/hermes-agent/notes.md
{README.md,docs/getting-started/**/*.md}

📄 CodeRabbit inference engine (.agents/skills/add-binding-feature/SKILL.md)

Update README.md, docs/getting-started/, or binding-level READMEs if behavior differs by language or usage changed

Files:

  • README.md
**/*.md

📄 CodeRabbit inference engine (.agents/skills/contribute-integration/SKILL.md)

Documentation must be updated if activation or usage changed

**/*.md: Use title case consistently in technical documentation headings
Avoid quotation marks, ampersands, and exclamation marks in headings
Keep product, event, research, and whitepaper names in their official title case
Use title case for table headers
Do not force social-media sentence case into technical docs
Format code elements, commands, parameters, package names, and expressions in monospace
Format directories, file names, and paths in monospace using backticks
Use angle brackets inside monospace for variables inside paths, such as /home/<username>/.login
Format error messages and strings in quotation marks, keeping literal code strings in code formatting when clearer
Format UI buttons, menus, fields, and labels in bold
Use angle brackets between UI labels for menu paths, such as File > Save As
Use italics for new terms on first use, sparingly and only when introducing the term
Use italics for publication titles
Format keyboard shortcuts in plain text, such as Press Ctrl+Alt+Delete
Use owner/repo link text for GitHub repositories, preferring [NVIDIA/NeMo](link) over prose references like 'the GitHub repo'
Introduce every code block with a complete sentence
Do not make a code block complete the grammar of the previous sentence
Do not continue a sentence after a code block
Use syntax highlighting when the format supports it for code blocks
Avoid the word 'snippet' unless the surrounding docs already use it as a term of art
Keep inline method, function, and class references consistent with nearby docs, omitting empty parentheses for prose readability when no call is shown
Use descriptive anchor text that matches the destination title when possible for links
Avoid raw URLs in running text
Avoid generic anchor text such as 'here,' 'this page,' and 'read more'
Include acronyms in link text when a linked term includes an acronym
Do not link long sentences or multiple sentences
Avoid links ...

Files:

  • README.md
  • patches/hermes-agent/notes.md
**/{docs,examples,**/*.md,*.patch,*.diff,.github,*.sh,*.yaml,*.yml}

📄 CodeRabbit inference engine (.agents/skills/rename-surfaces/SKILL.md)

Update documentation, examples, CI configuration, and patch artifacts when performing rename operations

Files:

  • README.md
  • patches/hermes-agent/notes.md
**/*.{md,rst,txt}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-guide.md)

Spell NVIDIA in all caps. Do not use Nvidia, nvidia, or NV.

Files:

  • README.md
  • patches/hermes-agent/notes.md
**/*.{md,rst}

📄 CodeRabbit inference engine (.agents/skills/review-doc-style/assets/nvidia-style-guide.md)

**/*.{md,rst}: Format commands, code elements, expressions, package names, file names, and paths as inline code.
Use descriptive link text. Avoid raw URLs and weak anchors such as "here" or "read more."
Use title case consistently for technical documentation headings.
Introduce code blocks, lists, tables, and images with complete sentences.
Write procedures as imperative steps. Keep steps parallel and split long procedures into smaller tasks.
Prefer active voice, present tense, short sentences, contractions, and plain English.
Use can for possibility and reserve may for permission.
Use after for temporal relationships instead of once.
Prefer refer to over see when the wording points readers to another resource.
Avoid culture-specific idioms, unnecessary Latinisms, jokes, and marketing exaggeration in technical docs.
Spell out months in body text, avoid ordinal dates, and use clear time zones.
Spell out whole numbers from zero through nine unless they are technical values, parameters, versions, or UI values.
Use numerals for 10 or greater and include commas in thousands.
Do not add trademark symbols to learning-oriented docs unless the source, platform, or legal guidance explicitly requires them.

Files:

  • README.md
  • patches/hermes-agent/notes.md
{docs/**,README.md,CONTRIBUTING.md}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

{docs/**,README.md,CONTRIBUTING.md}: For docs-only changes, run targeted checks only if commands, package names, or examples changed. Use just docs for docs-site builds and just docs-linkcheck when links changed
Run docs site build with just docs

Files:

  • README.md
  • docs/nemo-relay-cli/basic-usage.mdx
  • docs/nemo-relay-cli/hermes.mdx
{docs/**,README.md,CONTRIBUTING.md,**/*.md}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

Run docs link validation with just docs-linkcheck when links change

Files:

  • README.md
  • docs/nemo-relay-cli/basic-usage.mdx
  • docs/nemo-relay-cli/hermes.mdx
  • patches/hermes-agent/notes.md
{docs/**,README.md}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

Verify README and docs entry points still match current package names and paths for large or public-facing changes

Files:

  • README.md
  • docs/nemo-relay-cli/basic-usage.mdx
  • docs/nemo-relay-cli/hermes.mdx
{docs/**,examples/**,README.md}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

Verify examples still run with documented commands for large or public-facing changes

Files:

  • README.md
  • docs/nemo-relay-cli/basic-usage.mdx
  • docs/nemo-relay-cli/hermes.mdx
{docs/**,README.md,**/Cargo.toml,**/package.json,**/*.md}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

Ensure renamed public surfaces are reflected consistently in manifests and docs for large or public-facing changes

Files:

  • README.md
  • docs/nemo-relay-cli/basic-usage.mdx
  • docs/nemo-relay-cli/hermes.mdx
  • patches/hermes-agent/notes.md
**/*.{md,mdx,py,sh,yaml,yml,toml,json}

📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)

Keep package names, repo references, and build commands current

Files:

  • README.md
  • docs/nemo-relay-cli/basic-usage.mdx
  • docs/nemo-relay-cli/hermes.mdx
  • patches/hermes-agent/notes.md
**/*.{html,md,mdx}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Include SPDX license header in HTML and Markdown files using HTML comment syntax

Files:

  • README.md
  • docs/nemo-relay-cli/basic-usage.mdx
  • docs/nemo-relay-cli/hermes.mdx
  • patches/hermes-agent/notes.md
README.md

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Update README.md to reflect current workspace members and top-level documentation when workspace structure changes

Files:

  • README.md
**/README.md

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Update relevant crate or package README when that surface changed

Files:

  • README.md
{README.md,docs/**/*.{md,rst,txt},fern/**/*}

📄 CodeRabbit inference engine (.agents/skills/prepare-code-freeze/SKILL.md)

Search and update documentation source for references to the old version in README.md, docs, and fern directories, updating current-version install commands, package examples, and configuration examples to <next-version>

Files:

  • README.md
**/*.{rs,py,js,ts,tsx,jsx,go,sh,toml,yaml,yml,md}

📄 CodeRabbit inference engine (AGENTS.md)

Keep SPDX headers on source, docs, scripts, and configuration files. The project is Apache-2.0.

Files:

  • README.md
  • patches/hermes-agent/notes.md
{docs/**,README.md,CONTRIBUTING.md,RELEASING.md,SECURITY.md}

⚙️ CodeRabbit configuration file

{docs/**,README.md,CONTRIBUTING.md,RELEASING.md,SECURITY.md}: Review documentation for technical accuracy against the current API, command correctness, and consistency across language bindings.
Flag stale examples, missing SPDX headers where required, and instructions that no longer match CI or pre-commit behavior.

Files:

  • README.md
  • docs/nemo-relay-cli/basic-usage.mdx
  • docs/nemo-relay-cli/hermes.mdx
**

⚙️ CodeRabbit configuration file

**:

AGENTS.md

This file provides guidance to agents, including Claude Code and OpenAI Codex, when working in this repository.

Project Overview

NeMo Relay is a multi-language agent runtime framework for execution scopes, lifecycle events, middleware, plugins, and observability around tool and LLM calls. The core runtime is Rust. Primary supported bindings are Rust, Python, and Node.js. Go, WebAssembly, and the raw C FFI are experimental and source-first.

The shared runtime model is:

  1. Scope stacks decide where work belongs and which scope-local behavior is visible.
  2. Middleware registries decide what guardrails and intercepts run around managed calls.
  3. Plugins install reusable runtime behavior from configuration.
  4. Events record runtime behavior in ATOF form.
  5. Subscribers and exporters consume events in-process or export them to ATIF, OpenTelemetry, OpenInference, or other backends.

Repository Structure

The repository layout separates the Rust runtime, language bindings, documentation,
integration patches, and agent-facing skills.

crates/
  core/       # Rust core runtime crate, published as nemo-relay
  adaptive/   # Adaptive runtime primitives and plugin components
  python/     # PyO3 native extension for the Python package
  ffi/        # Raw C ABI layer used by downstream bindings such as Go
  node/       # NAPI Node.js binding and JavaScript/TypeScript entry points
  wasm/       # wasm-bindgen WebAssembly binding and JS wrappers
python/
  nemo_relay/  # Python wrapper package: scopes, tools, LLM, middleware, typed helpers, plugins, adaptive helpers
  tests/      # Python tests
go/
  nemo_relay/  # Experimental Go CGo binding and tests
fern/         # Fern documentation site
scripts/      # Stable wrappers and helper scripts; build/test/docs entry points live in justfile
third_party/  # P...

Files:

  • README.md
  • docs/nemo-relay-cli/basic-usage.mdx
  • docs/nemo-relay-cli/hermes.mdx
  • patches/hermes-agent/notes.md
**/*.mdx

📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)

In MDX files, top-of-file comments must use JSX comment delimiters: {/* to open and */} to close. Do not use HTML comments for MDX SPDX headers.

MDX top-of-file SPDX comments must use {/* ... */} delimiters instead of HTML comment delimiters (Must-Fix)

Files:

  • docs/nemo-relay-cli/basic-usage.mdx
  • docs/nemo-relay-cli/hermes.mdx
docs/**/*.{md,mdx}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Update embedded documentation snippets, patch docs, and binding-support notes if examples or supported bindings changed

Files:

  • docs/nemo-relay-cli/basic-usage.mdx
  • docs/nemo-relay-cli/hermes.mdx
docs/**

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Run just docs or ./scripts/build-docs.sh html to regenerate ignored Fern API reference pages before validation for documentation site changes

Files:

  • docs/nemo-relay-cli/basic-usage.mdx
  • docs/nemo-relay-cli/hermes.mdx
🪛 LanguageTool
docs/nemo-relay-cli/hermes.mdx

[style] ~37-~37: ‘in control of’ might be wordy. Consider a shorter alternative.
Context: ... Observe-only plugin builds keep Hermes in control of LLM and tool execution. Use adaptive e...

(EN_WORDINESS_PREMIUM_IN_CONTROL_OF)

patches/hermes-agent/notes.md

[style] ~18-~18: ‘in control of’ might be wordy. Consider a shorter alternative.
Context: ...bserve-only plugin builds keep Hermes in control of LLM and tool execution. - Adaptive exec...

(EN_WORDINESS_PREMIUM_IN_CONTROL_OF)

🔇 Additional comments (10)
patches/hermes-agent/notes.md (6)

6-28: LGTM!


95-95: LGTM!


97-99: LGTM!


122-122: LGTM!


170-170: LGTM!


211-211: LGTM!

README.md (1)

167-167: LGTM!

docs/nemo-relay-cli/basic-usage.mdx (2)

187-189: LGTM!

Also applies to: 234-236


227-227: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use title case for table headers.

The table headers use sentence case. Per coding guidelines, table headers should use title case.

📋 Proposed fix
-| Agent | LLM and correlation hooks | Scope, tool, and mark hooks |
+| Agent | LLM and Correlation Hooks | Scope, Tool, and Mark Hooks |
			> Likely an incorrect or invalid review comment.

Source: Coding guidelines

docs/nemo-relay-cli/hermes.mdx (1)

10-27: LGTM!

Also applies to: 30-44, 107-109, 163-175, 187-196

Comment thread docs/nemo-relay-cli/hermes.mdx Outdated
Signed-off-by: mnajafian-nv <mnajafian@nvidia.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/nemo-relay-cli/hermes.mdx (1)

162-174: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick win

Clarify that the gateway must remain running during the smoke test.

The instruction "start a standalone gateway in one terminal" implies but doesn't explicitly state that the gateway must continue running while executing the hook forwarding test from the other terminal. Users unfamiliar with this pattern might stop the gateway before running the test.

📝 Suggested clarification
-For a direct hook-forward smoke, start a standalone gateway in one terminal:
+For a direct hook-forward smoke, start a standalone gateway in one terminal and leave it running:
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/nemo-relay-cli/hermes.mdx` around lines 162 - 174, Clarify that the
standalone gateway started with "nemo-relay --bind 127.0.0.1:4040" must remain
running while the smoke test is executed from the other terminal; update the
docs around the nemo-relay --bind instruction to explicitly state "leave this
terminal open / do not stop the gateway" before running the curl and the
NEMO_RELAY_GATEWAY_URL=http://127.0.0.1:4040 nemo-relay hook-forward hermes
--fail-closed command so users know the hook-forward (and the
NEMO_RELAY_GATEWAY_URL environment usage) requires the gateway process to be
active.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@docs/nemo-relay-cli/hermes.mdx`:
- Around line 162-174: Clarify that the standalone gateway started with
"nemo-relay --bind 127.0.0.1:4040" must remain running while the smoke test is
executed from the other terminal; update the docs around the nemo-relay --bind
instruction to explicitly state "leave this terminal open / do not stop the
gateway" before running the curl and the
NEMO_RELAY_GATEWAY_URL=http://127.0.0.1:4040 nemo-relay hook-forward hermes
--fail-closed command so users know the hook-forward (and the
NEMO_RELAY_GATEWAY_URL environment usage) requires the gateway process to be
active.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: e122f117-4548-4a11-ad22-8629b2b55ad3

📥 Commits

Reviewing files that changed from the base of the PR and between b9cc6a2 and a393d41.

📒 Files selected for processing (1)
  • docs/nemo-relay-cli/hermes.mdx
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Check / Run
  • GitHub Check: Preview docs
🧰 Additional context used
📓 Path-based instructions (12)
{docs/**,README.md,CONTRIBUTING.md}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

{docs/**,README.md,CONTRIBUTING.md}: For docs-only changes, run targeted checks only if commands, package names, or examples changed. Use just docs for docs-site builds and just docs-linkcheck when links changed
Run docs site build with just docs

Files:

  • docs/nemo-relay-cli/hermes.mdx
{docs/**,README.md,CONTRIBUTING.md,**/*.md}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

Run docs link validation with just docs-linkcheck when links change

Files:

  • docs/nemo-relay-cli/hermes.mdx
{docs/**,README.md}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

Verify README and docs entry points still match current package names and paths for large or public-facing changes

Files:

  • docs/nemo-relay-cli/hermes.mdx
{docs/**,examples/**,README.md}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

Verify examples still run with documented commands for large or public-facing changes

Files:

  • docs/nemo-relay-cli/hermes.mdx
{docs/**,README.md,**/Cargo.toml,**/package.json,**/*.md}

📄 CodeRabbit inference engine (.agents/skills/validate-change/SKILL.md)

Ensure renamed public surfaces are reflected consistently in manifests and docs for large or public-facing changes

Files:

  • docs/nemo-relay-cli/hermes.mdx
**/*.{md,mdx,py,sh,yaml,yml,toml,json}

📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)

Keep package names, repo references, and build commands current

Files:

  • docs/nemo-relay-cli/hermes.mdx
**/*.mdx

📄 CodeRabbit inference engine (.agents/skills/contribute-docs/SKILL.md)

In MDX files, top-of-file comments must use JSX comment delimiters: {/* to open and */} to close. Do not use HTML comments for MDX SPDX headers.

MDX top-of-file SPDX comments must use {/* ... */} delimiters instead of HTML comment delimiters (Must-Fix)

Files:

  • docs/nemo-relay-cli/hermes.mdx
**/*.{html,md,mdx}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Include SPDX license header in HTML and Markdown files using HTML comment syntax

Files:

  • docs/nemo-relay-cli/hermes.mdx
docs/**/*.{md,mdx}

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Update embedded documentation snippets, patch docs, and binding-support notes if examples or supported bindings changed

Files:

  • docs/nemo-relay-cli/hermes.mdx
docs/**

📄 CodeRabbit inference engine (CONTRIBUTING.md)

Run just docs or ./scripts/build-docs.sh html to regenerate ignored Fern API reference pages before validation for documentation site changes

Files:

  • docs/nemo-relay-cli/hermes.mdx
{docs/**,README.md,CONTRIBUTING.md,RELEASING.md,SECURITY.md}

⚙️ CodeRabbit configuration file

{docs/**,README.md,CONTRIBUTING.md,RELEASING.md,SECURITY.md}: Review documentation for technical accuracy against the current API, command correctness, and consistency across language bindings.
Flag stale examples, missing SPDX headers where required, and instructions that no longer match CI or pre-commit behavior.

Files:

  • docs/nemo-relay-cli/hermes.mdx
**

⚙️ CodeRabbit configuration file

**:

AGENTS.md

This file provides guidance to agents, including Claude Code and OpenAI Codex, when working in this repository.

Project Overview

NeMo Relay is a multi-language agent runtime framework for execution scopes, lifecycle events, middleware, plugins, and observability around tool and LLM calls. The core runtime is Rust. Primary supported bindings are Rust, Python, and Node.js. Go, WebAssembly, and the raw C FFI are experimental and source-first.

The shared runtime model is:

  1. Scope stacks decide where work belongs and which scope-local behavior is visible.
  2. Middleware registries decide what guardrails and intercepts run around managed calls.
  3. Plugins install reusable runtime behavior from configuration.
  4. Events record runtime behavior in ATOF form.
  5. Subscribers and exporters consume events in-process or export them to ATIF, OpenTelemetry, OpenInference, or other backends.

Repository Structure

The repository layout separates the Rust runtime, language bindings, documentation,
integration patches, and agent-facing skills.

crates/
  core/       # Rust core runtime crate, published as nemo-relay
  adaptive/   # Adaptive runtime primitives and plugin components
  python/     # PyO3 native extension for the Python package
  ffi/        # Raw C ABI layer used by downstream bindings such as Go
  node/       # NAPI Node.js binding and JavaScript/TypeScript entry points
  wasm/       # wasm-bindgen WebAssembly binding and JS wrappers
python/
  nemo_relay/  # Python wrapper package: scopes, tools, LLM, middleware, typed helpers, plugins, adaptive helpers
  tests/      # Python tests
go/
  nemo_relay/  # Experimental Go CGo binding and tests
fern/         # Fern documentation site
scripts/      # Stable wrappers and helper scripts; build/test/docs entry points live in justfile
third_party/  # P...

Files:

  • docs/nemo-relay-cli/hermes.mdx
🔇 Additional comments (4)
docs/nemo-relay-cli/hermes.mdx (4)

6-7: LGTM!


29-29: LGTM!


107-109: LGTM!


187-196: LGTM!

Signed-off-by: mnajafian-nv <mnajafian@nvidia.com>
Signed-off-by: mnajafian-nv <mnajafian@nvidia.com>
@bbednarski9

bbednarski9 commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Do we have a direction on whether the legacy patch-maintenance flow version will be maintained? If there's a deprecation date or anything like that, now would be a good time to document.

Signed-off-by: mnajafian-nv <mnajafian@nvidia.com>
Signed-off-by: mnajafian-nv <mnajafian@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Documentation documentation-related size:M PR is medium

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants