From 50dea3b4270ffa738944b9d943b5168453c01d46 Mon Sep 17 00:00:00 2001 From: Alireza Jalili Date: Tue, 20 Oct 2026 05:23:05 +0330 Subject: [PATCH] =?UTF-8?q?feat:=20add=20DotHoosh=20(=D8=AF=D8=A7=D8=AA?= =?UTF-8?q?=E2=80=8C=D9=87=D9=88=D8=B4)=20provider?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/llm/autodetect.ts | 2 + core/llm/llms/DotHoosh.ts | 13 +++ core/llm/llms/OpenAI-compatible.vitest.ts | 6 ++ core/llm/llms/index.ts | 2 + .../model-providers/more/dothoosh.mdx | 74 +++++++++++++ docs/customize/model-providers/overview.mdx | 1 + docs/docs.json | 1 + extensions/vscode/config_schema.json | 3 + gui/public/logos/dothoosh.png | Bin 0 -> 8545 bytes gui/src/pages/AddNewModel/configs/models.ts | 99 ++++++++++++++++++ .../pages/AddNewModel/configs/providers.ts | 34 ++++++ packages/config-types/src/index.ts | 1 + packages/openai-adapters/README.md | 1 + packages/openai-adapters/src/index.ts | 2 + packages/openai-adapters/src/types.ts | 1 + 15 files changed, 240 insertions(+) create mode 100644 core/llm/llms/DotHoosh.ts create mode 100644 docs/customize/model-providers/more/dothoosh.mdx create mode 100644 gui/public/logos/dothoosh.png diff --git a/core/llm/autodetect.ts b/core/llm/autodetect.ts index c8511554b8b..8f4d0ff0830 100644 --- a/core/llm/autodetect.ts +++ b/core/llm/autodetect.ts @@ -62,6 +62,7 @@ const PROVIDER_HANDLES_TEMPLATING: string[] = [ "vertexai", "watsonx", "nebius", + "dothoosh", "relace", "openrouter", "clawrouter", @@ -248,6 +249,7 @@ const PARALLEL_PROVIDERS: string[] = [ "sambanova", "ovhcloud", "nebius", + "dothoosh", "vertexai", "function-network", "scaleway", diff --git a/core/llm/llms/DotHoosh.ts b/core/llm/llms/DotHoosh.ts new file mode 100644 index 00000000000..def183962b4 --- /dev/null +++ b/core/llm/llms/DotHoosh.ts @@ -0,0 +1,13 @@ +import { LLMOptions } from "../.."; + +import OpenAI from "./OpenAI"; + +class DotHoosh extends OpenAI { + static providerName = "dothoosh"; + static defaultOptions: Partial = { + apiBase: "https://gateway.dothoosh.com/v1/", + useLegacyCompletionsEndpoint: false, + }; +} + +export default DotHoosh; diff --git a/core/llm/llms/OpenAI-compatible.vitest.ts b/core/llm/llms/OpenAI-compatible.vitest.ts index 402fb7e7585..3df5dc8d3dd 100644 --- a/core/llm/llms/OpenAI-compatible.vitest.ts +++ b/core/llm/llms/OpenAI-compatible.vitest.ts @@ -32,6 +32,7 @@ import FunctionNetwork from "./FunctionNetwork.js"; import NCompass from "./NCompass.js"; import LlamaStack from "./LlamaStack.js"; import Nebius from "./Nebius.js"; +import DotHoosh from "./DotHoosh.js"; import OVHcloud from "./OVHcloud.js"; // Base OpenAI tests @@ -453,6 +454,11 @@ createOpenAISubclassTests(Nebius, { defaultApiBase: "https://api.studio.nebius.ai/v1/", }); +createOpenAISubclassTests(DotHoosh, { + providerName: "dothoosh", + defaultApiBase: "https://gateway.dothoosh.com/v1/", +}); + createOpenAISubclassTests(OVHcloud, { providerName: "ovhcloud", defaultApiBase: "https://oai.endpoints.kepler.ai.cloud.ovh.net/v1/", diff --git a/core/llm/llms/index.ts b/core/llm/llms/index.ts index 4978f0617f2..478dedb6e05 100644 --- a/core/llm/llms/index.ts +++ b/core/llm/llms/index.ts @@ -21,6 +21,7 @@ import CometAPI from "./CometAPI"; import DeepInfra from "./DeepInfra"; import Deepseek from "./Deepseek"; import Docker from "./Docker"; +import DotHoosh from "./DotHoosh"; import Fireworks from "./Fireworks"; import Flowise from "./Flowise"; import FunctionNetwork from "./FunctionNetwork"; @@ -119,6 +120,7 @@ export const LLMClasses = [ Cerebras, Asksage, Nebius, + DotHoosh, Nous, Venice, VertexAI, diff --git a/docs/customize/model-providers/more/dothoosh.mdx b/docs/customize/model-providers/more/dothoosh.mdx new file mode 100644 index 00000000000..a8ae5257a18 --- /dev/null +++ b/docs/customize/model-providers/more/dothoosh.mdx @@ -0,0 +1,74 @@ +--- +title: "DotHoosh" +description: "Configure DotHoosh with Continue to access GPT, Gemini, DeepSeek, Kimi and Claude models through one Iranian AI gateway billed in Toman" +--- + +DotHoosh (دات‌هوش) is an Iranian AI gateway billed in Toman (IRT) from a prepaid wallet. One API key serves GPT, Gemini, DeepSeek and Kimi models through an OpenAI-compatible endpoint. Create a key at [gateway.dothoosh.com](https://gateway.dothoosh.com/api-keys). + +## Chat Model + + + + ```yaml title="config.yaml" + name: My Config + version: 0.0.1 + schema: v1 + + models: + - name: DeepSeek Flash + provider: dothoosh + model: deepseek-flash + apiKey: + ``` + + + ```json title="config.json" + { + "models": [ + { + "title": "DeepSeek Flash", + "provider": "dothoosh", + "model": "deepseek-flash", + "apiKey": "" + } + ] + } + ``` + + + +## Claude models + +Claude is served on DotHoosh's Anthropic-compatible endpoint, so Claude models use the `anthropic` provider with the DotHoosh base URL: + + + + ```yaml title="config.yaml" + name: My Config + version: 0.0.1 + schema: v1 + + models: + - name: Claude Sonnet 5.5 + provider: anthropic + model: claude-sonnet-5-5 + apiBase: https://gateway.dothoosh.com/anthropic/v1/ + apiKey: + ``` + + + ```json title="config.json" + { + "models": [ + { + "title": "Claude Sonnet 5.5", + "provider": "anthropic", + "model": "claude-sonnet-5-5", + "apiBase": "https://gateway.dothoosh.com/anthropic/v1/", + "apiKey": "" + } + ] + } + ``` + + diff --git a/docs/customize/model-providers/overview.mdx b/docs/customize/model-providers/overview.mdx index 7ba030dcb4d..9b7cc79c2c4 100644 --- a/docs/customize/model-providers/overview.mdx +++ b/docs/customize/model-providers/overview.mdx @@ -58,6 +58,7 @@ Beyond the top-level providers, Continue supports many other options: | [Watson x](/customize/model-providers/more/watsonx) | IBM's enterprise AI platform | | [Sagemaker](/customize/model-providers/more/sagemaker) | AWS machine learning platform | | [Nebius](/customize/model-providers/more/nebius) | Cloud-based machine learning platform | +| [DotHoosh](/customize/model-providers/more/dothoosh) | Iranian AI gateway billed in Toman | ## How to Choose a Model Provider diff --git a/docs/docs.json b/docs/docs.json index b7a1d83f13a..127267d9575 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -109,6 +109,7 @@ "customize/model-providers/more/clawrouter", "customize/model-providers/more/deepseek", "customize/model-providers/more/deepinfra", + "customize/model-providers/more/dothoosh", "customize/model-providers/more/groq", "customize/model-providers/more/llamacpp", "customize/model-providers/more/llamastack", diff --git a/extensions/vscode/config_schema.json b/extensions/vscode/config_schema.json index fb3f4c61362..2858697623e 100644 --- a/extensions/vscode/config_schema.json +++ b/extensions/vscode/config_schema.json @@ -223,6 +223,7 @@ "cerebras", "askSage", "nebius", + "dothoosh", "vertexai", "xAI", "kindo", @@ -276,6 +277,7 @@ "### Cerebras\nCerebras Inference uses specialized silicon to provides superfast inference. To get started, get your API keys from [their console](https://cloud.cerebras.ai/).", "### Ask Sage\nAsk Sage is an agnostic hosted service that provides language models. To get started with Ask Sage:\n1. Obtain an API key from your account. For more information, visit [Ask Sage](https://docs.asksage.ai/).\n2. Paste the API key below.\n3. Select a model preset.\n> [Reference](https://docs.asksage.ai/)", "### Nebius\nNebius AI platform is a cloud service for machine learning model inference and training. To get started, obtain an API key from the [Nebius console](https://console.nebius.ai/).", + "### DotHoosh\nDotHoosh (دات‌هوش) is an Iranian AI gateway billed in Toman from a prepaid wallet. One API key serves GPT, Gemini, DeepSeek and Kimi models through an OpenAI-compatible endpoint. To get started, create a key at [gateway.dothoosh.com](https://gateway.dothoosh.com/api-keys).", "### Vertex AI\nVertex AI provides access to Google's foundation models and ML tools. To get started, enable the [Vertex AI API](https://console.cloud.google.com/marketplace/product/google/aiplatform.googleapis.com) and set up [Google Application Default Credentials](https://cloud.google.com/docs/authentication/provide-credentials-adc).", "### xAI offers a world class developer tool set to build scalable applications powered by Grok. To get started, obtain an API key from [the x Console](https://console.x.ai/), and see the [docs](https://docs.x.ai/docs/)", "### Secure AI management software that helps enterprises adopt and manage AI across their workforce. To get started, obtain an API key from [the Kindo console](https://app.kindo.ai/settings/api), and see the [website](https://app.kindo.ai//)", @@ -532,6 +534,7 @@ "cloudflare", "sambanova", "nebius", + "dothoosh", "xAI", "kindo", "scaleway", diff --git a/gui/public/logos/dothoosh.png b/gui/public/logos/dothoosh.png new file mode 100644 index 0000000000000000000000000000000000000000..9531be3660b96f4061c7f3899b0cc5335228bcc0 GIT binary patch literal 8545 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 literal 0 HcmV?d00001 diff --git a/gui/src/pages/AddNewModel/configs/models.ts b/gui/src/pages/AddNewModel/configs/models.ts index 7065248d68f..bb3fe451f6c 100644 --- a/gui/src/pages/AddNewModel/configs/models.ts +++ b/gui/src/pages/AddNewModel/configs/models.ts @@ -3327,4 +3327,103 @@ export const models: { [key: string]: ModelPackage } = { icon: "inception.png", isOpenSource: false, }, + + // DotHoosh models + gpt61Sol: { + title: "GPT-6.1 Sol", + description: "OpenAI GPT-6.1 Sol, served through the DotHoosh gateway", + params: { + title: "GPT-6.1 Sol", + model: "gpt-6.1-sol", + contextLength: 272000, + }, + icon: "dothoosh.png", + providerOptions: ["dothoosh"], + isOpenSource: false, + }, + gpt6Luna: { + title: "GPT-6 Luna", + description: "OpenAI GPT-6 Luna, served through the DotHoosh gateway", + params: { + title: "GPT-6 Luna", + model: "gpt-6-luna", + contextLength: 272000, + }, + icon: "dothoosh.png", + providerOptions: ["dothoosh"], + isOpenSource: false, + }, + gemini4Argon: { + title: "Gemini 4 Argon", + description: "Google Gemini 4 Argon, served through the DotHoosh gateway", + params: { + title: "Gemini 4 Argon", + model: "gemini-4-argon", + contextLength: 1048576, + }, + icon: "dothoosh.png", + providerOptions: ["dothoosh"], + isOpenSource: false, + }, + gemini38Flash: { + title: "Gemini 3.8 Flash", + description: "Google Gemini 3.8 Flash, served through the DotHoosh gateway", + params: { + title: "Gemini 3.8 Flash", + model: "gemini-3.8-flash", + contextLength: 200000, + }, + icon: "dothoosh.png", + providerOptions: ["dothoosh"], + isOpenSource: false, + }, + deepseekV41Flash: { + title: "DeepSeek V4.1 Flash", + description: "DeepSeek V4.1 Flash, served through the DotHoosh gateway", + params: { + title: "DeepSeek V4.1 Flash", + model: "deepseek-flash", + contextLength: 1000000, + }, + icon: "dothoosh.png", + providerOptions: ["dothoosh"], + isOpenSource: false, + }, + deepseekV4Pro: { + title: "DeepSeek V4 Pro", + description: "DeepSeek V4 Pro, served through the DotHoosh gateway", + params: { + title: "DeepSeek V4 Pro", + model: "deepseek-v4-pro", + contextLength: 1000000, + }, + icon: "dothoosh.png", + providerOptions: ["dothoosh"], + isOpenSource: false, + }, + kimiK3: { + title: "Kimi K3", + description: "Moonshot AI Kimi K3, served through the DotHoosh gateway", + params: { + title: "Kimi K3", + model: "kimi-k3", + contextLength: 1048576, + }, + icon: "dothoosh.png", + providerOptions: ["dothoosh"], + isOpenSource: false, + }, + kimiK27Code: { + title: "Kimi K2.7 Code", + description: + "Moonshot AI Kimi K2.7 Code, served through the DotHoosh gateway", + params: { + title: "Kimi K2.7 Code", + model: "kimi-k2.7-code", + contextLength: 262144, + }, + icon: "dothoosh.png", + providerOptions: ["dothoosh"], + isOpenSource: false, + }, }; diff --git a/gui/src/pages/AddNewModel/configs/providers.ts b/gui/src/pages/AddNewModel/configs/providers.ts index 9e2aba08c5c..531a8e36827 100644 --- a/gui/src/pages/AddNewModel/configs/providers.ts +++ b/gui/src/pages/AddNewModel/configs/providers.ts @@ -1225,6 +1225,40 @@ To get started, [register](https://dataplatform.cloud.ibm.com/registration/stepo ], apiKeyUrl: "https://studio.nebius.ai/settings/api-keys", }, + dothoosh: { + title: "DotHoosh (دات‌هوش)", + provider: "dothoosh", + refPage: "dothoosh", + description: + "Iranian AI gateway billed in Toman from a prepaid wallet — GPT, Gemini, DeepSeek and Kimi with one key", + longDescription: `DotHoosh is an Iranian AI gateway billed in Toman (IRT) from a prepaid wallet. To get started with DotHoosh:\n1. Create an API key at [gateway.dothoosh.com](https://gateway.dothoosh.com/api-keys)\n2. Paste below\n3. Select a model preset`, + params: { + apiKey: "", + }, + collectInputFor: [ + { + inputType: "text", + key: "apiKey", + label: "API Key", + placeholder: "Enter your DotHoosh API key", + required: true, + }, + ...completionParamsInputsConfigs, + ], + icon: "dothoosh.png", + tags: [ModelProviderTags.RequiresApiKey], + packages: [ + models.gpt61Sol, + models.gpt6Luna, + models.gemini4Argon, + models.gemini38Flash, + models.deepseekV41Flash, + models.deepseekV4Pro, + models.kimiK3, + models.kimiK27Code, + ], + apiKeyUrl: "https://gateway.dothoosh.com/api-keys", + }, siliconflow: { title: "SiliconFlow", provider: "siliconflow", diff --git a/packages/config-types/src/index.ts b/packages/config-types/src/index.ts index c73c4f5142b..8010984c552 100644 --- a/packages/config-types/src/index.ts +++ b/packages/config-types/src/index.ts @@ -58,6 +58,7 @@ export const modelDescriptionSchema = z.object({ "azure", "ovhcloud", "nebius", + "dothoosh", "scaleway", "watsonx", "minimax", diff --git a/packages/openai-adapters/README.md b/packages/openai-adapters/README.md index f1b84bd27b6..e62f43de5ed 100644 --- a/packages/openai-adapters/README.md +++ b/packages/openai-adapters/README.md @@ -35,6 +35,7 @@ They are concerned with: - [x] Cohere - [x] DeepInfra - [x] Deepseek +- [x] DotHoosh - [ ] Flowise - [x] Function Network - [x] Gemini diff --git a/packages/openai-adapters/src/index.ts b/packages/openai-adapters/src/index.ts index 52fb2d33a0c..7911880ffd5 100644 --- a/packages/openai-adapters/src/index.ts +++ b/packages/openai-adapters/src/index.ts @@ -172,6 +172,8 @@ export function constructLlmApi(config: LLMConfig): BaseLlmApi | undefined { return openAICompatible("https://api.novita.ai/v3/openai", config); case "nebius": return openAICompatible("https://api.studio.nebius.ai/v1/", config); + case "dothoosh": + return openAICompatible("https://gateway.dothoosh.com/v1/", config); case "function-network": return openAICompatible("https://api.function.network/v1/", config); case "tensorix": diff --git a/packages/openai-adapters/src/types.ts b/packages/openai-adapters/src/types.ts index 14b9512f75b..8619093a978 100644 --- a/packages/openai-adapters/src/types.ts +++ b/packages/openai-adapters/src/types.ts @@ -43,6 +43,7 @@ export const OpenAIConfigSchema = BasePlusConfig.extend({ z.literal("together"), z.literal("novita"), z.literal("nebius"), + z.literal("dothoosh"), z.literal("function-network"), z.literal("llama.cpp"), z.literal("llamafile"),