Originally created by: Marc-oss-hub
Adds OrcaRouter as a named preset in the provider wizard, mirroring the existing Groq/DeepSeek/Together presets. The operator now picks "OrcaRouter" by name instead of typing a base URL, and the API key lands in its own ORCAROUTER_API_KEY env var — each preset gets its own variable so connecting a second service cannot overwrite the first one's key.
OrcaRouter is an OpenAI-compatible gateway: one key routes to 160+ models across all major model families, with orcarouter/auto as a smart default router. 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.
Like every other preset, this one resolves to the existing openai-compatible kind with baseUrl filled in (https://api.orcarouter.ai, stored without the /v1 suffix per the repo convention — call sites append /v1/...). Model lists still come from the server's own /v1/models, so nothing here needs updating when a vendor ships a new model. OrcaRouter serves that endpoint without credentials, so listsModelsWithoutKey is set: the operator can browse the model catalog before pasting a key.
findProviderPreset("orcarouter") → baseUrl https://api.orcarouter.ai, envVar ORCAROUTER_API_KEY, listsModelsWithoutKey true. New test added; existing presence/uniqueness/no-/v1-suffix tests all still pass.npm run lint (tsc --noEmit) clean; npm run build clean.https://api.orcarouter.ai through the repo's own code path (fetchOpenAiCompatModels + the openai-compatible provider): model list returned 189 ids, 10 orcarouter/-namespaced including orcarouter/auto, and a chat completion returned normally.main without this change.I'm an engineer on the OrcaRouter team.
Originally posted by: sosidudku1
Thanks for the contribution! We will take a look and run it through the same verification every built-in preset goes through (each preset URL is live-checked end to end before it ships), and get back to you here.