Skip to content

refactor(switchyard): remove built-in service integration - #595

Draft
bbednarski9 wants to merge 1 commit into
NVIDIA:mainfrom
bbednarski9:refactor/remove-switchyard-service-integration
Draft

refactor(switchyard): remove built-in service integration#595
bbednarski9 wants to merge 1 commit into
NVIDIA:mainfrom
bbednarski9:refactor/remove-switchyard-service-integration

Conversation

@bbednarski9

Copy link
Copy Markdown
Contributor

Overview

Remove the built-in, service-backed Switchyard integration after its supported behavior moved to the external nvidia.switchyard native dynamic plugin.

  • 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

  • Removes the nemo-relay-switchyard workspace crate, CLI switchyard Cargo feature, static component registration/editor support, service process E2E, and service-launching examples.
  • Removes switchyard-translation from Relay's dependency graph and crates.io release inventory.
  • Rejects legacy [[components]] kind = "switchyard" configuration with migration guidance for the nvidia.switchyard native API v2 plugin.
  • Rewrites the Switchyard documentation around installing a trusted binary bundle and configuring it through [[plugins.dynamic]].
  • Regenerates Cargo.lock and ATTRIBUTIONS-Rust.md.

This PR is intentionally independent from the ABI implementation branch, but must not merge before:

The external plugin has already passed fake-provider process E2E and live Inference Hub routing through the ABI v2 branch. The live run produced 12 routing-requested and 12 routing-decision marks across two models in Phoenix project nemo-relay-switchyard-dynamic-plugin-20260730.

Validation:

  • cargo check -p nemo-relay-cli --all-targets
  • cargo test -p nemo-relay-cli --lib plugins::tests::editor_
  • cargo test -p nemo-relay-cli --lib plugins::tests::component_
  • cargo test -p nemo-relay-cli --lib server::tests::serve_listener_activates_
  • cargo test -p nemo-relay-cli --lib plugins::tests::validate_config_rejects_removed_switchyard_component_with_migration_guidance -- --exact
  • cargo clippy -p nemo-relay-cli --all-targets -- -D warnings
  • cargo deny check
  • cargo fmt --all -- --check
  • pre-commit copyright, YAML, TOML, whitespace, lockfile, Rust attribution, Actionlint, and Lychee checks

The unrestricted full CLI unit binary currently reports unrelated failures caused by user-level configuration leaking into configuration assertions and the resulting poisoned global test lock. The focused code paths changed here pass independently.

Breaking change: Relay no longer ships or publishes the built-in nemo-relay-switchyard service integration. Existing service configuration must migrate to the external native API v2 plugin.

Where should the reviewer start?

Start with crates/cli/src/server/mod.rs for the legacy-configuration migration error, then review docs/configure-plugins/switchyard/about.mdx for the operator migration path. The remaining changes remove the old crate and its build, release, test, and example surfaces.

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

Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com>
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

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: cdaaa0fc-ca39-41fd-aa9f-09c229d40bef

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

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

@github-actions github-actions Bot added size:XXL PR is very large Improvement improvement to existing functionality lang:python PR changes/introduces Python code lang:rust PR changes/introduces Rust code labels Jul 30, 2026
@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

License Diff

Compared against origin/main.

Lockfile license changes

Lockfile License Changes

Rust

Added

  • None

Removed

  • switchyard-protocol 0.1.0 (Apache-2.0)
  • switchyard-translation 0.1.0 (Apache-2.0)

Updated/Changed

  • None

Node

Added

  • None

Removed

  • None

Updated/Changed

  • None

Python

Added

  • None

Removed

  • None

Updated/Changed

  • None
Status output
[license-diff] selected languages: rust, node, python
[license-diff] generating current inventory
[license-diff] current: generating Rust inventory
[license-diff] current: Rust inventory complete (447 packages)
[license-diff] current: generating Node inventory
[license-diff] current: Node inventory complete (367 packages)
[license-diff] current: generating Python inventory
[license-diff] current: Python inventory complete (105 packages)
[license-diff] current inventory complete
[license-diff] checking out base ref origin/main into a temporary worktree
[license-diff] base: generating Rust inventory
[license-diff] base: Rust inventory complete (449 packages)
[license-diff] base: generating Node inventory
[license-diff] base: Node inventory complete (367 packages)
[license-diff] base: generating Python inventory
[license-diff] base: Python inventory complete (105 packages)
[license-diff] base inventory complete
[license-diff] removing temporary base worktree
[license-diff] comparing inventories
[license-diff] rendering Markdown output
[license-diff] done

@bbednarski9 bbednarski9 added the DO NOT MERGE PR should not be merged; see PR for details label Jul 30, 2026
@bbednarski9 bbednarski9 added this to the 0.8 milestone Jul 30, 2026
@bbednarski9 bbednarski9 removed the DO NOT MERGE PR should not be merged; see PR for details label Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Improvement improvement to existing functionality lang:python PR changes/introduces Python code lang:rust PR changes/introduces Rust code size:XXL PR is very large

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant