NeMo Flow is a portable execution runtime for agent systems that already have a framework, model provider, policy layer, or observability backend. It gives those systems one consistent way to describe, control, and observe what happens when an agent crosses a request, tool, or LLM boundary.
Agent applications rarely live inside one clean abstraction. A production stack might combine NeMo Agent Toolkit, LangChain, LangGraph, provider SDKs, custom harness code, NeMo Guardrails, tracing systems, and evaluation pipelines. NeMo Flow sits underneath those choices as the shared runtime contract for scopes, middleware, plugins, lifecycle events, adaptive behavior, and observability.
Built as a Rust core with primary Rust, Python, and Node.js bindings, NeMo Flow lets applications keep their orchestration model while runtime behavior stays consistent across frameworks and languages.
- π§ Own execution context across the whole agent run: Hierarchical scopes attach tools, LLM calls, middleware, subscribers, and events to the same parent-child execution tree.
- π‘οΈ Package policy once: Guardrails and intercepts can block work, sanitize observability payloads, transform requests, or wrap execution without rewriting every call site.
- π‘ Emit one lifecycle stream: Subscribers consume canonical runtime events in-process or export them as ATIF v1.6 trajectories, OpenTelemetry traces, or OpenInference-compatible traces.
- π§© Integrate without a framework migration: NeMo Flow can sit below NeMo ecosystem components, third-party agent frameworks, provider adapters, or direct application code.
- βοΈ Install reusable runtime behavior: Plugins configure middleware, subscribers, adaptive components, and custom runtime behavior from one shared system.
- β Managed tool and LLM execution: Run call boundaries through consistent lifecycle helpers and middleware ordering.
- β Concurrent request isolation: Keep request-local middleware and subscribers attached to the scope that owns them, then clean them up when that scope closes.
- β Multi-language semantics: Use the same runtime model from Rust, Python, and Node.js.
- β Observability-ready events: Preserve model metadata, tool call IDs, inputs, outputs, scope relationships, and lifecycle timing for downstream analysis.
- β Extension points for framework authors: Wrap stable tool and provider callbacks while preserving framework-owned scheduling, retries, memory, and result handling.
flowchart LR
App[Application or Framework]
subgraph Runtime[NeMo Flow Runtime]
direction TB
Scopes[Scopes]
Middleware[Middleware]
Plugins[Plugins]
Events[Lifecycle Events]
end
Output[Subscribers and Exporters]
App --> Scopes
App --> Middleware
Plugins --> Middleware
Scopes --> Events
Middleware --> Events
Events --> Output
Install the published package for your language:
# Rust
cargo add nemo-flow
# Python
uv add nemo-flow
# Node.js
npm install nemo-flow-nodeFor source builds, testing, and contribution workflow, see CONTRIBUTING.md.
End-user documentation lives at nvidia.github.io/NeMo-Flow.
The primary documentation track covers Rust, Python, and Node.js.
The Go, WebAssembly, and raw FFI surfaces are currently experimental and remain source-first under
go/nemo_flow, crates/wasm, and crates/ffi.
The table below summarizes the support level for each binding surface.
| Binding | Status | Notes |
|---|---|---|
| Python | β Fully Supported | Fully documented with Quick Start and Guides |
| Node.js | β Fully Supported | Fully documented with Quick Start and Guides |
| Rust | β Fully Supported | Fully documented with Quick Start and Guides |
| Go | π§ Experimental | Source-first under go/nemo_flow. |
| WebAssembly | π§ Experimental | Source-first under crates/wasm. |
| FFI | π§ Experimental | Source-first under crates/ffi. |
Some framework integrations are maintained as patch sets against upstream projects rather than as packages in this repository.
Use third_party/README.md for the clone, checkout, and patch-application workflow for those integrations.
The following table summarizes maintained third-party patch integrations and whether each provides observability, request intercepts, execution intercepts, and conditional execution.
| Integration | Method | Observability | Request Intercepts | Execution Intercepts | Conditional Execution |
|---|---|---|---|---|---|
| LangChain, LangGraph, LangChain NVIDIA | π§ Patch | β Yes | β Yes | β Yes | β Yes |
| opencode | π§ Patch | β Yes | β Yes | β Yes | β Yes |
| OpenClaw | π§ Patch | β Yes | β Yes | β Yes | β Yes |
| Hermes Agent | π§ Patch | β Yes | β Yes | β Yes | β Yes |
All patches offer experimental support. Our roadmap includes switching over to first-party plugins and packages.
The following roadmap outlines planned features and integrations for upcoming releases.
- NemoClaw support and integration for managed tool and LLM execution flows.
- Deeper NVIDIA NeMo ecosystem integration across agent, guardrail, evaluation, and observability workflows.
- Expanded adaptive optimization capabilities for performance-aware scheduling, hints, and cache behavior.
- First-party plugins and/or packages for common agent runtimes and frameworks.
NeMo Flow is licensed under the Apache License 2.0. All source files must include SPDX license headers.