Repository navigation
feat: add DotHoosh as a provider - #13404
Open
Alirezajalilii wants to merge 1 commit into
Open
Alirezajalilii wants to merge 1 commit into
Alirezajalilii wants to merge 1 commit into
Conversation
Contributor
|
All contributors have signed the CLA ✍️ ✅ |
Author
|
I have read the CLA Document and I hereby sign the CLA |
This was referenced Oct 22, 2026
Author
|
DotHoosh now serves the full vendor context windows and bills long prompts at the vendor's long-context tier. This updates the values to match https://gateway.dothoosh.com/models. Commit 734c534. |
Add DotHoosh, an OpenAI- and Anthropic-compatible AI gateway, as a provider, wired like nebius: core class and registry, config types, openai-adapters, the Add Model entry, the VS Code config schema, logo and a docs page. The Add Model picker reads DotHoosh's public model catalog live (both the OpenAI and the Anthropic listing) instead of a hard-coded list, so new models and changed limits need no release. Models served only on the Anthropic route are offered as `anthropic` models with the DotHoosh Anthropic `apiBase`. A failing listing never empties the other one, and an empty catalog still lets the user type a model ID. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Alirezajalilii
force-pushed
the
feat/provider-dothoosh
branch
from
October 24, 2026 04:23
f0fd90e to
9248fc9
Compare
Author
|
The branch is now one commit on top of current main. It reads the DotHoosh model list live from the public catalog (OpenAI and Anthropic listings), with no hard-coded models, limits or prices. The earlier comment's commit hash refers to the previous history. |
This branch has not been deployed
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.
Description
Adds DotHoosh as an OpenAI-compatible provider (
provider: dothoosh, defaultapiBasehttps://gateway.dothoosh.com/v1/), wired the same way asnebius: core class, LLM registry, config-types, openai-adapters, the Add Model GUI entry, the VS Code config schema, logo, and a docs page. There is no linked issue; this is a new provider request. The CLA is signed (comment on this PR).DotHoosh is an OpenAI-compatible and Anthropic-compatible AI gateway for developers in Iran, billed in Toman from a prepaid wallet. It is a recently launched service and I am not claiming usage numbers. API docs: https://gateway.dothoosh.com/docs.
Models are not hard-coded. Like OpenRouter, the Add Model picker reads the catalog live:
core/llm/fetchModels.tsfetcheshttps://www.dothoosh.com/gateway/v1/modelsandhttps://www.dothoosh.com/gateway/anthropic/v1/models(public, no key needed, so the list fills before a key exists; each request times out after 10 seconds). The Iran-hosted API (gateway.dothoosh.com) is not reachable from outside Iran, so the public catalog is mirrored at that URL and relays the same data. It mapscontext_length,top_provider.max_completion_tokensandsupported_parameters(tools, only when it is a list). A new DotHoosh model, or a changed limit, reaches Continue without a release. If a listing fails, the other one is still used; if both fail the list is empty, as for OpenRouter, and the picker keeps the list it already has (the Add Model form then lets you type a model ID). One damaged entry in the response (null, a non-string id, a non-positive limit) is skipped instead of emptying the list.Claude is served only on DotHoosh's Anthropic-compatible endpoint, so models listed only there are offered in the picker as packages that the Add Model form saves with
provider: anthropicandapiBase: https://gateway.dothoosh.com/anthropic/v1/(Continue's Anthropic client sendsx-api-key, which that endpoint requires). Models on both listings, such as DeepSeek, stay on thedothooshprovider (Chat Completions). The docs page shows the same setup forconfig.yaml.Known limitation, also in the docs: GPT-6 accepts function tools only on the Responses API, which Continue uses for the
openaiprovider only. DotHoosh is not added toPROVIDER_SUPPORTS_IMAGES, because its routes are text-only today.Not tested: a real request with a DotHoosh key. No key was available and the Iran-hosted API is unreachable from outside Iran, so chat and the Anthropic-route setup are exercised against mocked responses only.
AI Code Review
@continue-reviewThis PR was written with AI assistance (Claude Code, model claude-sonnet-5-5). The author has not yet line-reviewed the final diff.
Checklist
Screen recording or screenshot
N/A for a recording: the only visible change is a new DotHoosh entry in the Add Model form, filled from the live catalog; when the catalog cannot be loaded the form shows a field for typing the model ID. I did not run the extension GUI against a live DotHoosh API, so I have no real capture to attach.
Tests
Run on the final commit with Node 24:
core:npx tsc -p ./ --noEmitandgui:npx tsc -p ./ --noEmitexit 0; prettier check on the changed files clean.core/llm/llms/OpenAI-compatible.vitest.ts: 7 newdothooshcases (provider name, defaultapiBase, chat and completion requests, embeddings).core/llm/fetchModels.vitest.ts: 24 cases for the live catalog (both mirror URLs, context, max-output and tools mapping, Claude on the Anthropic route, models on both routes, one listing failing without dropping the other, entries without an id, non-listsupported_parameters, non-string names, timeout, HTTP error, network failure, malformed body, damaged entries and limits).npx vitest run llm/fetchModels.vitest.ts llm/llms/OpenAI-compatible.vitest.tsincore: 2 files, 242 tests passed.gui/src/pages/AddNewModel/configs/fetchProviderModels.test.ts(7): the picker keeps its list when a refresh returns nothing, and Claude packages carryprovider: anthropicand the AnthropicapiBase.gui/src/forms/buildAddedModel.test.ts(5): the saved model entry, including a typed model ID when the catalog is empty. Both files: 12 tests passed.🤖 Generated with Claude Code