Skip to content

feat: add Opper provider preset - #172

Merged
239573049 merged 1 commit into
AIDotNet:mainfrom
Felixkw12:feat/opper-provider
Oct 9, 2026
Merged

239573049 merged 1 commit into
AIDotNet:mainfrom
Felixkw12:feat/opper-provider

Conversation

@Felixkw12

Copy link
Copy Markdown
Contributor

Adds Opper as a built in aggregator preset, shaped like the OpenRouter and Requesty entries. It is not marked as recommended.

Opper is an EU-hosted AI gateway: 700+ models from 50+ providers behind one OpenAI-compatible API, one key.

  • src/shared/domain/presets.ts: new opper preset after requesty with three endpoints on one base, https://api.opper.ai/v3/compat: OpenAI Chat and Responses, and Anthropic (the client adds /v1/messages). The model list is enabled but not public, since GET /v3/compat/models needs a key. Suggested models are pool names without a vendor prefix: claude-fable-5-1, kimi-k3, glm-5.3.
  • src/shared/domain/baseurl.ts: Opper added to the "other prefix" row.
  • src/shared/domain/tests/presets.test.ts: pinned URL rows for opper openai-chat and anthropic, since /v3/compat is not a /v1 prefix.
  • preset-brands.test.ts: lobehub has no Opper icon, so it falls back to initials like Requesty. The expected table, the count and the no icon list are updated.

Testing: the preset is marked probed on the same criterion as the file header. Without a key, POST /v3/compat/chat/completions, /v3/compat/responses and /v3/compat/v1/messages return 401, and a fake path under the same prefix returns 404. I did not run npm test, typecheck or lint locally. The test edits mirror the Requesty preset change one for one.

Keys: https://platform.opper.ai
Docs: https://docs.opper.ai

Disclosure: Opper is my startup.

Adds Opper as a built in aggregator preset, shaped like the OpenRouter
and Requesty entries. It is not marked as recommended.

Opper is an EU-hosted AI gateway: 700+ models from 50+ providers behind
one OpenAI-compatible API, one key.

- src/shared/domain/presets.ts: new `opper` preset after `requesty`
  with three endpoints on one base, `https://api.opper.ai/v3/compat`:
  OpenAI Chat and Responses, and Anthropic (the client adds
  `/v1/messages`). The model list is enabled but not public, since
  `GET /v3/compat/models` needs a key. Suggested models are pool names
  without a vendor prefix: claude-fable-5-1, kimi-k3, glm-5.3.
- src/shared/domain/baseurl.ts: Opper added to the "other prefix" row.
- src/shared/domain/__tests__/presets.test.ts: pinned URL rows for
  opper openai-chat and anthropic, since `/v3/compat` is not a `/v1`
  prefix.
- preset-brands.test.ts: lobehub has no Opper icon, so it falls back to
  initials like Requesty. The expected table, the count and the no icon
  list are updated.

Testing: the preset is marked `probed` on the same criterion as the
file header. Without a key, POST /v3/compat/chat/completions,
/v3/compat/responses and /v3/compat/v1/messages return 401, and a fake
path under the same prefix returns 404. I did not run npm test,
typecheck or lint locally. The test edits mirror the Requesty preset
change one for one.

Keys: https://platform.opper.ai
Docs: https://docs.opper.ai

Disclosure: Opper is my startup.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@239573049
239573049 merged commit 49f1639 into AIDotNet:main Oct 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants