This quick start shows the smallest Python workflow that emits scope, tool, and LLM events.
LangChain, LangGraph, and Deep Agents users should start with the LangChain integration, LangGraph integration, and Deep Agents integration guides for the best experience in those frameworks.
Pick the installation path that matches whether you are using a published package or a local checkout.
Use this path when you want the published package for application development.
Run uv add from an application project that has a pyproject.toml; it records
nemo-relay as a dependency. If you are only installing into an active virtual
environment, use uv pip install nemo-relay. If you are not using uv, install
the published package with pip install nemo-relay.
Use this path when you are working from a local checkout and need editable source behavior.
This is the right path when you are working from a local checkout and want the editable package plus the native extension build.
If you are consuming the local checkout from another uv project, add the source
path from that application’s directory instead:
This records the local source in the application’s pyproject.toml through
[tool.uv.sources].
The example below runs one minimal instrumented workflow through the binding.
You should see:
{'echo': 'hello'} from the tool callok: True and the echoed message payload from the LLM callbackNative subscriber delivery is asynchronous, so flush before checking subscriber output. If you only see the returned values and no event lines, the callbacks ran but you did not verify instrumentation. The subscriber output is the fast check that NeMo Relay actually emitted lifecycle events.
These modules are the main Python APIs to use from applications and integrations.
nemo_relay.scopenemo_relay.toolsnemo_relay.llmnemo_relay.guardrailsnemo_relay.interceptsnemo_relay.subscribersnemo_relay.pluginnemo_relay.adaptivenemo_relay.typednemo_relay.codecsUse these links to continue from the quick start into the core runtime concepts.