Skip to content
85 changes: 61 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,12 @@ uv add nemo-flow
npm install nemo-flow-node
```

The NeMo Flow CLI is offered as a separate crate:

```bash
cargo install nemo-flow-cli
```

For source builds, testing, and contribution workflow, see [CONTRIBUTING.md](CONTRIBUTING.md).

## Documentation
Expand All @@ -128,57 +134,88 @@ The table below summarizes the support level for each binding surface.
| 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 |
| Coding-Agent CLI | 🚧 Experimental | Install with `cargo install nemo-flow-cli`. |
| NeMo Flow CLI | 🚧 Experimental | Install with `cargo install nemo-flow-cli`. |
| Go | 🚧 Experimental | Source-first under `go/nemo_flow`. |
| WebAssembly | 🚧 Experimental | Source-first under `crates/wasm`. |
| FFI | 🚧 Experimental | Source-first under `crates/ffi`. |

## Agent Harness Support

NeMo Flow CLI offers experimental support for several agent harnesses.
Refer to the NeMo Flow CLI documentation for additional information.
Comment thread
willkill07 marked this conversation as resolved.
Resolved

Below is our support matrix for agent harnesses.

| Agent | Observability | Security | Optimization | Notes |
|:--|:--:|:--:|:--:|:--|
| Claude Code | ✅ Yes | ❌ No | ❌ No | Observability only; no known issues |
| Codex | ✅ Yes | ❌ No | ❌ No | Observability only; missing some necessary hooks for full features |
| Hermes Agent | ✅ Yes | ❌ No | ❌ No | Observability only; no known issues |
| Cursor | ✅ Yes | ❌ No | ❌ No | Observability only; not feature-rich, missing hooks under `cursor-agent` |

## Third-Party Integrations

Some framework integrations are maintained as packages in this repository. Other
sample integrations are maintained as patch sets against upstream projects.

### Public API-based Integrations
### Public API Integrations

Some integrations can be implemented using public APIs without patching. Public
API-based integrations live under language-specific integration packages such as
`python/nemo_flow/integrations/` and `integrations/`.

The OpenClaw observability plugin is available under `integrations/openclaw/`
and uses OpenClaw public plugin hooks plus the generic NeMo Flow plugin
Below is the support matrix for our public API integrations.

| Agent / Library | Observability | Security | Optimization | Notes |
|:--|:--:|:--:|:--:|:--|
| LangChain | ✅ Yes | ✅ Yes | ✅ Yes | Wrapped Tool and LLM calling |
| LangGraph | ✅ Yes | ✅ Yes | ✅ Yes | Wrapped Tool and LLM calling |
| Deep Agents | ✅ Yes | ✅ Yes | ✅ Yes | Wrapped Tool and LLM calling |
| OpenClaw | ✅ Yes | ❌ No | ❌ No | Observability support; missing middleware for wrapped execution |

#### LangChain

The Python `nemo-flow` package ships several extras that offer comprehensive
middleware support for the following packages:

- LangChain
- LangGraph
- Deep Agents

See the [Python package README](python/nemo_flow/README.md) for more information.

#### OpenClaw

An OpenClaw plugin is available as a Node package `nemo-flow-openclaw`.
It relies on OpenClaw public plugin hooks plus the generic NeMo Flow plugin
configuration shape to export telemetry. See the
[OpenClaw package README](integrations/openclaw/README.md).
[OpenClaw package README](integrations/openclaw/README.md) for more information.

### Patch-based Integrations

Patch-based integrations offer experimental support. Our roadmap includes switching over to first-party plugins and packages where upstream extension points allow it.

Use [third_party/README.md](third_party/README.md) for the clone, checkout, and
patch-application workflow for those integrations.

### Support Matrix

The following table summarizes maintained third-party integrations and whether each provides observability, request intercepts, execution intercepts, and conditional execution.
The following table summarizes maintained third-party integrations and whether each provides observability, security, and optimization support.

| Integration | Method | Observability | Request Intercepts | Execution Intercepts | Conditional Execution |
|---|---|---|---|---|---|
| [LangChain](third_party/README-langchain.md), [LangGraph](third_party/README-langgraph.md), [LangChain NVIDIA](third_party/README-langchain-nvidia.md) | 🚧 Patch | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
| [opencode](third_party/README-opencode.md) | 🚧 Patch | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
| [OpenClaw](integrations/openclaw/README.md) | `nemo-flow-openclaw` package, `nemo-flow` plugin ID | ✅ Yes | ❌ No | ❌ No | ❌ No |
| [Coding-Agent CLI](docs/integrate-frameworks/coding-agent-gateway.md) | `nemo-flow-cli` package for closed harnesses | ✅ Yes | ❌ No | ❌ No | ❌ No |
| [Hermes Agent](third_party/README-hermes-agent.md) | 🚧 Patch | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |

Patch-based integrations offer experimental support. Our roadmap includes switching over to first-party plugins and packages where upstream extension points allow it.
| Integration | Observability | Security | Optimization | Notes |
|:---|:---:|:---:|:---:|:---|
| [LangChain](third_party/README-langchain.md), [LangGraph](third_party/README-langgraph.md), [LangChain NVIDIA](third_party/README-langchain-nvidia.md) | ✅ Yes | ✅ Yes | ✅ Yes | Directly patches behavior into code requiring no middleware |
| [opencode](third_party/README-opencode.md) | ✅ Yes | ✅ Yes | ✅ Yes | Directly patches behavior into code |
| [OpenClaw](third_party/README-openclaw.md) | ✅ Yes | ✅ Yes | ✅ Yes | Adds new middleware support to OpenClaw and a built-in plugin |
| [Hermes Agent](third_party/README-hermes-agent.md) | ✅ Yes | ✅ Yes | ✅ Yes | Directly patches behavior into code |

## Roadmap

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.
- [ ] 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.

## License

NeMo Flow is licensed under the [Apache License 2.0](LICENSE). All source files must include SPDX license headers.
NeMo Flow is licensed under the [Apache License 2.0](LICENSE).
13 changes: 7 additions & 6 deletions crates/cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,19 @@ SPDX-License-Identifier: Apache-2.0

# nemo-flow-cli

`nemo-flow-cli` is the coding-agent gateway CLI for NeMo Flow observability.
It installs the `nemo-flow` binary, which can configure supported coding-agent
hooks, run agents through an ephemeral gateway, and diagnose local agent and
exporter readiness.
`nemo-flow-cli` installs the NeMo Flow CLI, the `nemo-flow` binary for local
coding-agent observability. It can configure supported coding-agent hooks, run
agents through an ephemeral gateway, and diagnose local agent and exporter
readiness.

The CLI is a Rust package in this repository, but most users should interact
with the installed `nemo-flow` command rather than link against the crate.

## Why Use It?

- 🧭 **Observe existing coding agents**: Run Claude Code, Codex, Cursor, or
Hermes through a local NeMo Flow gateway without changing the agent itself.
Hermes Agent through a local NeMo Flow gateway without changing the agent
itself.
- 🛠️ **Configure hooks interactively**: Use the setup wizard to write project or
user config and install the hook files needed by supported agents.
- 📡 **Export local sessions**: Write ATIF trajectory files, ATOF event JSONL
Expand Down Expand Up @@ -132,4 +133,4 @@ output_directory = "./atif"

## Documentation

NeMo Flow Documentation: https://nvidia.github.io/NeMo-Flow
NeMo Flow CLI Documentation: https://nvidia.github.io/NeMo-Flow/nemo-flow-cli/about.html
4 changes: 4 additions & 0 deletions crates/wasm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ The Rust crate in this directory is build machinery for the generated npm
package. JavaScript users should install the npm package rather than depend on
the Rust crate directly.

This surface is experimental and source-first. Use the repository source tree
and WebAssembly tests when validating behavior, and prefer Rust, Python, or
Node.js for primary documented application integrations.

## Why Use It?

- 🌐 **Bring NeMo Flow to WebAssembly**: Use the shared runtime model from
Expand Down
8 changes: 4 additions & 4 deletions docs/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ nemo-flow-adaptive = "0.1.*"

- `nemo-flow` provides the core runtime APIs for scopes, middleware, subscribers, plugins, tool calls, and LLM calls.
- `nemo-flow-adaptive` provides adaptive runtime primitives and Redis-backed learning components when you want adaptive optimization behavior in Rust.
- `nemo-flow-cli` is a published binary crate for coding-agent hook and LLM
gateway observability. Install it with `cargo install nemo-flow-cli` when
you need the `nemo-flow` executable.
- `nemo-flow-cli` is a published binary crate for the NeMo Flow CLI. Install it
with `cargo install nemo-flow-cli` when you need the `nemo-flow` executable
for coding-agent hook and LLM gateway observability.

## Install from Source

Expand Down Expand Up @@ -103,7 +103,7 @@ nemo-flow = { path = "../NeMo-Flow/crates/core" }
nemo-flow-adaptive = { path = "../NeMo-Flow/crates/adaptive" }
```

Install the published gateway binary when you need coding-agent hook and LLM
Install the published NeMo Flow CLI when you need coding-agent hook and LLM
gateway observability:

```bash
Expand Down
4 changes: 2 additions & 2 deletions docs/getting-started/rust.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ serde_json = "1"
- `nemo-flow` is the core Rust runtime surface.
- `nemo-flow-adaptive` is the companion crate for adaptive runtime primitives and Redis-backed learning components.
- `nemo-flow-cli` is a binary crate. Use `cargo install nemo-flow-cli` when
you need the coding-agent gateway.
you need the NeMo Flow CLI.

### Install from a Package Manager

Expand All @@ -39,7 +39,7 @@ nemo-flow-adaptive = "0.1.*"
serde_json = "1"
```

Install the published gateway binary separately when you need coding-agent hook
Install the published NeMo Flow CLI separately when you need coding-agent hook
and LLM gateway observability:

```bash
Expand Down
20 changes: 14 additions & 6 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ targets.
These paths map common reader goals to the most relevant documentation entry points.

- **End Users**: Start with [Prerequisites](getting-started/prerequisites.md) and [Quick Start](getting-started/quick-start.md).
- **Coding-Agent CLI Users**: Start with [Advanced Guide: Coding-Agent Gateway](integrate-frameworks/coding-agent-gateway.md), then use the per-agent guide for Claude Code, Codex, Cursor, or Hermes.
- **NeMo Flow CLI Users**: Start with [Basic Usage](nemo-flow-cli/basic-usage.md), then use the per-agent guide for Claude Code, Codex, Cursor, or Hermes Agent.
- **Agent Framework Developers**: Start with [Integrate into Frameworks](integrate-frameworks/about.md).
- **Plugin Writers**: Start with [Build Plugins](build-plugins/about.md), then continue to [Basic Guide: Define a Plugin](build-plugins/basic-guide.md).
- **Contributors**: Start with [Contribute](contribute/about.md) and the repository root `CONTRIBUTING.md` guide.
Expand Down Expand Up @@ -162,19 +162,27 @@ About <integrate-frameworks/about>
Basic Guide: Adding Scopes <integrate-frameworks/adding-scopes>
Basic Guide: Wrap Tool Calls <integrate-frameworks/wrap-tool-calls>
Basic Guide: Wrap LLM Calls <integrate-frameworks/wrap-llm-calls>
Advanced Guide: Coding-Agent Gateway <integrate-frameworks/coding-agent-gateway>
OpenClaw Plugin Guide <integrate-frameworks/openclaw-plugin>
Claude Code Gateway Guide <integrate-frameworks/coding-agent-claude-code>
Codex Gateway Guide <integrate-frameworks/coding-agent-codex>
Cursor Gateway Guide <integrate-frameworks/coding-agent-cursor>
Hermes Gateway Guide <integrate-frameworks/coding-agent-hermes>
Advanced Guide: Handle Non-Serializable Data <integrate-frameworks/non-serializable-data>
Advanced Guide: Using Codecs <integrate-frameworks/using-codecs>
Advanced Guide: Provider Codecs <integrate-frameworks/provider-codecs>
Advanced Guide: Provider Response Codecs <integrate-frameworks/provider-response-codecs>
Code Examples <integrate-frameworks/code-examples>
```

```{toctree}
:hidden:
:caption: NeMo Flow CLI
:maxdepth: 2

About <nemo-flow-cli/about>
Basic Usage <nemo-flow-cli/basic-usage>
Claude Code <nemo-flow-cli/claude-code>
Codex <nemo-flow-cli/codex>
Cursor <nemo-flow-cli/cursor>
Hermes Agent <nemo-flow-cli/hermes>
```

```{toctree}
:hidden:
:caption: Build Plugins
Expand Down
9 changes: 4 additions & 5 deletions docs/integrate-frameworks/about.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,18 +39,17 @@ Use these guide links to move from the overview into task-specific instructions.
- [Basic Guide: Adding Scopes](adding-scopes.md) shows how framework request and run hooks become NeMo Flow ownership boundaries.
- [Basic Guide: Wrap Tool Calls](wrap-tool-calls.md) explains where to place managed tool wrappers and tool lifecycle fallbacks.
- [Basic Guide: Wrap LLM Calls](wrap-llm-calls.md) explains where to place managed provider wrappers, model names, streaming behavior, and LLM lifecycle fallbacks.
- [Advanced Guide: Coding-Agent Gateway](coding-agent-gateway.md) describes the Rust gateway for observing Codex, Claude Code, Cursor, and Hermes through canonical hooks plus a passthrough LLM gateway.
- [OpenClaw Plugin Guide](openclaw-plugin.md) covers configuring the OpenClaw plugin, mapping OpenClaw hooks to NeMo Flow telemetry, and understanding current LLM replay fidelity boundaries.
- [Claude Code Gateway Guide](coding-agent-claude-code.md) covers transparent Claude Code runs, Anthropic gateway routing, ATIF verification, and unsupported Claude application modes.
- [Codex Gateway Guide](coding-agent-codex.md) covers transparent Codex CLI runs, local GUI/app caveats, model provider routing, and remote-task limits.
- [Cursor Gateway Guide](coding-agent-cursor.md) covers transparent Cursor runs, temporary hook patching, GUI and CLI smoke tests, and gateway routing limits.
- [Hermes Gateway Guide](coding-agent-hermes.md) covers Hermes shell hook installation, dynamic gateway URL handling, session-finalize behavior, and hook consent caveats.
- [Advanced Guide: Handle Non-Serializable Data](non-serializable-data.md) shows how to keep clients, streams, callbacks, and SDK objects outside JSON payloads.
- [Advanced Guide: Using Codecs](using-codecs.md) explains typed value codecs for framework-facing wrappers.
- [Advanced Guide: Provider Codecs](provider-codecs.md) explains provider request and response codecs for normalized middleware and event annotations.
- [Advanced Guide: Provider Response Codecs](provider-response-codecs.md) focuses on response-only annotations for subscribers and exporters.
- [Code Examples](code-examples.md) collects fallback APIs, mark events, and repository patch workflow examples.

For coding-agent hook and LLM gateway observability, use
[NeMo Flow CLI](../nemo-flow-cli/about.md). That section covers Claude Code,
Codex, Cursor, and Hermes Agent support.

Start by identifying the framework's stable tool and LLM boundaries. Prefer
managed execution wrappers wherever the framework exposes a callback that NeMo
Flow can own. Use explicit API calls only when the framework owns invocation
Expand Down
8 changes: 8 additions & 0 deletions docs/integrate-frameworks/openclaw-plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ plugin hooks and converts them into NeMo Flow sessions, LLM spans, tool spans,
and marks that the generic NeMo Flow observability component can export as
ATIF JSON, OpenTelemetry spans, and OpenInference/Phoenix spans.

This public OpenClaw plugin provides observability support only. It does not
add NeMo Flow security middleware or adaptive optimization behavior to OpenClaw
execution. For middleware-backed behavior, use the patch-based OpenClaw
integration from the NeMo Flow repository.

Use this guide to install the plugin, enable it in OpenClaw, configure telemetry
outputs, verify exported traces, and understand current LLM replay fidelity.

Expand Down Expand Up @@ -220,6 +225,9 @@ reason when present.
The plugin maps supported OpenClaw hook events into NeMo Flow telemetry without
changing OpenClaw execution behavior.

It does not change OpenClaw tool execution, provider routing, policy decisions,
or adaptive behavior.

| OpenClaw hook | NeMo Flow behavior |
| --- | --- |
| `gateway_start` | Touches the replay backend early; session roots still open lazily from session-scoped hooks. |
Expand Down
61 changes: 61 additions & 0 deletions docs/nemo-flow-cli/about.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<!--
SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0
-->

# About

Use this section when you want the `nemo-flow` binary to observe local coding
agent sessions through hooks, a passthrough LLM gateway, and NeMo Flow
observability exporters.

The NeMo Flow CLI is installed by the `nemo-flow-cli` Cargo package. It can run
supported coding agents through a managed local gateway, forward agent hook
payloads into NeMo Flow lifecycle events, route OpenAI-compatible or
Anthropic-compatible model traffic through the gateway, and diagnose local
configuration.

## Start Here When

Use these guides when you need to:

- Observe Claude Code, Codex, Cursor, or Hermes Agent sessions locally.
- Configure coding-agent hooks for NeMo Flow lifecycle events.
- Route model-provider traffic through the local NeMo Flow gateway.
- Export local sessions to ATIF, ATOF JSONL, OpenTelemetry, or OpenInference.
- Diagnose hook loading, gateway routing, and exporter output.

If you are instrumenting an application or framework directly, use
[Instrument Applications](../instrument-applications/about.md) or
[Integrate into Frameworks](../integrate-frameworks/about.md) instead.

## Agent Harness Support

NeMo Flow CLI support is experimental and observability-focused.

| Agent | Observability | Security | Optimization | Notes |
| --- | --- | --- | --- | --- |
| Claude Code | ✅ Yes | ❌ No | ❌ No | Observability only; no known issues. |
| Codex | ✅ Yes | ❌ No | ❌ No | Observability only; some hooks needed for full feature coverage are missing. |
| Hermes Agent | ✅ Yes | ❌ No | ❌ No | Observability only; no known issues. |
| Cursor | ✅ Yes | ❌ No | ❌ No | Observability only; missing hooks under `cursor-agent` limit feature coverage. |

## Guides

Use these guide links to move from CLI setup into agent-specific instructions.

- [Basic Usage](basic-usage.md) explains gateway routes, transparent runs,
shared configuration, hook forwarding, and runtime mapping.
- [Claude Code](claude-code.md) covers transparent Claude Code
runs, Anthropic gateway routing, ATIF verification, and unsupported Claude
application modes.
- [Codex](codex.md) covers transparent Codex CLI runs, local
GUI/app caveats, model provider routing, and remote-task limits.
- [Cursor](cursor.md) covers transparent Cursor runs, temporary
hook patching, GUI and CLI smoke tests, and gateway routing limits.
- [Hermes Agent](hermes.md) covers Hermes shell hook installation,
dynamic gateway URL handling, session-finalize behavior, and hook consent
caveats.

Start with [Basic Usage](basic-usage.md), then use the guide for the coding
agent that you want to observe.
Loading
Loading