Repository navigation
chore: update NeMo Relay integrations to 0.10.0 - #384
mnajafian-nv wants to merge 3 commits into
Conversation
NeMo Relay 0.10.0 rejects observability config version 3, so Relay-enabled runs fail on hosts whose managed Relay policy requires 0.10. Relay 0.9.0 through 0.9.4 already accept version 4, and current Hermes Agent caps nemo-relay below 0.10, so requiring 0.10 alone would leave Hermes users without a compatible Relay. Allow nemo-relay and nemo-relay-cli-bin >=0.9,<0.11 in the SDK metapackage and the claude, codex, deepagents, hermes, mini-swe-agent, and nooa adapters, and keep every lock on 0.10.0. Accept 0.9.x and 0.10.x in the CLI gateway, Hermes, NOOA, and Pi version checks. Move the Rust core, Python SDK models, shared adapter validation, and Pi validation to config version 4 and reject earlier versions. Rename validate_relay_observability_v3 and validateRelayObservabilityV3 to the version-free validate_relay_observability and validateRelayObservability so the next config version does not rename them again. Neither is documented API; the documented helpers keep their names. Pin the SWE-bench example and the TypeScript Relay smoke test to the 0.10.0 CLI, and check that the SWE-bench pin falls inside the supported range. Regenerate the SDK JSON Schemas, the Python API reference, ATTRIBUTIONS-Python.md, and the adapter catalog. Signed-off-by: mnajafian-nv <mnajafian@nvidia.com>
The packages now accept nemo-relay >=0.9,<0.11 while every lock resolves 0.10.0, so the regular Python jobs only exercise Relay 0.10. Add one Linux lane that syncs the same extras, installs nemo-relay and nemo-relay-cli-bin 0.9.4 over the locked versions, and runs the Python suite, so a 0.10-only change fails before release. Wheel builds wait for the lane like they wait for the Hermes job. The Hermes job needs no change: with 0.9 allowed, the pinned Hermes revision and the adapter's relay extra resolve to Relay 0.9.x together. Signed-off-by: mnajafian-nv <mnajafian@nvidia.com>
Update install guides, harness pages, adapter READMEs, and examples to the >=0.9,<0.11 range, with Relay 0.10 recommended and the Pi extension taken from the Relay release that matches the CLI. Replace the 0.6 migration section with the version 4 migration, which applies to Relay 0.9 and 0.10. Relay 0.10 exports OTLP automatically when an OTEL_EXPORTER_OTLP endpoint variable is set, and those traces use the gen_ai projection, which carries prompt and response content. State that, and that OTEL_SDK_DISABLED=true turns every Relay OTLP exporter off, so users who set the variables for another tool can opt out. State that the Hermes extras resolve to Relay 0.9 next to current upstream Hermes Agent. Signed-off-by: mnajafian-nv <mnajafian@nvidia.com>
|
Fern docs preview: https://nvidia-preview-pull-request-384.docs.buildwithfern.com/nemo/fabric |
AjayThorve
left a comment
There was a problem hiding this comment.
Reviewed 0cb3d72. The Relay 0.9/0.10 bounds, observability version 4 validation, schemas, adapter configs, and migration docs are consistent. Keeping Relay 0.9 supported covers the current Hermes constraint. No blocking findings.
Validated locally: Python 1,929 passed / 103 skipped on Relay 0.10.0; Rust workspace 161 passed; Pi 76 unit tests plus the released Relay 0.10 CLI/extension smoke passed; 165 shared config/gateway tests passed on Relay 0.9.4; TypeScript contract checks passed. License diff contains only the two Relay version upgrades, both Apache-2.0. Current CI is green, including the Relay 0.9.4 and Hermes compatibility lanes. Explicit observability version 3 configs require the documented migration to version 4.
Overview
Accept NeMo Relay 0.10 in Fabric and every Relay-enabled adapter, keep Relay 0.9 working, and move to observability configuration version 4. Relay 0.10 rejects the version 3 configuration Fabric writes today, so hosts that require Relay 0.10 cannot run Fabric's Relay paths. Relay 0.9 already accepts version 4, so one configuration works on both.
Breaking: observability
version = 3is now rejected, and the undocumented helpervalidate_relay_observability_v3is renamed tovalidate_relay_observability(no alias). The Relay range widens to>=0.9,<0.11, and the locks move from 0.9.3 to 0.10.0; no other package changes.Details
nemo-relayandnemo-relay-cli-binbounds in the SDK and six adapters, and relock on 0.10.0.relay-0-9CI job that runs the Python suite against Relay 0.9.4.relay_compat.py), which NOOA 0.0.10 still needs on both Relay versions.OTEL_EXPORTER_OTLP_*endpoint variable is set, and those traces include prompt and response content; the docs call this out and showOTEL_SDK_DISABLED=trueto turn it off.Validation
92872956), the Hermes adapter and the two affected example tests were rerun, and the real-model runs used that commit. After rebasing ontoa17f3165(head0cb3d728, which changes only the generated adapter catalog), the catalog check, Pi TypeScript (76 passed), and Pi Python (23 passed) were rerun. Pre-commit and docs generation passed before the rebase.Where should the reviewer start?
Start with
RELAY_OBSERVABILITY_VERSIONincrates/fabric-core/src/config.rs, thenRELAY_MINIMUM_VERSIONinadapters/python/common/src/nemo_fabric_adapters/common/relay_gateway.pyand therelay-0-9job in.github/workflows/ci_python.yml. The key decision is supporting Relay 0.9 and 0.10 together until Fabric pins a Hermes Agent revision that accepts 0.10.Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)
Relates to chore: upgrade to Relay 0.9 with Hermes telemetry #313 (Relay 0.9 upgrade) and chore(relay-plugin): upgrade NeMo Relay SDK to 0.10.0 NVIDIA-NeMo/Switchyard#959 (Switchyard on Relay 0.10).
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.