docs: propose OrcaRouter as a first-class model provider - #846
Open
nissrin2020ali-ux wants to merge 1 commit into
Open
docs: propose OrcaRouter as a first-class model provider#846nissrin2020ali-ux wants to merge 1 commit into
nissrin2020ali-ux wants to merge 1 commit into
Conversation
Add an ADR outlining how orcarouter would be wired in as a named model provider mirroring the existing OpenRouter integration: provider id, base-url override, availability gating, dynamic catalog, admin key validation, and the CLI secret/doctor surface. Follows the contributing guideline of proposing features as human-written text in adrs/. Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This ADR proposes adding OrcaRouter as a first-class model provider in QM, mirroring the way OpenRouter is wired in today.
The problem from a QM user's seat
QM's "multiplayer agent harness for work" lets each org pick its own model provider, and one of the cleanest options is a gateway: one
OPENROUTER_API_KEY, one base URL, and a whole catalog of models behind it. OpenRouter is wired that way. But if you want OrcaRouter's stack — adaptive routing, automatic failover, zero-markup inference, observability, guardrails, and agent-tool governance on the same endpoint — there is currently no way to select it. You would have to register it as an anonymous custom base URL, which means no catalog in the picker, no admin key rotation, and noqm setup/qm doctorsupport. That's a worse experience than every named provider gets.Adding
orcarouteras a named provider closes that gap. A deployment setsmodelProvider: "orcarouter"with anORCAROUTER_API_KEY, and the base model, the web picker, and the admin panel all treat it exactly like OpenRouter today.What this means
OrcaRouter is an OpenAI-compatible AI gateway built for both models and agents. Like OpenRouter, it exposes a provider/model namespace across many models — but it also combines adaptive routing, automatic failover, zero-markup inference, observability, guardrails, and agent-tool governance behind the same endpoint. Adding orcarouter as a first-class provider means this project's users can use that stack directly, without treating OrcaRouter as an anonymous custom base URL.
It also runs gateway-level, zero-trust security for AI agents on the same endpoint — screening every prompt/response and governing every tool call on a default-deny basis, with no application code changes.
The ADR lists the concrete touchpoints, which are exactly the seven places OpenRouter already appears:
provider-endpoints.ts,pi-models.ts,model-catalog.ts, the credential store,wiring.ts/config.ts/secret-schema.ts, the admin model-providers route, and the CLI. One deviation is called out honestly: OrcaRouter is not a pi-ai built-in provider, so the pi harness registers it at runtime and the catalog parser maps OrcaRouter's OpenAI-style model list onto the existing runtime shape.Verification
The ADR's Shape section was validated against the live OrcaRouter API:
GET https://api.orcarouter.ai/v1/modelsreturns{ data: [...] }(200 with a valid key, 401 without)POST https://api.orcarouter.ai/v1/chat/completionsstreams a completion (200) using a provider-prefixed model id such asdeepseek/deepseek-v4-flash-0731Out of scope
No default changes, no model curation beyond a catalog pass-through, and no change to the security posture or screening proxy. If this direction is welcome, the code implementation can follow the ADR's shape.
Discord: discord.gg/YEubt8enRA · X: https://x.com/OrcaRouter
I'm an engineer on the OrcaRouter team.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.