Skip to content

Commit 5df99d0

Browse files
authored
Add Alibaba Cloud (Model Studio / DashScope) LLM provider (#4738)
1 parent dc746d1 commit 5df99d0

31 files changed

Lines changed: 617 additions & 9 deletions

File tree

.claude/skills/nodetool-chat-cli/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ nodetool chat --sandbox
5454
| `--trace-stdout [pretty\|json]` | Stream spans to stdout |
5555

5656
Providers: `anthropic`, `claude_agent_sdk`, `openai`, `codex`, `gemini`, `xai`,
57-
`groq`, `mistral`, `deepseek`, `moonshot`, `minimax`, `cerebras`, `gmi`,
57+
`groq`, `mistral`, `deepseek`, `moonshot`, `minimax`, `cerebras`, `alibaba`, `gmi`,
5858
`together`, `openrouter`, `huggingface`, `replicate`, `kie`, `aki`, `ollama`,
5959
`lmstudio`, `mlx`. Any other registered provider id (e.g. `vllm`) also works when
6060
passed explicitly.

.claude/skills/nodetool-model-provider-config/SKILL.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ You help users configure AI model providers and select the right models for thei
2222
| **MLX** | Local || Apple Silicon optimized |
2323

2424
Other registered chat providers (any of these is valid for `-p/--provider`):
25-
`groq`, `mistral`, `deepseek`, `moonshot`, `minimax`, `cerebras`, `together`,
25+
`groq`, `mistral`, `deepseek`, `moonshot`, `minimax`, `cerebras`, `alibaba`
26+
(`DASHSCOPE_API_KEY`, Qwen via Alibaba Cloud Model Studio), `together`,
2627
`openrouter`, `codex`, `claude_agent_sdk`, `lmstudio`. Run `nodetool models
2728
providers` to see configured providers and `nodetool models recommended` for the
2829
curated model list.

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ npm run dev:chat -- --url ws://localhost:7777/ws
198198
Chat flags:
199199
```
200200
-p, --provider <name> anthropic, openai, gemini, xai, groq, mistral, deepseek,
201-
moonshot, minimax, cerebras, together, openrouter,
201+
moonshot, minimax, cerebras, alibaba, together, openrouter,
202202
huggingface, replicate, kie, aki, ollama, lmstudio,
203203
claude_agent_sdk, codex, gmi, mlx, node_llama_cpp
204204
(any registry provider id also works, e.g. vllm, llama_cpp)

docs/architecture.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ NodeTool supports 20+ AI model providers through a unified provider interface:
187187
| **Mistral** | Text generation |
188188
| **Together** | Text, embeddings |
189189
| **Cerebras** | Fast text inference |
190+
| **Alibaba Cloud** | Text (Qwen models) |
190191
| **GMI Cloud** | Open-weight text inference |
191192
| **OpenRouter** | Multi-provider routing |
192193
| **vLLM** | Self-hosted inference |

docs/developer/providers/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ NodeTool spans many providers but only a few distinct mechanisms. Find your prov
1414

1515
| Mechanism | What "add a model" means | Providers |
1616
| :-------- | :----------------------- | :-------- |
17-
| **Dynamic fetch** | Nothing — models appear from the provider's live `/models` (or local daemon) endpoint. Code only for capability/cost overrides. | [OpenAI](openai.md) (chat), [Anthropic](anthropic.md), [Gemini](gemini.md) (text), [xAI](xai.md), [OpenAI-compatible](openai-compatible.md) (Groq, Mistral, DeepSeek, Moonshot, Cerebras, Cohere, OpenRouter), [Ollama](ollama.md), [Local inference](local-inference.md) (LM Studio, llama.cpp, vLLM) |
17+
| **Dynamic fetch** | Nothing — models appear from the provider's live `/models` (or local daemon) endpoint. Code only for capability/cost overrides. | [OpenAI](openai.md) (chat), [Anthropic](anthropic.md), [Gemini](gemini.md) (text), [xAI](xai.md), [OpenAI-compatible](openai-compatible.md) (Groq, Mistral, DeepSeek, Moonshot, Cerebras, Alibaba Cloud, Cohere, OpenRouter), [Ollama](ollama.md), [Local inference](local-inference.md) (LM Studio, llama.cpp, vLLM) |
1818
| **Static model list** | A code edit to a hardcoded array in the provider (plus cost entry). | [OpenAI](openai.md) (image), [Gemini](gemini.md) (Imagen/Veo) |
1919
| **Codegen from upstream schemas** | Add an endpoint id to a config, run the generator — the manifest is regenerated, never hand-edited. | [FAL](fal.md), [Replicate](replicate.md), [KIE](kie.md) |
2020
| **Hand-maintained manifest** | Add a JSON entry to the package manifest. | [AtlasCloud](atlascloud.md), [Topaz](topaz.md), [Together](together.md) |
@@ -26,7 +26,7 @@ NodeTool spans many providers but only a few distinct mechanisms. Find your prov
2626
- **[Anthropic (Claude)](anthropic.md)** — models fetched live from the Anthropic API.
2727
- **[Google Gemini](gemini.md)** — text auto-fetches; Imagen/Veo are static lists.
2828
- **[xAI (Grok)](xai.md)** — chat, image, and video classified from `/v1/models`.
29-
- **[OpenAI-compatible providers](openai-compatible.md)** — Groq, Mistral, DeepSeek, Moonshot, Cerebras, Cohere, OpenRouter, and how to add a new one.
29+
- **[OpenAI-compatible providers](openai-compatible.md)** — Groq, Mistral, DeepSeek, Moonshot, Cerebras, Alibaba Cloud, Cohere, OpenRouter, and how to add a new one.
3030
- **[FAL](fal.md)** — nodes generated from FAL OpenAPI schemas via codegen.
3131
- **[Replicate](replicate.md)** — nodes generated from Replicate model schemas via codegen.
3232
- **[KIE](kie.md)** — nodes generated from per-model configs into a manifest.

docs/developer/providers/openai-compatible.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ description: "How to add a new OpenAI-compatible cloud provider (Groq, Mistral,
66

77
> **Audience:** Coding agents and contributors who want to add a new OpenAI-compatible cloud provider or change how an existing one exposes models.
88
9-
This guide covers seven providers that share one implementation pattern:
10-
**Groq**, **Mistral**, **DeepSeek**, **Moonshot (Kimi)**, **Cerebras**, **Cohere**, and **OpenRouter**.
9+
This guide covers eight providers that share one implementation pattern:
10+
**Groq**, **Mistral**, **DeepSeek**, **Moonshot (Kimi)**, **Cerebras**, **Alibaba Cloud (Qwen)**, **Cohere**, and **OpenRouter**.
1111

1212
---
1313

@@ -120,7 +120,7 @@ export class DeepSeekProvider extends OpenAIProvider {
120120
}
121121
```
122122

123-
Groq, Mistral, Cerebras, and OpenRouter follow this pattern exactly. OpenRouter adds a few extras: `defaultHeaders` on the `OpenAI` client (HTTP-Referer, X-Title), `textToImage`, and a `hasToolSupport` override that returns `false` for o1/o3 model IDs.
123+
Groq, Mistral, Cerebras, Alibaba Cloud, and OpenRouter follow this pattern exactly. Alibaba Cloud reads `DASHSCOPE_API_KEY` and points at Model Studio's international DashScope endpoint, `https://dashscope-intl.aliyuncs.com/compatible-mode/v1`. OpenRouter adds a few extras: `defaultHeaders` on the `OpenAI` client (HTTP-Referer, X-Title), `textToImage`, and a `hasToolSupport` override that returns `false` for o1/o3 model IDs.
124124

125125
---
126126

@@ -189,7 +189,7 @@ The empty string for `ACME_API_KEY` is intentional — it forces the registry to
189189

190190
### Chat models are fetched dynamically — no change needed
191191

192-
If Groq, DeepSeek, Mistral, Cerebras, or OpenRouter adds a new chat model, it appears in the model picker automatically on the next call to `getAvailableLanguageModels()`. No code change is required.
192+
If Groq, DeepSeek, Mistral, Cerebras, Alibaba Cloud, or OpenRouter adds a new chat model, it appears in the model picker automatically on the next call to `getAvailableLanguageModels()`. No code change is required.
193193

194194
### Tool-support overrides
195195

docs/models-and-providers.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ The generic `nodetool.agents.Agent` and chat nodes route to whichever provider o
5454
| Groq | Llama, Qwen, GPT-OSS, Kimi K2 on LPU inference |
5555
| Mistral | Mistral Large, Mistral Medium, Mistral Small, Mixtral, Codestral, Magistral |
5656
| Cerebras | Llama, Qwen, GPT-OSS on wafer-scale inference |
57+
| Alibaba Cloud | Qwen3-Max, Qwen-Plus, Qwen-Flash, Qwen-Turbo, Qwen3-VL |
5758
| GMI Cloud | Llama, DeepSeek, Qwen (open-weight) |
5859
| Moonshot | Kimi K2, Kimi latest |
5960
| <img src="assets/icons/minimax.svg" width="16" height="16" style="vertical-align: middle;" alt="" /> MiniMax | MiniMax-Text, MiniMax M2 |

docs/providers.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ Checked against each provider's implementation in `packages/runtime/src/provider
2424
| Groq || | | | | | |
2525
| Mistral || | | | || |
2626
| Cerebras || | | | | | |
27+
| Alibaba Cloud || | | | | | |
2728
| GMI Cloud || | | | | | |
2829
| OpenRouter ||| | | | | |
2930
| Together AI ||||||| |
@@ -92,6 +93,10 @@ Mistral runs chat models (Mistral, Mixtral) plus one embedding model, `mistral-e
9293

9394
Cerebras runs chat models on its high-throughput inference hardware. Text only. Cloud only, keyed by `CEREBRAS_API_KEY`. See the [OpenAI-compatible providers guide](developer/providers/openai-compatible.md).
9495

96+
## Alibaba Cloud
97+
98+
Alibaba Cloud Model Studio serves the Qwen chat models — qwen3-max, qwen-plus, qwen-flash, qwen-turbo, and the qwen3-vl vision line — with streaming and tool calling. Text only. Cloud only, keyed by `DASHSCOPE_API_KEY`, over the DashScope OpenAI-compatible endpoint (default `https://dashscope-intl.aliyuncs.com/compatible-mode/v1`, the international/Singapore region); models are fetched live from its `/models` endpoint. Model Studio keys are region-scoped — set `DASHSCOPE_BASE_URL` to your region's `/compatible-mode/v1` endpoint when the key was created outside Singapore. Tool calling is gated per model family: Qwen-Math, QVQ, OCR, translation, and audio models are outside Alibaba's function-calling list and are not sent tools. Get a key at [Model Studio](https://modelstudio.console.alibabacloud.com/). See the [OpenAI-compatible providers guide](developer/providers/openai-compatible.md).
99+
95100
## GMI Cloud
96101

97102
GMI Cloud is an OpenAI-compatible chat endpoint for open-weight models — Llama, DeepSeek, and Qwen variants. Text only. Cloud only, keyed by `GMI_API_KEY`.

electron/src/components/BootMessage.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,12 @@ const PROVIDERS: Provider[] = [
7676
signupUrl: "https://cloud.cerebras.ai/",
7777
capabilities: ["Fast Inference", "Chat", "Text Generation"],
7878
},
79+
{
80+
name: "Alibaba Cloud",
81+
description: "Qwen models via Alibaba Cloud Model Studio's OpenAI-compatible API.",
82+
signupUrl: "https://modelstudio.console.alibabacloud.com/",
83+
capabilities: ["Chat", "Text Generation", "Reasoning"],
84+
},
7985
{
8086
name: "GMI Cloud",
8187
description: "OpenAI-compatible inference for open-weight LLMs like Llama, DeepSeek, and Qwen.",

marketing/scripts/fetch-provider-logos.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ const PROVIDER_DOMAINS = {
4040
openrouter: "openrouter.ai",
4141
huggingface: "huggingface.co",
4242
cerebras: "cerebras.ai",
43+
alibaba: "alibabacloud.com",
4344
moonshot: "moonshot.ai",
4445
// media specialists
4546
elevenlabs: "elevenlabs.io",

0 commit comments

Comments
 (0)