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.0rc1-cp311-abi3-win_arm64.whl (12.3 MB view details)

Uploaded CPython 3.11+Windows ARM64

nemo_relay-0.7.0rc1-cp311-abi3-win_amd64.whl (13.0 MB view details)

Uploaded CPython 3.11+Windows x86-64

nemo_relay-0.7.0rc1-cp311-abi3-musllinux_1_2_x86_64.whl (15.0 MB view details)

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

nemo_relay-0.7.0rc1-cp311-abi3-musllinux_1_2_aarch64.whl (14.7 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ ARM64

nemo_relay-0.7.0rc1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.9 MB view details)

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

nemo_relay-0.7.0rc1-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (12.2 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.17+ ARM64

nemo_relay-0.7.0rc1-cp311-abi3-macosx_11_0_arm64.whl (12.9 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc1-cp311-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 db5233b5025e703c03ea01f9a3891fdb49afd1c19d3a86851aa2061e0b418b5d
MD5 cd07013c61c2b72d2a45c6cc8305b6b3
BLAKE2b-256 66566a320642081ebd9b505102d24e57ad0873c6953f571a8a94dae924734af1

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc1-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.0rc1-cp311-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc1-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 5022dcbe5519b4a91c65199bd9b431ba2a39cf21941bfa5b62a6a2a19d036048
MD5 b36a9d2c722184dc2b263fcc7be8d854
BLAKE2b-256 123ee828c2a1092a9ff1d519061054512b574e78a8cfb5d7f94fb542f05510fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc1-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.0rc1-cp311-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc1-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3a7e8811680ed7a0b1a7a07b858bcdedb5093fa6ac7cfe62c8ec8e272337bd08
MD5 1dfb8d3f1bec6a97bb9d3346851c42ec
BLAKE2b-256 5192969b9a5a250ec595a1e6e89685964c7ba300a9529a3f7a32e991b46100ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc1-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.0rc1-cp311-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc1-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6f3726b1f3d309b89e519cf4c6a690c332d0fc8f6b16a8168ae620e4da9a3397
MD5 a7682b540556eb44df6779662eda46dc
BLAKE2b-256 46cd904f1180d4e4273ed4ac8f92205d00d9bb8113d665984a0c4d0f6be7602b

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc1-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.0rc1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d4fc22e3bb50a2020a2737fd0743c33b134465a01b300f0d4dbfcded951e8b3b
MD5 7f969b80e8eb7ddbcb43aba9eee6d66f
BLAKE2b-256 6d9e5b65b4c0d7ff855c71315fe0b3a61400b8b44182bb30188b5ab7b9c73917

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc1-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.0rc1-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc1-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8d240c6a1724a1b8ba710154dfb0b4926b368c790d54bee3b61f67dde7083f1f
MD5 bf6f32646f9c9782302179f0e84bc700
BLAKE2b-256 bfb9d49d0eac49058530bf6f328ddc68eeb74a056dd147bab12a0732f07395bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc1-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.0rc1-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc1-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 602b3997dff1010107169212c809a65e58016c076523819c6fb82112e6905ce4
MD5 e29d56ea6ebd0a851e572bb731df3825
BLAKE2b-256 ed397fe030307c47c9feea4831cf5d15e7d72a9980dc3b6976a83f557589c6df

See more details on using hashes here.

Provenance

The following attestation bundles were made for nemo_relay-0.7.0rc1-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.0rc1 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