Skip to content

feat(runner): accept subagents on an llm_classifier route - #1

Open
chethanuk wants to merge 4 commits into
mainfrom
fix/issue-493-ship
Open

chethanuk wants to merge 4 commits into
mainfrom
fix/issue-493-ship

Conversation

@chethanuk

@chethanuk chethanuk commented Sep 5, 2026 •

Copy link
Copy Markdown
Owner

What

An llm_classifier route can now take a nested [routes.<name>.subagents] table, like passthrough, stage_router and composite already do. Refs NVIDIA-NeMo#493.

In crates/switchyard-runner/src/algorithm.rs, AlgorithmSpec::LlmClassifier gets subagents: Option<SubagentRouteConfig>, wired into the five places that read it: routing_target_names, callable_target_names (the child's judge needs a client too), runtime_model_names (the driver needs the sub-agent's own model groups), and build_algorithm, which now hands the classifier to attach_subagent_router, and routing_response_and_dependencies. In escalation mode the parent answers on weak_target while routing, so a child judge on that model would pick up its system_prompt. That last one now counts sub-agent judges as routing-only dependencies, and that config is rejected the same way a parent judge on that model already is. The docs list llm_classifier as a parent and the schema table gets a subagents row.

Why

LlmClassifierRouteConfig is flattened into the variant and is deny_unknown_fields, so a subagents key failed parsing:

unknown field `subagents`

SubagentRouter doesn't care what its parent is, so only the config surface was missing.

Before / After

routes.toml (a parent llm_classifier route with a passthrough sub-agent table), served by the switchyard-server binary built at each commit, with a local stdlib-Python mock OpenAI upstream on port 18081 that logs every call's model to upstream.log and echoes that model back. Output is verbatim; [exit N] is the exit code of the command above it.

schema_version = 1

[llm_clients.mock]
format = "openai_chat"
base_url = "http://127.0.0.1:18081/v1"
api_key_env = "MOCK_API_KEY"

[targets.judge]
id = "judge/model"
llm_client = "mock"

[targets.strong]
id = "strong/model"
llm_client = "mock"

[targets.weak]
id = "weak/model"
llm_client = "mock"

[targets.worker]
id = "worker/model"
llm_client = "mock"

[routes.agent]
id = "agent"
type = "llm_classifier"
classifier_target = "judge"
strong_target = "strong"
weak_target = "weak"
base_threshold = 0.5

[routes.agent.subagents]
type = "passthrough"
target = "worker"

Before, base a601a9a3f9db149a1ad430fa43b1463a170c8a82 (fork main):

$ switchyard-server --config routes.toml --dry-run
invalid server config routes.toml: failed to parse TOML: TOML parse error at line 24, column 1
   |
24 | [routes.agent]
   | ^^^^^^^^^^^^^^
unknown field `subagents`

: failed to parse TOML: TOML parse error at line 24, column 1
   |
24 | [routes.agent]
   | ^^^^^^^^^^^^^^
unknown field `subagents`

: TOML parse error at line 24, column 1
   |
24 | [routes.agent]
   | ^^^^^^^^^^^^^^
unknown field `subagents`


[exit 1]

$ curl -sS http://127.0.0.1:14000/v1/chat/completions -H 'x-claude-code-session-id: s1' -H 'x-claude-code-agent-id: child-1' -H 'content-type: application/json' -d '{"model":"agent","messages":[{"role":"user","content":"Summarize the repo layout."}]}'
curl: (7) Failed to connect to 127.0.0.1 port 14000 after 0 ms: Could not connect to server

[exit 7]

$ cat upstream.log
[exit 0]

After, bff93712583be83105983e872710b417fc209567 (captured before the final rebase and squash; the server test below covers the same path at the current head):

$ switchyard-server --config routes.toml --dry-run
server OK: agent
[exit 0]

$ curl -sS http://127.0.0.1:14000/v1/chat/completions -H 'x-claude-code-session-id: s1' -H 'x-claude-code-agent-id: child-1' -H 'content-type: application/json' -d '{"model":"agent","messages":[{"role":"user","content":"Summarize the repo layout."}]}'
{"id":"c1","object":"chat.completion","created":1790734438,"model":"worker/model","choices":[{"index":0,"finish_reason":"stop","message":{"role":"assistant","content":"ok"}}],"usage":{"prompt_tokens":1,"completion_tokens":1,"total_tokens":2}}
[exit 0]

$ cat upstream.log
upstream <- /v1/chat/completions model=worker/model
[exit 0]

Same routes.toml, real switchyard-server binary, mock OpenAI upstream. Before, the server refuses to start. After, a request with Claude Code sub-agent headers goes straight to worker/model and the judge is never called.

Notes for reviewers

Start at parent_routes_accept_subagent_routing in config.rs. It checks that the parent's callable_target_names contains both judges and a target only the child uses (worker), then builds the accept table over capability, escalation and custom-mode parents, each with an llm_classifier child (a passthrough child has no judge, so it adds no branch there; the models and server tests cover it). The other wiring changes each have a test that fails without them. Drop the attach_subagent_router call and rejects_invalid_references_and_parameters fails; drop the runtime_model_names arm and subagent_models_stay_separate_from_the_parent_tiers fails (it now runs for both stage and classifier). llm_classifier_parent_sends_subagent_work_to_the_child_route in switchyard-server/tests/server.rs checks both capability and escalation parents end to end: a request with x-claude-code-agent-id reaches only the child's target, and one without it calls the parent judge. It fails if build_algorithm skips attach_subagent_router.

Rebased onto current main, which reworked classifier modes and callable_target_names. I also dropped the CHANGELOG entry: 0.3.0 is released and feature PRs no longer edit it.

At 8d9a243f, rebased on fbabf51c:

cargo fmt --all --check                                                            # clean
cargo clippy -p switchyard-runner -p switchyard-server --all-targets -- -D warnings  # clean
cargo test -p switchyard-runner -p switchyard-server                               # 156 passed

I did not run switchyard-nemo-relay-plugin tests (not enough disk to build it); this PR does not change its code, and the only AlgorithmSpec variant it uses is Noop.

Limitation: random, advisor, plan_execute, prefill_router and auto still don't accept subagents. The new field on the public, non-#[non_exhaustive] AlgorithmSpec::LlmClassifier breaks downstream struct literals and patterns that don't end in .., so it needs a note in the next 0.x release.

@codeant-ai

codeant-ai Bot commented Sep 5, 2026 •

Copy link
Copy Markdown

CodeAnt  CodeAnt Review Status

✅  Review completed

Status Commit Started (UTC) Finished (UTC)
✅  Incremental review completed 229b38e Oct 29, 2026 · 05:57 05:58
✅  Incremental review completed 9f4afb9 Oct 16, 2026 · 03:11 03:12
✅  Incremental review completed e5e1e99 Oct 02, 2026 · 09:01 09:01
✅  Incremental review completed 68265ff Oct 01, 2026 · 20:32 20:33
✅  Incremental review completed 8d9a243 Sep 30, 2026 · 14:18 14:18

@codeant-ai

codeant-ai Bot commented Sep 5, 2026

Copy link
Copy Markdown

Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@codeant-ai codeant-ai Bot added the size:M This PR changes 30-99 lines, ignoring generated files label Sep 5, 2026
@codeant-ai

codeant-ai Bot commented Sep 5, 2026 •

Copy link
Copy Markdown

CodeAnt-AI Description

Let classifier routes send delegated work through a separate sub-agent policy

What Changed

  • Classifier routes can use a separate routing policy for delegated sub-agent requests, while parent requests keep their configured classifier behavior.
  • Sub-agent judges and targets are included in route setup without mixing their model choices into the parent’s.
  • Configurations that cannot preserve sub-agent affinity or keep routing judges separate from answer prompts are rejected at startup.

Impact

✅ Delegated work bypasses the parent judge
✅ Parent requests retain classifier-based routing
✅ Invalid sub-agent configurations fail at startup

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

@coderabbitai

coderabbitai Bot commented Sep 5, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Team

Run ID: f70abf3d-9e9c-4560-a1c6-bd71fc8b6229

📥 Commits

Reviewing files that changed from the base of the PR and between 5879c10 and 035768b.

📒 Files selected for processing (7)
  • CHANGELOG.md
  • README.md
  • crates/switchyard-runner/src/algorithm.rs
  • crates/switchyard-runner/src/config.rs
  • docs/reference/toml_schema.md
  • docs/routing_algorithms/overview.md
  • docs/routing_algorithms/subagent_routing.md

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


Walkthrough

Changes

LLM classifier sub-agent routing

Layer / File(s) Summary
Classifier route contract and target discovery
crates/switchyard-runner/src/algorithm.rs
AlgorithmSpec::LlmClassifier now accepts an optional subagents policy. Target-name methods include nested routing targets and the classifier target.
Classifier construction with sub-agent routing
crates/switchyard-runner/src/algorithm.rs
build_algorithm passes configured classifiers through attach_subagent_router.
Configuration validation and route documentation
crates/switchyard-runner/src/config.rs, docs/..., README.md, CHANGELOG.md
Tests cover nested classifier targets, successful builds, and invalid message_hash_fallback settings. Documentation describes the expanded route support and schema.
Estimated code review effort: 3 (Moderate) ~20 minutes

Merge Risk: ⚪ Minimal · up to 03576

LLM classifier routes can now delegate sub-agent work through nested policies while preserving documented target resolution and configuration validation. The supported configurations and invalid nested fallback setting are covered, with no remaining merge-readiness risk identified.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 83.33% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 2 files. (5 skipped: 5 u…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: adding support for subagents on llm_classifier routes.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit hops through nested routes
Classifiers gather target sprouts
Subagents guide each call with care
Tests catch invalid settings there
Docs mark the paths through every lair

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

@codeant-ai

codeant-ai Bot commented Sep 5, 2026 •

Copy link
Copy Markdown

CodeAnt-AI Description

Let classifier routes send delegated work through a separate sub-agent policy

What Changed

  • Classifier routes can use a separate routing policy for delegated sub-agent requests, while parent requests keep their configured classifier behavior.
  • Sub-agent judges and targets are included in route setup without mixing their model choices into the parent’s.
  • Configurations that cannot preserve sub-agent affinity or keep routing judges separate from answer prompts are rejected at startup.

Impact

✅ Delegated work bypasses the parent judge
✅ Parent requests retain classifier-based routing
✅ Invalid sub-agent configurations fail at startup

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

chethanuk added a commit that referenced this pull request Sep 29, 2026
chethanuk added a commit that referenced this pull request Sep 29, 2026
@codeant-ai codeant-ai Bot added size:L This PR changes 100-499 lines, ignoring generated files and removed size:M This PR changes 30-99 lines, ignoring generated files labels Sep 29, 2026
@codeant-ai

codeant-ai Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

CodeAnt-AI Description

Let classifier routes send delegated work through a separate sub-agent policy

What Changed

  • Classifier routes can use a separate routing policy for delegated sub-agent requests, while parent requests keep their configured classifier behavior.
  • Sub-agent judges and targets are included in route setup without mixing their model choices into the parent’s.
  • Configurations that cannot preserve sub-agent affinity or keep routing judges separate from answer prompts are rejected at startup.

Impact

✅ Delegated work bypasses the parent judge
✅ Parent requests retain classifier-based routing
✅ Invalid sub-agent configurations fail at startup

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

@chethanuk

Copy link
Copy Markdown
Owner Author

Rebased onto current main (669358c); the PR was conflicting after main reworked classifier modes and callable_target_names. Re-applied the change by hand, added LlmClassifier to runtime_model_names (the driver needs the sub-agent model groups; without it delegated requests have no models), and extended subagent_models_stay_separate_from_the_parent_tiers to cover the classifier route. CodeRabbit and CodeAnt left no actionable comments, so nothing else changed. Before/after E2E screenshots are in the description.

@chethanuk

Copy link
Copy Markdown
Owner Author

Pushed bff9371.

  • Sub-agent judge sharing the escalation answer model: confirmed, fixed. routing_response_and_dependencies now includes the child's judge targets, so the config fails with cannot apply system_prompt to target weak: model weak/model is also used by routing-only target weak. New row in rejects_invalid_references_and_parameters; it fails without the fix.
  • Escalation parent coverage: added escalation-mode parents (prompted weak, escalation = { confirmations = 1 }, no base_threshold) with a passthrough child and with a custom classifier child to parent_routes_accept_subagent_routing. I didn't add the server-level test.
  • Clone URL / CHANGELOG / Closes # findings: this PR doesn't touch README, CONTRIBUTING, DEVELOPMENT, docs/getting_started.md or CHANGELOG, and it uses Refs, not Closes. They look like they belong to a different PR, so I made no change here.

cargo fmt --check and cargo clippy -p switchyard-runner --all-targets -D warnings are clean, and cargo test -p switchyard-runner passes 63 + 3. I couldn't rerun the switchyard-server tests locally because the disk filled up while linking; CI will cover them.

@codeant-ai

codeant-ai Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

CodeAnt-AI Description

Let classifier routes send delegated work through a separate sub-agent policy

What Changed

  • Classifier routes can use a separate routing policy for delegated sub-agent requests, while parent requests keep their configured classifier behavior.
  • Sub-agent judges and targets are included in route setup without mixing their model choices into the parent’s.
  • Configurations that cannot preserve sub-agent affinity or keep routing judges separate from answer prompts are rejected at startup.

Impact

✅ Delegated work bypasses the parent judge
✅ Parent requests retain classifier-based routing
✅ Invalid sub-agent configurations fail at startup

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

@codeant-ai

codeant-ai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

CodeAnt-AI Description

Let classifier routes send delegated work through a separate sub-agent policy

What Changed

  • Classifier routes can use a separate routing policy for delegated sub-agent requests, while parent requests keep their configured classifier behavior.
  • Sub-agent judges and targets are included in route setup without mixing their model choices into the parent’s.
  • Configurations that cannot preserve sub-agent affinity or keep routing judges separate from answer prompts are rejected at startup.

Impact

✅ Delegated work bypasses the parent judge
✅ Parent requests retain classifier-based routing
✅ Invalid sub-agent configurations fail at startup

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

@chethanuk

Copy link
Copy Markdown
Owner Author

Pushed f113fba8 for the review findings.

Fixed:

  • Server test: llm_classifier_parent_sends_subagent_work_to_the_child_route runs a capability and an escalation llm_classifier parent with a passthrough sub-agent. A request with x-claude-code-agent-id reaches only model/worker (no judge call). A request without it calls the parent judge and answers on model/weak. With the attach_subagent_router call removed from build_algorithm, it fails: left: ["model/classifier", "model/weak"] right: ["model/worker"].
  • Error message: a sub-agent judge on the escalation answer model now reports ... is also used by subagents judge target weak instead of routing-only target weak. The existing test row failed on the old wording before the change.
  • Added a comment above the nested message_hash_fallback rows saying why they are rejected.
  • PR description: the test line now lists only what I ran at f113fba8 (cargo fmt --check, clippy for runner and server, cargo test -p switchyard-runner -p switchyard-server: 156 passed). I did not run the switchyard-nemo-relay-plugin tests. The AlgorithmSpec break now says it needs a release note.

Not changed:

  • AlgorithmSpec::LlmClassifier gains a field, which is a semver break. It is noted in the description. Adding #[non_exhaustive] would be a separate change.
  • The two earlier commits keep their bodies. I didn't rewrite pushed history, so this relies on a squash merge with a one-line title. The new commit is one line.
  • Rejecting forward_auth on a non-HTTPS base_url is out of scope here. This PR does not touch that path, so it should be its own issue.

@codeant-ai codeant-ai Bot added size:XXL This PR changes 1000+ lines, ignoring generated files and removed size:L This PR changes 100-499 lines, ignoring generated files labels Sep 30, 2026
@codeant-ai

codeant-ai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

CodeAnt-AI Description

Let classifier routes send delegated work through a separate sub-agent policy

What Changed

  • Classifier routes can use a separate routing policy for delegated sub-agent requests, while parent requests keep their configured classifier behavior.
  • Sub-agent judges and targets are included in route setup without mixing their model choices into the parent’s.
  • Configurations that cannot preserve sub-agent affinity or keep routing judges separate from answer prompts are rejected at startup.

Impact

✅ Delegated work bypasses the parent judge
✅ Parent requests retain classifier-based routing
✅ Invalid sub-agent configurations fail at startup

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

@chethanuk chethanuk changed the title feat(runner): accept subagents on an llm_classifier route (#493) feat(runner): accept subagents on an llm_classifier route Sep 30, 2026
@codeant-ai

codeant-ai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

CodeAnt-AI Description

Let classifier routes send delegated work through a separate sub-agent policy

What Changed

  • Classifier routes can use a separate routing policy for delegated sub-agent requests, while parent requests keep their configured classifier behavior.
  • Sub-agent judges and targets are included in route setup without mixing their model choices into the parent’s.
  • Configurations that cannot preserve sub-agent affinity or keep routing judges separate from answer prompts are rejected at startup.

Impact

✅ Delegated work bypasses the parent judge
✅ Parent requests retain classifier-based routing
✅ Invalid sub-agent configurations fail at startup

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

@codeant-ai

codeant-ai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

CodeAnt-AI Description

Let classifier routes send delegated work through a separate sub-agent policy

What Changed

  • Classifier routes can use a separate routing policy for delegated sub-agent requests, while parent requests keep their configured classifier behavior.
  • Sub-agent judges and targets are included in route setup without mixing their model choices into the parent’s.
  • Configurations that cannot preserve sub-agent affinity or keep routing judges separate from answer prompts are rejected at startup.

Impact

✅ Delegated work bypasses the parent judge
✅ Parent requests retain classifier-based routing
✅ Invalid sub-agent configurations fail at startup

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

@codeant-ai codeant-ai Bot added size:L This PR changes 100-499 lines, ignoring generated files and removed size:XXL This PR changes 1000+ lines, ignoring generated files labels Oct 2, 2026
@codeant-ai

codeant-ai Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

CodeAnt-AI Description

Show configured routes in the terminal and route classifier sub-agent work separately

What Changed

  • Added a Routes page that lists configured routes, their algorithms, the models and judges they call, and endpoint details. Routes can be filtered by name, model, or algorithm.
  • llm_classifier routes can now define a separate policy for delegated sub-agent work, while parent requests keep using the parent classifier.
  • Request logs omit session and correlation IDs when they were not provided, rather than recording them as empty values.
  • Alpha version tags can publish Python packages as prereleases without publishing Rust crates.

Impact

✅ Configured routes and model targets visible in the terminal
✅ Delegated classifier work routed by its own policy
✅ Absent request IDs no longer appear as empty log fields
✅ Alpha Python releases publish without Rust crate releases

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

@codeant-ai

codeant-ai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

CodeAnt  CodeAnt PR Risk

🟢  Low Risk

  • The PR appears safe to merge; no actionable issues were identified in the review.

Assessed commit: 229b38e9a0bf

ryan-lempka and others added 4 commits October 28, 2026 22:53
…rminal app (NVIDIA-NeMo#1094)

* feat(desktop): parse server routes and add the Routes table to the terminal app

Signed-off-by: Elyas Mehtabuddin <emehtabuddin@nvidia.com>

* feat(desktop): show route details and endpoint status in the terminal app (NVIDIA-NeMo#1095)

Signed-off-by: Elyas Mehtabuddin <emehtabuddin@nvidia.com>

* fix(desktop): list each route's models from the runner's target names

Signed-off-by: Elyas Mehtabuddin <emehtabuddin@nvidia.com>

---------

Signed-off-by: Elyas Mehtabuddin <emehtabuddin@nvidia.com>
Signed-off-by: ChethanUK <chethanuk@outlook.com>
@codeant-ai codeant-ai Bot added size:XXL This PR changes 1000+ lines, ignoring generated files and removed size:L This PR changes 100-499 lines, ignoring generated files labels Oct 29, 2026
@github-actions

Copy link
Copy Markdown
PR Preview Action v1.8.2

🚀 View preview at
https://chethanuk.github.io/Switchyard/pr-preview/pr-1/

Built to branch gh-pages at 2026-10-29 05:58 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL This PR changes 1000+ lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants