Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

License GitHub Release Codecov PyPI npm node Crates.io Crates.io Crates.io Ask DeepWiki

NeMo Relay

nemo-relay is the NeMo Relay package for Python applications. It gives Python code access to a portable agent runtime for execution scopes, middleware, plugins, lifecycle events, adaptive behavior, and observability around tool and LLM calls.

The package wraps the shared Rust runtime, so Python applications use the same runtime semantics as the Rust and Node.js surfaces.

Why Use It?

Use the Python binding for the following tasks:

  • Own execution context in Python: Group agent, tool, and LLM work into one scope tree from Python application code.
  • Package policy around callbacks: Use guardrails and intercepts to block work, sanitize observability payloads, rewrite requests, or wrap execution.
  • Emit one lifecycle stream: Send runtime events to in-process subscribers, Agent Trajectory Interchange Format (ATIF), or typed OpenTelemetry workflows.
  • Integrate without a framework migration: Wrap framework or provider callbacks while preserving the application’s orchestration model.

What You Get

The Python package provides the following capabilities:

  • Scope, tool, and LLM helpers: Managed boundaries that emit lifecycle events and run middleware in a consistent order.
  • Middleware APIs: Guardrails and intercepts for tool and LLM requests, responses, and execution, plus mark and scope event sanitizers for data, category_profile, and metadata.
  • Subscribers and exporters: OpenTelemetrySubscriber accepts one required full, gen_ai, or openinference endpoint configuration. The nemo_relay.observability helpers configure plugin-owned endpoint fan-out.
  • Plugin and typed helpers: Public modules for plugins, codecs, typed wrappers, adaptive runtime behavior, and observability plugin configuration.
  • Shared Rust runtime semantics: Python behavior aligned with the Rust and Node.js surfaces.

Installation

Install the published package with uv:

uv add nemo-relay

If you are not using uv, install it with pip:

pip install nemo-relay

Optional Dependencies

LangChain Integration

LangChain integration is available with the langchain extra:

# With uv
uv add "nemo-relay[langchain]"

# With pip
pip install "nemo-relay[langchain]"

LangGraph Integration

LangGraph integration is available with the langgraph extra, this builds upon and includes the langchain extra as well.

# With uv
uv add "nemo-relay[langgraph]"

# With pip
pip install "nemo-relay[langgraph]"

Deep Agents Integration

Deep Agents integration is available with the deepagents extra. This extra builds upon and includes the langgraph and langchain extras.

# With uv
uv add "nemo-relay[deepagents]"

# With pip
pip install "nemo-relay[deepagents]"

LangChain NVIDIA Integration

The LangChain NVIDIA extra builds upon the langchain extra adding a compatible version of the langchain-nvidia-ai-endpoints package.

# With uv
uv add "nemo-relay[langchain-nvidia]"

# With pip
pip install "nemo-relay[langchain-nvidia]"

To install this along with the langgraph extra, use:

# With uv
uv add "nemo-relay[langgraph,langchain-nvidia]"
# With pip
pip install "nemo-relay[langgraph,langchain-nvidia]"

Getting Started

Register a subscriber, create a scope, and emit a mark event:

import nemo_relay


def on_event(event) -> None:
    print(f"{event.kind} {event.name}")


nemo_relay.subscribers.register("printer", on_event)

with nemo_relay.scope.scope("demo-agent", nemo_relay.ScopeType.Agent) as handle:
    nemo_relay.scope.event("initialized", handle=handle, data={"binding": "python"})

nemo_relay.subscribers.flush()
nemo_relay.subscribers.deregister("printer")

Native subscriber delivery is asynchronous, so call nemo_relay.subscribers.flush() before you read subscriber output or exit. From an asyncio task, use await nemo_relay.subscribers.flush_async() so async event sanitizers can continue running on that event loop.

For host integrations that need a serialized event shape, consume the canonical JSON payload from the subscriber event object:

import json
import nemo_relay


def on_event(event) -> None:
    payload = event.to_dict()
    print(payload["kind"], payload["name"])
    assert json.loads(event.to_json()) == payload


nemo_relay.subscribers.register("host-exporter", on_event)
try:
    with nemo_relay.scope.scope("demo-agent", nemo_relay.ScopeType.Agent):
        nemo_relay.scope.event("initialized", data={"binding": "python"})
finally:
    nemo_relay.subscribers.flush()
    nemo_relay.subscribers.deregister("host-exporter")

Package Surface

The public package modules are:

  • nemo_relay.scope
  • nemo_relay.tools
  • nemo_relay.llm
  • nemo_relay.guardrails
  • nemo_relay.intercepts
  • nemo_relay.subscribers
  • nemo_relay.plugin
  • nemo_relay.adaptive
  • nemo_relay.observability
  • nemo_relay.typed
  • nemo_relay.codecs

Integrations

  • nemo_relay.integrations.langchain
  • nemo_relay.integrations.langgraph
  • nemo_relay.integrations.deepagents

The compiled extension is exposed as nemo_relay._native.

Documentation

NeMo Relay Documentation: https://docs.nvidia.com/nemo/relay

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

nemo_relay-0.7.0rc4-cp311-abi3-win_arm64.whl (12.4 MB view details)

Uploaded CPython 3.11+Windows ARM64

nemo_relay-0.7.0rc4-cp311-abi3-win_amd64.whl (13.1 MB view details)

Uploaded CPython 3.11+Windows x86-64

nemo_relay-0.7.0rc4-cp311-abi3-musllinux_1_2_x86_64.whl (15.2 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ x86-64

nemo_relay-0.7.0rc4-cp311-abi3-musllinux_1_2_aarch64.whl (14.8 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ ARM64

nemo_relay-0.7.0rc4-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.0 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.17+ x86-64

nemo_relay-0.7.0rc4-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (12.4 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.17+ ARM64

nemo_relay-0.7.0rc4-cp311-abi3-macosx_11_0_arm64.whl (13.0 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

Details for the file nemo_relay-0.7.0rc4-cp311-abi3-win_arm64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc4-cp311-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 25a75084ab697c28111f6757c6c27fba7a0dad0b99ff081dc60b3478c563e4d5
MD5 af39860afae3a860b9ab1ad3cc07e752
BLAKE2b-256 7de2126da8066f5ed175daa640ef21f674754babc943be6d8e2937aa8e4abdc8

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc4-cp311-abi3-win_arm64.whl:

Publisher: ci.yaml on NVIDIA/NeMo-Relay

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nemo_relay-0.7.0rc4-cp311-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc4-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 8fa2e9c7d7224d8618269cde3dc1e666de8b6fc6c0bccfdd6d8eb889eadb64d7
MD5 42b2e50f7725a67acfdb38996d1e2a65
BLAKE2b-256 a52813c51758e91de912ef62b5f5aeace15364dff67491d4fa3aa415b7a54070

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc4-cp311-abi3-win_amd64.whl:

Publisher: ci.yaml on NVIDIA/NeMo-Relay

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nemo_relay-0.7.0rc4-cp311-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc4-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 85a5400b5930d5341baad578f217a21988d6a47c62573da0f46c8b1c26142f4f
MD5 0fea4c9263e8d6520a7f850ff8144d5e
BLAKE2b-256 75d552527888d61dbc707107ff8796c42352961a4c27d4d36fabd9e8398e51ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc4-cp311-abi3-musllinux_1_2_x86_64.whl:

Publisher: ci.yaml on NVIDIA/NeMo-Relay

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nemo_relay-0.7.0rc4-cp311-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc4-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 72e0a2a32376bc37cdc61bb124505673c4f5d548924d63b85d588ca4cbe69205
MD5 ee7ca6dede9ed17719ef297bea05e246
BLAKE2b-256 234e5f55fea3fe76a73ebc2cc8d0ab89aac4627cbdb365374c6ecfda8553aaa4

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc4-cp311-abi3-musllinux_1_2_aarch64.whl:

Publisher: ci.yaml on NVIDIA/NeMo-Relay

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nemo_relay-0.7.0rc4-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc4-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 41c16a9887543ccc1039235a4d8b61bd6348d34fadbd3532c6373c95ff936560
MD5 e530b80e3c5119912f6c2ac26d2dfaf1
BLAKE2b-256 dc3ae1917a8db1d4cf8f15e7764290e88a460d9b729145c0b3b99a2b0d247d40

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc4-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yaml on NVIDIA/NeMo-Relay

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nemo_relay-0.7.0rc4-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc4-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a9764bb7d1b57cdb9c102ec2382bbc5031833d3b67623e29191de8cb0fedaad8
MD5 821f9a18e5ee22d700e91192c0819f58
BLAKE2b-256 9ff754c3be05ee9e643cd1aeba82d71b7b3f5bb936f7933f52832dcc02c13b9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc4-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: ci.yaml on NVIDIA/NeMo-Relay

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nemo_relay-0.7.0rc4-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc4-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 03fda80bb15b9ea2ba3d96eafd0f95297b8e6b99a5f84d1373dbf91149422ea4
MD5 74e6995ade5d612c8c8e2e8928fd5f63
BLAKE2b-256 46760298ac144a4a5de9930da8411aac103cabb7d94f13aad48b814ec1a7848d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc4-cp311-abi3-macosx_11_0_arm64.whl:

Publisher: ci.yaml on NVIDIA/NeMo-Relay

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.7.3

8 files

0.7.2

8 files

0.7.1

8 files

0.7.0

8 files

This release

0.7.0rc4 This release

7 files

0.6.0

8 files

0.5.0

5 files

0.4.0

5 files

0.3.0

5 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page