Repository navigation
Bind adaptive Switchyard targets and judge through OpenShell #13863
Copy link
Copy link
Open
Labels
area: networkingDNS, proxy, TLS, ports, host aliases, or connectivityDNS, proxy, TLS, ports, host aliases, or connectivityarea: providersInference provider integrations and provider behaviorInference provider integrations and provider behaviorarea: routingRequest routing, policy routing, model selection, or fallback logicRequest routing, policy routing, model selection, or fallback logicarea: securitySecurity controls, permissions, secrets, or hardeningSecurity controls, permissions, secrets, or hardeningintegration: hermesHermes integration behaviorHermes integration behavior
Milestone
Description
Parent epic: #7937
Outcome
One Classic Hermes sandbox receives the OpenShell-managed provider identities required for adaptive routing: an efficient target, a capable target, and a separately identifiable judge role. Raw provider credentials stay outside the sandbox, and no Switchyard role uses inference.local.
Implementation
- Create and attach the efficient and capable providers selected by the user’s
--switchyard-configfile. - First qualify whether the capable provider/model can also serve as the classifier judge without weakening credential isolation, accounting, or routing evidence.
- When role reuse is not supported or accepted, require and attach the optional dedicated judge provider/model from the user input.
- Record each physical provider’s identity, resource version, endpoint identity, model, profile identity, and credential key name.
- Record the logical judge role separately even when it reuses the capable physical provider.
- Generate Switchyard clients, targets, and judge references only from observed OpenShell provider state.
- Keep API keys in the OpenShell credential store and expose only endpoint-scoped placeholders to the sandbox.
- Set
forward_auth = falsefor every Switchyard client. - Fail provider setup atomically when any required physical provider or logical role is missing, stale, duplicate, or cannot be attested.
- Make provider removal invalidate readiness and stale routing state.
- Support fresh provider creation in this slice; leave reuse, mutation, and credential rotation for separately scoped follow-up work.
Acceptance criteria
- Fresh setup creates and attaches the efficient and capable target providers.
- Preflight either proves safe judge reuse or requires a separately configured judge; it never selects a hidden default.
- Each generated client, target, and judge reference matches observed OpenShell provider state.
- No target or judge role uses
inference.local. - Raw credentials remain inside the OpenShell credential boundary.
- Partial, stale, duplicate, or unattestable provider or role state prevents routing activation.
- Removing a required provider makes routed readiness fail instead of selecting another path.
Metadata
Metadata
Assignees
Labels
area: networkingDNS, proxy, TLS, ports, host aliases, or connectivityDNS, proxy, TLS, ports, host aliases, or connectivityarea: providersInference provider integrations and provider behaviorInference provider integrations and provider behaviorarea: routingRequest routing, policy routing, model selection, or fallback logicRequest routing, policy routing, model selection, or fallback logicarea: securitySecurity controls, permissions, secrets, or hardeningSecurity controls, permissions, secrets, or hardeningintegration: hermesHermes integration behaviorHermes integration behavior
Activity
[-]Bind two OpenShell inference providers for Switchyard targets[/-][+]Bind adaptive Switchyard targets and judge through OpenShell[/+]