Skip to content

feat(providers): formalize service providers as pluggable provider backends #7333

Description

@KooshaPari

Summary

9router and CLIProxyAPI are currently wired as special-cased runtime services in several places (manifest injection, provider models routing, and UI/service endpoints). This has started to become a scalability bottleneck for router architecture work.

Requested change

  • Introduce a shared provider-plugin contract for embedded services (service id, expose toggle, model sync, endpoint metadata).
  • Register 9router/cliproxyapi providers through that path instead of duplicated service-specific behavior.
  • Keep current providerExpose behavior (boolean) but make backend/provider registration data-driven.
  • Preserve backward-compatibility with open-sse manifest + model prefixing semantics while decoupling from fixed if rawProvider in {...} checks.

Why now

  • 9router and cliproxyapi need parity for future replacement with Go/Rust sidecars or external SDK-based routing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    backlogTracked for future work; not blockingenhancementNew feature or requestproviders

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions