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 00000000000..9531be3660b Binary files /dev/null and b/gui/public/logos/dothoosh.png differ 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"),