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

Uploaded CPython 3.11+Windows ARM64

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

Uploaded CPython 3.11+Windows x86-64

nemo_relay-0.7.0rc3-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.0rc3-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.0rc3-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.0rc3-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.0rc3-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.0rc3-cp311-abi3-win_arm64.whl.

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc3-cp311-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 937ab523236412601d7c01412451b9c3dbf708e69bfec9aa2f01a37efcd3993f
MD5 5795c6f9bb03be1249b5afe4b846c034
BLAKE2b-256 e3e8498b342caf9dab986263315c264db0370855472e479379b7b65b89c523b8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc3-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 0a756c2b6dff50ef8af48f9108ab7eecbbbe271f5cbf4f1411e51b4e7597d36b
MD5 264a4380e817c73e384b834881c30770
BLAKE2b-256 3c3950eda201f4cc41e5c407441b059388b0e4b4d9cbe901344ae567f25a8d34

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc3-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7fd033e8f6e943910e40dc5e6b9b5fef7a41b3f72b49449d0fb22e1ef6df2c6e
MD5 a3e94b4f9eb7d3934180a0c76cfefbf8
BLAKE2b-256 b0565c51e9339561df1f8abc630135e92c27500478f7131fb14aaada9ccfb3b6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc3-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b4212f279d537c352270f48fca8e7f79d592e78ddd10a4bc7d4e7da2b9da8205
MD5 22e0a3a8be5607563147f289782f11c9
BLAKE2b-256 d4eb52986715cad9ba5ab14643963174917eb096880c9b87f09c261295193428

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc3-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 81fb66e0078e7aa6a87ea0c5a5a1ec63f4836d706528d84e165ba4d4b30a1b77
MD5 f9a11225368bb9fb9da4185e1314b64f
BLAKE2b-256 5aca9aa93828367242eb1c8eb4982cee6ae53b154b2b3dc31e768efe9aee8f09

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc3-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a44a25d87c6afb64596d552f122913b1c92f5855399ce1159fc7dd5b50ae23ff
MD5 931f1c13942c8b846fd1bcaf49399cb8
BLAKE2b-256 0061aaf44e29c857bf3ba1f540e7952efe62344d2a266c56d590af2451828f8d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for nemo_relay-0.7.0rc3-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f6963e19c710d7728be7ba2a585b2c41dc8aa010738a39daecbd9fed51a994e8
MD5 c3e1843af96afcc0c2d1808490220f16
BLAKE2b-256 82fa2455d248eeb877d036f1488d1dcd0f341765c182961e59d40dd72c91f5cf

See more details on using hashes here.

Provenance

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