Skip to content

feat: base subscribers on tracing#151

Draft
willkill07 wants to merge 1 commit into
NVIDIA:mainfrom
willkill07:wkk_tracing-subscriber-cutover
Draft

feat: base subscribers on tracing#151
willkill07 wants to merge 1 commit into
NVIDIA:mainfrom
willkill07:wkk_tracing-subscriber-cutover

Conversation

@willkill07
Copy link
Copy Markdown
Member

Overview

Move NeMo Relay subscriber/event delivery toward Rust tracing and tracing-subscriber while preserving the existing named subscriber APIs across bindings and adding closeable subscription handles.

  • I confirm this contribution is my own work, or I have the right to submit it under this project's license.
  • I searched existing issues and open pull requests, and this does not duplicate existing work.

Details

  • Adds core tracing emission for canonical ATOF lifecycle events and a callback-backed Subscriber that implements both tracing::Subscriber and tracing_subscriber::Layer.
  • Adds anonymous subscription handle APIs in Rust and additive handle APIs for Python, Node.js, Go, WebAssembly, and FFI while keeping named APIs unchanged.
  • Preserves canonical Event/ATOF delivery for existing subscribers and exporters, including ATIF, ATOF JSONL, OpenTelemetry, and OpenInference.
  • Adds scope-local subscription cleanup semantics, FFI close/free coverage, binding tests, and docs for the tracing/subscriber model.

Validation run locally:

  • cargo fmt --all
  • go fmt ./...
  • cargo clippy --workspace --all-targets -- -D warnings
  • just test-rust
  • just test-python
  • just test-node
  • just test-go
  • just test-wasm
  • just docs
  • git diff --check

Where should the reviewer start?

Start with crates/core/src/api/runtime/state.rs for tracing-first event emission and subscriber snapshot caching, then crates/core/src/api/subscriber.rs for the Rust subscriber/layer and handle APIs. The cross-binding API additions are covered by crates/ffi/src/api/subscription.rs, crates/python/src/py_api/mod.rs, crates/node/src/api/mod.rs, crates/wasm/src/api/mod.rs, and go/nemo_relay/nemo_relay.go.

Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)

  • Relates to: none

Signed-off-by: Will Killian <wkillian@nvidia.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 23, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 9e321e9c-1d48-46be-86fa-3f0925f894cb

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot added size:XL PR is extra large Feature a new feature lang:go PR changes/introduces Go code lang:js PR changes/introduces Javascript/Typescript code lang:python PR changes/introduces Python code lang:rust PR changes/introduces Rust code labels May 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feature a new feature lang:go PR changes/introduces Go code lang:js PR changes/introduces Javascript/Typescript code lang:python PR changes/introduces Python code lang:rust PR changes/introduces Rust code size:XL PR is extra large

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant