Skip to content

Commit 464534b

Browse files
authored
[Workers AI] Add Moondream 3 model, changelog, and pricing (#31956)
* [Workers AI] Add Moondream 3 model, changelog, and pricing * [Workers AI] Add Moondream provider logo * [Workers AI] Correct Moondream version to 3.1 in changelog * [Workers AI] Update Moondream 3.1 temperature and max_tokens defaults
1 parent dd28b23 commit 464534b

5 files changed

Lines changed: 302 additions & 0 deletions

File tree

Lines changed: 16 additions & 0 deletions
Loading

‎src/components/models/data.ts‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import meta from "../../assets/images/workers-ai/meta.svg";
2424
import microsoft from "../../assets/images/workers-ai/microsoft.svg";
2525
import minimax from "../../assets/images/workers-ai/minimax.svg";
2626
import mistralai from "../../assets/images/workers-ai/mistralai.svg";
27+
import moondream from "../../assets/images/workers-ai/moondream.svg";
2728
import moonshotai from "../../assets/images/workers-ai/moonshotai.svg";
2829
import myshell from "../../assets/images/workers-ai/myshell.svg";
2930
import nvidia from "../../assets/images/workers-ai/nvidia.svg";
@@ -161,6 +162,10 @@ export const authorData: Record<string, { name: string; logo: string }> = {
161162
name: "MistralAI",
162163
logo: mistralai.src,
163164
},
165+
moondream: {
166+
name: "Moondream",
167+
logo: moondream.src,
168+
},
164169
moonshotai: {
165170
name: "Moonshot AI",
166171
logo: moonshotai.src,
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
title: "Moondream 3.1 now available on Workers AI"
3+
description: Moondream 3.1, a fast and efficient vision language model with frontier-level visual reasoning, is now available on Workers AI.
4+
products:
5+
- workers-ai
6+
date: 2026-07-08
7+
---
8+
9+
Partnering with [Moondream](https://moondream.ai/) to bring their latest model [`@cf/moondream/moondream3.1-9B-A2B`](/workers-ai/models/moondream3.1-9B-A2B/) to Workers AI. Moondream 3.1 is a fast vision language model built on a mixture-of-experts architecture with 9B total parameters and 2B active, delivering frontier-level visual reasoning while retaining fast, cost-efficient inference.
10+
11+
Moondream 3.1 is designed for real-world vision tasks, with a 32K token context window for handling complex queries and structured outputs.
12+
13+
## Key capabilities
14+
15+
- **Query** — ask open-ended questions about an image, with an optional reasoning parameter
16+
- **Caption** — generate short, normal, or long descriptions of an image
17+
- **Point** — return coordinates for objects matching a target phrase
18+
- **Detect** — return bounding boxes for objects matching a target phrase
19+
20+
## Real-time vision at the edge
21+
22+
Vision workloads like live camera feeds, robotics, content moderation, and interactive agents need answers in milliseconds, not seconds. Moondream 3.1's small active footprint (2B active parameters) pairs well with Workers AI's serverless, globally distributed inference: requests run close to your users, and streaming responses start returning tokens almost immediately.
23+
24+
In our testing, first tokens streamed back in roughly 20–30 ms, and results were fast across every task. The example end-to-end times below (client-observed median, including network round trip) are for a simple, single-subject image. Actual latency depends heavily on the image and how much detail you ask for.
25+
26+
| Task | End-to-end (p50) |
27+
| --------- | ---------------- |
28+
| `query` | ~770 ms |
29+
| `caption` | ~480 ms |
30+
| `point` | ~145 ms |
31+
| `detect` | ~160 ms |
32+
33+
At these speeds you can call the model inline while handling a request rather than pushing the work to a background queue or a separate service. That opens up use cases where a slow response breaks the experience: moderating user-uploaded images before they are stored, locating an object in a video frame to drive a live overlay, extracting fields from a document during a form submission, or letting an agent inspect a screenshot and decide its next step within a single turn.
34+
35+
## Get started
36+
37+
Use Moondream 3.1 through the [Workers AI binding](/workers-ai/configuration/bindings/) (`env.AI.run()`) or the REST API at `/ai/run`. You can also use [AI Gateway](/ai-gateway/) with these endpoints.
38+
39+
For more information, refer to the [Moondream 3.1 model page](/workers-ai/models/moondream3.1-9B-A2B/) and [pricing](/workers-ai/platform/pricing/).

‎src/content/docs/workers-ai/platform/pricing.mdx‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,4 @@ The Price in Tokens column is equivalent to the Price in Neurons column - the di
116116
| @cf/meta/m2m100-1.2b | $0.342 per M input tokens <br/> $0.342 per M output tokens | 31050 neurons per M input tokens <br/> 31050 neurons per M output tokens |
117117
| @cf/microsoft/resnet-50 | $2.51 per M images | 228055 neurons per M images |
118118
| @cf/ai4bharat/indictrans2-en-indic-1B | $0.342 per M input tokens <br/> $0.342 per M output tokens | 31050 neurons per M input tokens <br/> 31050 neurons per M output tokens |
119+
| @cf/moondream/moondream3.1-9B-A2B | $0.300 per M input tokens <br/> $1.000 per M output tokens | 27273 neurons per M input tokens <br/> 90909 neurons per M output tokens |
Lines changed: 241 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,241 @@
1+
{
2+
"name": "@cf/moondream/moondream3.1-9B-A2B",
3+
"properties": [
4+
{
5+
"property_id": "price",
6+
"value": [
7+
{
8+
"unit": "per M input tokens",
9+
"price": 0.3,
10+
"currency": "USD"
11+
},
12+
{
13+
"unit": "per M output tokens",
14+
"price": 1,
15+
"currency": "USD"
16+
}
17+
]
18+
},
19+
{
20+
"property_id": "vision",
21+
"value": "true"
22+
}
23+
],
24+
"id": "1161560b-87f9-4795-afb3-a905cf21bcf8",
25+
"source": 1,
26+
"description": "Moondream 3 is a fast, efficient 9B mixture-of-experts vision language model (2B active parameters) that delivers frontier-level visual reasoning for tasks like object detection, pointing, OCR, and structured output.",
27+
"task": {
28+
"id": "882a91d1-c331-4eec-bdad-834c919942a8",
29+
"name": "Image-to-Text",
30+
"description": "Image to text models output a text from a given image. Image captioning or optical character recognition can be considered as the most common applications of image to text."
31+
},
32+
"created_at": "2026-07-07 14:39:02.726",
33+
"tags": [],
34+
"schema": {
35+
"input": {
36+
"type": "object",
37+
"properties": {
38+
"task": {
39+
"type": "string",
40+
"enum": [
41+
"query",
42+
"caption",
43+
"point",
44+
"detect"
45+
],
46+
"default": "query",
47+
"description": "Which Moondream skill to run."
48+
},
49+
"image": {
50+
"type": "string",
51+
"description": "Input image as a public HTTPS URL or base64 data URI. Optional for `query`; required for `caption`, `point`, and `detect`."
52+
},
53+
"question": {
54+
"type": "string",
55+
"default": "What's in this image?",
56+
"description": "Question for the `query` task."
57+
},
58+
"caption_length": {
59+
"type": "string",
60+
"enum": [
61+
"short",
62+
"normal",
63+
"long"
64+
],
65+
"default": "normal",
66+
"description": "Caption length for the `caption` task."
67+
},
68+
"target": {
69+
"type": "string",
70+
"default": "person",
71+
"description": "Object phrase to locate for `point` and `detect` tasks (e.g. 'person wearing a red shirt')."
72+
},
73+
"reasoning": {
74+
"type": "boolean",
75+
"default": true,
76+
"description": "Enable reasoning trace for the `query` task."
77+
},
78+
"temperature": {
79+
"type": "number",
80+
"minimum": 0,
81+
"maximum": 2,
82+
"default": 0.2,
83+
"description": "Sampling temperature."
84+
},
85+
"top_p": {
86+
"type": "number",
87+
"minimum": 0,
88+
"maximum": 1,
89+
"default": 0.9,
90+
"description": "Top-p (nucleus) sampling."
91+
},
92+
"max_tokens": {
93+
"type": "integer",
94+
"minimum": 1,
95+
"maximum": 28672,
96+
"default": 8192,
97+
"description": "Max tokens to generate for `query` and `caption`."
98+
},
99+
"max_objects": {
100+
"type": "integer",
101+
"minimum": 1,
102+
"maximum": 500,
103+
"default": 150,
104+
"description": "Max objects to return for `point` and `detect`."
105+
},
106+
"stream": {
107+
"type": "boolean",
108+
"default": true,
109+
"description": "Return incremental tokens for `query` and `caption`. `point` and `detect` do not support streaming."
110+
}
111+
}
112+
},
113+
"output": {
114+
"type": "object",
115+
"contentType": "application/json",
116+
"properties": {
117+
"finish_reason": {
118+
"type": "string",
119+
"description": "Reason the generation finished."
120+
},
121+
"metrics": {
122+
"type": "object",
123+
"properties": {
124+
"input_tokens": {
125+
"type": "integer",
126+
"description": "Number of input tokens consumed."
127+
},
128+
"output_tokens": {
129+
"type": "integer",
130+
"description": "Number of output tokens generated."
131+
},
132+
"prefill_time_ms": {
133+
"type": "number",
134+
"description": "Prefill time in milliseconds."
135+
},
136+
"decode_time_ms": {
137+
"type": "number",
138+
"description": "Decode time in milliseconds."
139+
},
140+
"ttft_ms": {
141+
"type": "number",
142+
"description": "Time to first token in milliseconds."
143+
}
144+
},
145+
"required": [
146+
"input_tokens",
147+
"output_tokens",
148+
"prefill_time_ms",
149+
"decode_time_ms",
150+
"ttft_ms"
151+
]
152+
},
153+
"answer": {
154+
"type": "string",
155+
"description": "Answer text for the `query` task. Null for other tasks."
156+
},
157+
"caption": {
158+
"type": "string",
159+
"description": "Caption text for the `caption` task. Null for other tasks."
160+
},
161+
"points": {
162+
"type": "array",
163+
"description": "Located points for the `point` task. Null for other tasks.",
164+
"items": {
165+
"type": "object",
166+
"properties": {
167+
"x": {
168+
"type": "number",
169+
"description": "X coordinate."
170+
},
171+
"y": {
172+
"type": "number",
173+
"description": "Y coordinate."
174+
}
175+
},
176+
"required": [
177+
"x",
178+
"y"
179+
]
180+
}
181+
},
182+
"objects": {
183+
"type": "array",
184+
"description": "Detected bounding boxes for the `detect` task. Null for other tasks.",
185+
"items": {
186+
"type": "object",
187+
"properties": {
188+
"x_min": {
189+
"type": "number",
190+
"description": "Minimum X coordinate."
191+
},
192+
"y_min": {
193+
"type": "number",
194+
"description": "Minimum Y coordinate."
195+
},
196+
"x_max": {
197+
"type": "number",
198+
"description": "Maximum X coordinate."
199+
},
200+
"y_max": {
201+
"type": "number",
202+
"description": "Maximum Y coordinate."
203+
}
204+
},
205+
"required": [
206+
"x_min",
207+
"y_min",
208+
"x_max",
209+
"y_max"
210+
]
211+
}
212+
},
213+
"reasoning": {
214+
"type": "object",
215+
"description": "Reasoning trace for the `query` task when reasoning=true. Null otherwise.",
216+
"properties": {
217+
"text": {
218+
"type": "string",
219+
"description": "Reasoning text."
220+
},
221+
"grounding": {
222+
"type": "array",
223+
"description": "Grounding information.",
224+
"items": {
225+
"type": "object"
226+
}
227+
}
228+
},
229+
"required": [
230+
"text"
231+
]
232+
}
233+
},
234+
"required": [
235+
"finish_reason",
236+
"metrics"
237+
]
238+
}
239+
},
240+
"deprecated": false
241+
}

0 commit comments

Comments
 (0)