Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,23 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Added

- **NeMo Relay native plugin** — a dynamically loaded integration that runs
libsy's weighted-random, LLM-classifier, escalation, and stage-router
algorithms in process while Switchyard owns provider HTTP dispatch,
credentials, translation, retries, and fallback. Managed calls require NeMo
Relay 0.7 or newer and do not depend on `switchyard-server`. Target bindings
accept non-secret `extra_body` provider defaults, preserved requests are
re-encoded after routing mutations, and synthetic Relay gateway identities do
not become shared router session state.

- **NeMo Relay routing-model usage marks** — classifier judges, escalation
judges and discarded weak candidates, and failed routing candidates now emit
`switchyard.routing.llm_call` ATOF marks with normalized token usage and
latency. The final serving call remains represented only by Relay's outer LLM
lifecycle event to prevent double-counting.

### Removed

- **Deprecated Python server stack** — `switchyard serve`, YAML route bundles,
Expand Down
141 changes: 141 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ members = [
"crates/libsy-llm-client",
"crates/switchyard-py",
"crates/protocol",
"crates/switchyard-nemo-relay-plugin",
"crates/switchyard-server",
"crates/switchyard-skill-distillation",
"crates/switchyard-translation",
Expand All @@ -22,6 +23,7 @@ repository = "https://github.com/NVIDIA-NeMo/Switchyard"
rust-version = "1.96.1"

[workspace.dependencies]
async-channel = "2"
async-stream = "0.3"
async-trait = "0.1"
futures = "0.3"
Expand All @@ -30,6 +32,7 @@ http = "1"
httpdate = "1"
jsonschema = { version = "0.49.4", default-features = false }
jsonptr = { version = "0.8.1", default-features = false, features = ["std", "json", "resolve"] }
nemo-relay-plugin = "=0.7.0"
parking_lot = "0.12"
rand = "0.10"
reqwest = { version = "0.13.4", default-features = false, features = ["json", "rustls", "stream"] }
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ algorithm you write yourself.
- **Protocol Translation**: convert between OpenAI Chat, Anthropic Messages, and OpenAI Responses formats
- **Multi-Backend Routing**: random routing, LLM-as-classifier routing, signal-driven stage-router, or your own algorithm
- **Operational Metrics**: Prometheus metrics cover requests, errors, latency, tokens, and routing overhead
- **NeMo Relay Plugin**: run random, classifier, escalation, or stage routing in Relay while Switchyard owns provider HTTP dispatch

## Maturity

Expand Down Expand Up @@ -154,6 +155,7 @@ configured LLM client selects one upstream format.
- **[`switchyard-libsy`](crates/libsy/README.md)**: embed routing algorithms in a Rust application
- **[`switchyard-protocol`](crates/protocol/README.md)**: provider-neutral request, response, and streaming types
- **[`switchyard-translation`](crates/switchyard-translation/README.md)**: request, response, and stream translation
- **[`switchyard-nemo-relay-plugin`](crates/switchyard-nemo-relay-plugin/README.md)**: install Switchyard as a native NeMo Relay plugin

## Community

Expand Down
30 changes: 30 additions & 0 deletions crates/switchyard-nemo-relay-plugin/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

[package]
name = "switchyard-nemo-relay-plugin"
version.workspace = true
description = "Switchyard-owned HTTP routing plugin for NeMo Relay"
authors.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
rust-version.workspace = true
publish = false

[lib]
crate-type = ["cdylib"]

[dependencies]
async-channel.workspace = true
async-trait.workspace = true
futures-util.workspace = true
http.workspace = true
nemo-relay-plugin.workspace = true
serde.workspace = true
serde_json.workspace = true
switchyard-libsy.workspace = true
switchyard-llm-client.workspace = true
switchyard-protocol.workspace = true
switchyard-translation.workspace = true
tokio.workspace = true
Loading
Loading