@missionsquad/browserai 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +15 -0
- package/README.md +229 -0
- package/dist/audio/clip.d.ts +51 -0
- package/dist/audio/clip.d.ts.map +1 -0
- package/dist/audio/clip.js +71 -0
- package/dist/audio/clip.js.map +1 -0
- package/dist/audio/decode.d.ts +7 -0
- package/dist/audio/decode.d.ts.map +1 -0
- package/dist/audio/decode.js +19 -0
- package/dist/audio/decode.js.map +1 -0
- package/dist/audio/pcm.d.ts +13 -0
- package/dist/audio/pcm.d.ts.map +1 -0
- package/dist/audio/pcm.js +66 -0
- package/dist/audio/pcm.js.map +1 -0
- package/dist/audio/recorder.d.ts +40 -0
- package/dist/audio/recorder.d.ts.map +1 -0
- package/dist/audio/recorder.js +127 -0
- package/dist/audio/recorder.js.map +1 -0
- package/dist/audio/streaming-player.d.ts +29 -0
- package/dist/audio/streaming-player.d.ts.map +1 -0
- package/dist/audio/streaming-player.js +82 -0
- package/dist/audio/streaming-player.js.map +1 -0
- package/dist/client.d.ts +195 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +638 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +81 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +19 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +52 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +74 -0
- package/dist/errors.js.map +1 -0
- package/dist/events.d.ts +18 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +43 -0
- package/dist/events.js.map +1 -0
- package/dist/generation.d.ts +12 -0
- package/dist/generation.d.ts.map +1 -0
- package/dist/generation.js +30 -0
- package/dist/generation.js.map +1 -0
- package/dist/hardware.d.ts +23 -0
- package/dist/hardware.d.ts.map +1 -0
- package/dist/hardware.js +150 -0
- package/dist/hardware.js.map +1 -0
- package/dist/history.d.ts +81 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +193 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/inference.d.ts +89 -0
- package/dist/inference.d.ts.map +1 -0
- package/dist/inference.js +411 -0
- package/dist/inference.js.map +1 -0
- package/dist/json.d.ts +22 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +145 -0
- package/dist/json.js.map +1 -0
- package/dist/metrics.d.ts +18 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +59 -0
- package/dist/metrics.js.map +1 -0
- package/dist/model-cache.d.ts +49 -0
- package/dist/model-cache.d.ts.map +1 -0
- package/dist/model-cache.js +511 -0
- package/dist/model-cache.js.map +1 -0
- package/dist/model-source.d.ts +27 -0
- package/dist/model-source.d.ts.map +1 -0
- package/dist/model-source.js +110 -0
- package/dist/model-source.js.map +1 -0
- package/dist/models.d.ts +103 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +1052 -0
- package/dist/models.js.map +1 -0
- package/dist/multimodal.d.ts +261 -0
- package/dist/multimodal.d.ts.map +1 -0
- package/dist/multimodal.js +506 -0
- package/dist/multimodal.js.map +1 -0
- package/dist/prompt.d.ts +13 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +32 -0
- package/dist/prompt.js.map +1 -0
- package/dist/proxy-verify.d.ts +10 -0
- package/dist/proxy-verify.d.ts.map +1 -0
- package/dist/proxy-verify.js +98 -0
- package/dist/proxy-verify.js.map +1 -0
- package/dist/schema-validator.d.ts +6 -0
- package/dist/schema-validator.d.ts.map +1 -0
- package/dist/schema-validator.js +104 -0
- package/dist/schema-validator.js.map +1 -0
- package/dist/schema.d.ts +98 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +115 -0
- package/dist/schema.js.map +1 -0
- package/dist/text-utils.d.ts +8 -0
- package/dist/text-utils.d.ts.map +1 -0
- package/dist/text-utils.js +14 -0
- package/dist/text-utils.js.map +1 -0
- package/dist/voice/helpers.d.ts +35 -0
- package/dist/voice/helpers.d.ts.map +1 -0
- package/dist/voice/helpers.js +49 -0
- package/dist/voice/helpers.js.map +1 -0
- package/dist/voice/voice-pipeline.d.ts +155 -0
- package/dist/voice/voice-pipeline.d.ts.map +1 -0
- package/dist/voice/voice-pipeline.js +407 -0
- package/dist/voice/voice-pipeline.js.map +1 -0
- package/dist/webllm.worker.d.ts +2 -0
- package/dist/webllm.worker.d.ts.map +1 -0
- package/dist/webllm.worker.js +8 -0
- package/dist/webllm.worker.js.map +1 -0
- package/package.json +62 -0
- package/src/audio/clip.ts +94 -0
- package/src/audio/decode.ts +19 -0
- package/src/audio/pcm.ts +62 -0
- package/src/audio/recorder.ts +146 -0
- package/src/audio/streaming-player.ts +99 -0
- package/src/client.ts +784 -0
- package/src/config.ts +104 -0
- package/src/errors.ts +81 -0
- package/src/events.ts +53 -0
- package/src/generation.ts +39 -0
- package/src/hardware.ts +193 -0
- package/src/history.ts +257 -0
- package/src/index.ts +203 -0
- package/src/inference.ts +579 -0
- package/src/json.ts +169 -0
- package/src/metrics.ts +63 -0
- package/src/model-cache.ts +637 -0
- package/src/model-source.ts +142 -0
- package/src/models.ts +1171 -0
- package/src/multimodal.ts +697 -0
- package/src/prompt.ts +33 -0
- package/src/proxy-verify.ts +113 -0
- package/src/schema-validator.ts +117 -0
- package/src/schema.ts +118 -0
- package/src/text-utils.ts +12 -0
- package/src/voice/helpers.ts +59 -0
- package/src/voice/voice-pipeline.ts +513 -0
- package/src/webllm.worker.ts +9 -0
- package/worker-template/README.md +39 -0
- package/worker-template/cloudflare-worker.ts +389 -0
- package/worker-template/wrangler.jsonc +19 -0
package/dist/models.js
ADDED
|
@@ -0,0 +1,1052 @@
|
|
|
1
|
+
/** Friendly capability names surfaced across the app (type chips/filters, setup dropdown/filters). */
|
|
2
|
+
export const TASK_LABELS = { text: "Text", vision: "Image", stt: "Transcription", tts: "Speech" };
|
|
3
|
+
export const TASK_ICONS = {
|
|
4
|
+
text: "mdi-text-box-outline",
|
|
5
|
+
vision: "mdi-image-outline",
|
|
6
|
+
stt: "mdi-microphone-outline",
|
|
7
|
+
tts: "mdi-account-voice",
|
|
8
|
+
};
|
|
9
|
+
export const MODALITY_LABELS = { text: "Text", image: "Image", audio: "Audio" };
|
|
10
|
+
export const MODALITY_ICONS = { text: "mdi-text", image: "mdi-image-outline", audio: "mdi-waveform" };
|
|
11
|
+
/** Task capabilities for a preset, defaulting a bare LLM to ["text"]. */
|
|
12
|
+
export function presetTasks(preset) {
|
|
13
|
+
return preset.tasks && preset.tasks.length > 0 ? preset.tasks : ["text"];
|
|
14
|
+
}
|
|
15
|
+
/** Canonical ordering of the four capability slots (Text / Image / Transcription / Speech). */
|
|
16
|
+
export const SLOT_ORDER = ["text", "vision", "stt", "tts"];
|
|
17
|
+
/**
|
|
18
|
+
* The capability SLOTS a model occupies when loaded — one per its {@link presetTasks}. Used to bound
|
|
19
|
+
* concurrent loads to one model per slot (Text/Image/Transcription/Speech).
|
|
20
|
+
*
|
|
21
|
+
* NOTE: image-text-to-text VLMs (SmolVLM/Qwen3-VL/GLM-OCR) do NOT fill the Text slot — their
|
|
22
|
+
* Transformers.js processors require an image and error ("No images provided") on text-only input, so
|
|
23
|
+
* they cannot drive the text tabs. Only genuine text runtimes (LLMs, and Gemma-4 multimodal which has
|
|
24
|
+
* a verified text path) fill Text. A VLM therefore occupies just the Image slot.
|
|
25
|
+
*/
|
|
26
|
+
export function modelSlots(preset) {
|
|
27
|
+
const slots = new Set(presetTasks(preset));
|
|
28
|
+
return SLOT_ORDER.filter((task) => slots.has(task));
|
|
29
|
+
}
|
|
30
|
+
export function presetModalityIn(preset) {
|
|
31
|
+
return preset.modalityIn && preset.modalityIn.length > 0 ? preset.modalityIn : ["text"];
|
|
32
|
+
}
|
|
33
|
+
export function presetModalityOut(preset) {
|
|
34
|
+
return preset.modalityOut && preset.modalityOut.length > 0 ? preset.modalityOut : ["text"];
|
|
35
|
+
}
|
|
36
|
+
/** Model ids of the TTS presets, used to look up their voice rosters. */
|
|
37
|
+
export const KOKORO_MODEL_ID = "onnx-community/Kokoro-82M-v1.0-ONNX";
|
|
38
|
+
export const SUPERTONIC_MODEL_ID = "onnx-community/Supertonic-TTS-ONNX";
|
|
39
|
+
export const SUPERTONIC_2_MODEL_ID = "onnx-community/Supertonic-TTS-2-ONNX";
|
|
40
|
+
/** Kokoro voice roster surfaced in the TTS tab (id → display name + tag), verified voice ids. */
|
|
41
|
+
export const KOKORO_VOICES = [
|
|
42
|
+
{ id: "af_heart", label: "Heart", tag: "US female" },
|
|
43
|
+
{ id: "af_bella", label: "Bella", tag: "US female" },
|
|
44
|
+
{ id: "am_michael", label: "Michael", tag: "US male" },
|
|
45
|
+
{ id: "am_fenrir", label: "Fenrir", tag: "US male" },
|
|
46
|
+
{ id: "bf_emma", label: "Emma", tag: "UK female" },
|
|
47
|
+
{ id: "bm_george", label: "George", tag: "UK male" },
|
|
48
|
+
];
|
|
49
|
+
/**
|
|
50
|
+
* Supertonic speaker roster. The repo ships ten speaker-embedding files under `voices/` — F1–F5
|
|
51
|
+
* (female) and M1–M5 (male) — verified against the Hugging Face repo file tree. The voice id is the
|
|
52
|
+
* `.bin` basename consumed as the pipeline's `speaker_embeddings`.
|
|
53
|
+
*/
|
|
54
|
+
export const SUPERTONIC_VOICES = [
|
|
55
|
+
{ id: "F1", label: "Female 1", tag: "English" },
|
|
56
|
+
{ id: "F2", label: "Female 2", tag: "English" },
|
|
57
|
+
{ id: "F3", label: "Female 3", tag: "English" },
|
|
58
|
+
{ id: "F4", label: "Female 4", tag: "English" },
|
|
59
|
+
{ id: "F5", label: "Female 5", tag: "English" },
|
|
60
|
+
{ id: "M1", label: "Male 1", tag: "English" },
|
|
61
|
+
{ id: "M2", label: "Male 2", tag: "English" },
|
|
62
|
+
{ id: "M3", label: "Male 3", tag: "English" },
|
|
63
|
+
{ id: "M4", label: "Male 4", tag: "English" },
|
|
64
|
+
{ id: "M5", label: "Male 5", tag: "English" },
|
|
65
|
+
];
|
|
66
|
+
/** The selectable voices for a TTS model (empty for non-TTS models). */
|
|
67
|
+
export function ttsVoicesForModel(modelId) {
|
|
68
|
+
if (modelId === KOKORO_MODEL_ID)
|
|
69
|
+
return KOKORO_VOICES;
|
|
70
|
+
if (modelId === SUPERTONIC_MODEL_ID || modelId === SUPERTONIC_2_MODEL_ID)
|
|
71
|
+
return SUPERTONIC_VOICES;
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
function extractionPreset(overrides = {}) {
|
|
75
|
+
return {
|
|
76
|
+
maxTokens: 512,
|
|
77
|
+
temperature: 0,
|
|
78
|
+
topP: 0.85,
|
|
79
|
+
repetitionPenalty: 1.08,
|
|
80
|
+
frequencyPenalty: 0.2,
|
|
81
|
+
presencePenalty: 0,
|
|
82
|
+
seed: 42,
|
|
83
|
+
disableThinking: false,
|
|
84
|
+
...overrides,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const gemmaFixedContextOverrides = {
|
|
88
|
+
// Gemma 3 and current experimental Gemma 4 MLC configs can expose both values as positive
|
|
89
|
+
// (for example context_window_size=4096 and sliding_window_size=512). WebLLM requires one
|
|
90
|
+
// KV-cache strategy at load time, so use the fixed context-window path for this demo.
|
|
91
|
+
context_window_size: 4096,
|
|
92
|
+
sliding_window_size: -1,
|
|
93
|
+
max_history_size: 1,
|
|
94
|
+
};
|
|
95
|
+
export const MODEL_RECORD_OVERRIDES = {
|
|
96
|
+
"gemma3-1b-it-q4f16_1-MLC": gemmaFixedContextOverrides,
|
|
97
|
+
"gemma-4-E2B-it-q4f16_1-MLC": gemmaFixedContextOverrides,
|
|
98
|
+
"gemma-4-E4B-it-q4f16_1-MLC": gemmaFixedContextOverrides,
|
|
99
|
+
};
|
|
100
|
+
export function applyCuratedModelRecordOverrides(record) {
|
|
101
|
+
const overrides = MODEL_RECORD_OVERRIDES[record.model_id];
|
|
102
|
+
if (!overrides)
|
|
103
|
+
return record;
|
|
104
|
+
return {
|
|
105
|
+
...record,
|
|
106
|
+
overrides: {
|
|
107
|
+
...(record.overrides ?? {}),
|
|
108
|
+
...overrides,
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
// Gemma 4 is not bundled in @mlc-ai/web-llm 0.2.84's prebuiltAppConfig.
|
|
113
|
+
// WebLLM supports custom MLC model records, so these third-party records are appended
|
|
114
|
+
// to the runtime AppConfig and their artifacts are proxied through the Cloudflare Worker.
|
|
115
|
+
// Keep these marked experimental until they are tested on your target hardware.
|
|
116
|
+
export const CUSTOM_MODEL_RECORDS = [
|
|
117
|
+
{
|
|
118
|
+
model: "https://huggingface.co/welcoma/gemma-4-E2B-it-q4f16_1-MLC",
|
|
119
|
+
model_id: "gemma-4-E2B-it-q4f16_1-MLC",
|
|
120
|
+
model_lib: "https://huggingface.co/welcoma/gemma-4-E2B-it-q4f16_1-MLC/resolve/main/libs/gemma-4-E2B-it-q4f16_1-MLC-webgpu.wasm",
|
|
121
|
+
vram_required_MB: 4096,
|
|
122
|
+
low_resource_required: false,
|
|
123
|
+
required_features: ["shader-f16"],
|
|
124
|
+
overrides: gemmaFixedContextOverrides,
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
model: "https://huggingface.co/welcoma/gemma-4-E4B-it-q4f16_1-MLC",
|
|
128
|
+
model_id: "gemma-4-E4B-it-q4f16_1-MLC",
|
|
129
|
+
model_lib: "https://huggingface.co/welcoma/gemma-4-E4B-it-q4f16_1-MLC/resolve/main/libs/gemma-4-E4B-it-q4f16_1-MLC-webgpu.wasm",
|
|
130
|
+
vram_required_MB: 6144,
|
|
131
|
+
low_resource_required: false,
|
|
132
|
+
required_features: ["shader-f16"],
|
|
133
|
+
overrides: gemmaFixedContextOverrides,
|
|
134
|
+
},
|
|
135
|
+
];
|
|
136
|
+
export const CUSTOM_MODEL_RECORD_IDS = new Set(CUSTOM_MODEL_RECORDS.map((record) => record.model_id));
|
|
137
|
+
export const MODEL_PRESETS = [
|
|
138
|
+
{
|
|
139
|
+
id: "Qwen3.5-0.8B-q4f16_1-MLC",
|
|
140
|
+
label: "Qwen3.5 0.8B q4f16 — recommended tested default (~1.6 GB VRAM)",
|
|
141
|
+
shortName: "Qwen3.5 0.8B",
|
|
142
|
+
description: "Default browser-extraction model. It is the smallest recent WebLLM Qwen3.5 option and has worked well for deterministic JSON extraction in this app.",
|
|
143
|
+
approximateDownload: "~447 MB model files plus browser cache overhead",
|
|
144
|
+
vramRequiredMB: 1629.49,
|
|
145
|
+
vramSource: "webllm",
|
|
146
|
+
lowResourceRequired: true,
|
|
147
|
+
disableThinkingSupported: true,
|
|
148
|
+
defaultRuntime: extractionPreset({ disableThinking: true }),
|
|
149
|
+
source: "webllm-prebuilt",
|
|
150
|
+
backend: "webllm",
|
|
151
|
+
stability: "recommended",
|
|
152
|
+
officialRepo: "https://huggingface.co/mlc-ai/Qwen3.5-0.8B-q4f16_1-MLC",
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
id: "Qwen3.5-2B-q4f16_1-MLC",
|
|
156
|
+
label: "Qwen3.5 2B q4f16 — better quality, moderate memory (~2.2 GB VRAM)",
|
|
157
|
+
shortName: "Qwen3.5 2B",
|
|
158
|
+
description: "Larger Qwen3.5 option for better instruction following and JSON extraction when the device has enough GPU memory.",
|
|
159
|
+
approximateDownload: "larger multi-file model download plus browser cache overhead",
|
|
160
|
+
vramRequiredMB: 2245.44,
|
|
161
|
+
vramSource: "webllm",
|
|
162
|
+
lowResourceRequired: false,
|
|
163
|
+
disableThinkingSupported: true,
|
|
164
|
+
defaultRuntime: extractionPreset({ maxTokens: 640, disableThinking: true }),
|
|
165
|
+
source: "webllm-prebuilt",
|
|
166
|
+
backend: "webllm",
|
|
167
|
+
stability: "stable",
|
|
168
|
+
officialRepo: "https://huggingface.co/mlc-ai/Qwen3.5-2B-q4f16_1-MLC",
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
id: "Qwen3.5-4B-q4f16_1-MLC",
|
|
172
|
+
label: "Qwen3.5 4B q4f16 — higher quality desktop option (~3.8 GB VRAM)",
|
|
173
|
+
shortName: "Qwen3.5 4B",
|
|
174
|
+
description: "Higher-quality Qwen3.5 option for desktop GPUs. Use when extraction quality is more important than load time and memory footprint.",
|
|
175
|
+
approximateDownload: "large multi-file model download plus browser cache overhead",
|
|
176
|
+
vramRequiredMB: 3867.82,
|
|
177
|
+
vramSource: "webllm",
|
|
178
|
+
lowResourceRequired: false,
|
|
179
|
+
disableThinkingSupported: true,
|
|
180
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, disableThinking: true, repetitionPenalty: 1.06 }),
|
|
181
|
+
source: "webllm-prebuilt",
|
|
182
|
+
backend: "webllm",
|
|
183
|
+
stability: "stable",
|
|
184
|
+
officialRepo: "https://huggingface.co/mlc-ai/Qwen3.5-4B-q4f16_1-MLC",
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
id: "gemma3-1b-it-q4f16_1-MLC",
|
|
188
|
+
label: "Gemma 3 1B IT q4f16 — small Google fallback (~711 MB VRAM)",
|
|
189
|
+
shortName: "Gemma 3 1B",
|
|
190
|
+
description: "Small official WebLLM Gemma 3 model. This build uses a fixed-context override in the app so WebLLM does not try to enable both context-window and sliding-window KV-cache modes.",
|
|
191
|
+
approximateDownload: "small model download plus browser cache overhead",
|
|
192
|
+
vramRequiredMB: 711.07,
|
|
193
|
+
vramSource: "webllm",
|
|
194
|
+
lowResourceRequired: true,
|
|
195
|
+
disableThinkingSupported: false,
|
|
196
|
+
defaultRuntime: extractionPreset({ maxTokens: 512, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
197
|
+
source: "webllm-prebuilt",
|
|
198
|
+
backend: "webllm",
|
|
199
|
+
stability: "stable",
|
|
200
|
+
officialRepo: "https://huggingface.co/mlc-ai/gemma3-1b-it-q4f16_1-MLC",
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
id: "gemma-4-E2B-it-q4f16_1-MLC",
|
|
204
|
+
label: "Gemma 4 E2B IT q4f16 — experimental custom WebLLM build (~4 GB VRAM est.)",
|
|
205
|
+
shortName: "Gemma 4 E2B",
|
|
206
|
+
description: "Smallest Gemma 4 instruction option available here. This uses a third-party custom MLC/WebLLM artifact and a fixed-context override for WebLLM KV-cache loading.",
|
|
207
|
+
approximateDownload: "~2.7 GB model repo plus browser cache overhead",
|
|
208
|
+
vramRequiredMB: 4096,
|
|
209
|
+
vramSource: "estimated",
|
|
210
|
+
lowResourceRequired: false,
|
|
211
|
+
disableThinkingSupported: false,
|
|
212
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
213
|
+
source: "custom-mlc",
|
|
214
|
+
backend: "webllm",
|
|
215
|
+
stability: "experimental",
|
|
216
|
+
officialRepo: "https://huggingface.co/google/gemma-4-E2B-it",
|
|
217
|
+
artifactRepo: "https://huggingface.co/welcoma/gemma-4-E2B-it-q4f16_1-MLC",
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
id: "gemma-4-E4B-it-q4f16_1-MLC",
|
|
221
|
+
label: "Gemma 4 E4B IT q4f16 — experimental larger Gemma 4 build (~6 GB VRAM est.)",
|
|
222
|
+
shortName: "Gemma 4 E4B",
|
|
223
|
+
description: "Larger Gemma 4 instruction option for desktop/high-memory testing. This uses the same fixed-context WebLLM load override as the E2B option.",
|
|
224
|
+
approximateDownload: "~4.3 GB model repo plus browser cache overhead",
|
|
225
|
+
vramRequiredMB: 6144,
|
|
226
|
+
vramSource: "estimated",
|
|
227
|
+
lowResourceRequired: false,
|
|
228
|
+
disableThinkingSupported: false,
|
|
229
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
230
|
+
source: "custom-mlc",
|
|
231
|
+
backend: "webllm",
|
|
232
|
+
stability: "experimental",
|
|
233
|
+
officialRepo: "https://huggingface.co/google/gemma-4-E4B-it",
|
|
234
|
+
artifactRepo: "https://huggingface.co/welcoma/gemma-4-E4B-it-q4f16_1-MLC",
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
id: "onnx-community/whisper-base",
|
|
238
|
+
label: "Whisper Base — multilingual speech-to-text via Transformers.js/WebGPU",
|
|
239
|
+
shortName: "Whisper Base",
|
|
240
|
+
description: "OpenAI Whisper base — dependable multilingual speech-to-text with punctuation and segment timestamps.",
|
|
241
|
+
approximateDownload: "~145 MB (encoder fp32 + q4/q8 decoder) plus browser cache overhead",
|
|
242
|
+
vramRequiredMB: 500,
|
|
243
|
+
vramSource: "estimated",
|
|
244
|
+
lowResourceRequired: true,
|
|
245
|
+
disableThinkingSupported: false,
|
|
246
|
+
defaultRuntime: extractionPreset(),
|
|
247
|
+
source: "transformers-onnx",
|
|
248
|
+
backend: "transformers-js",
|
|
249
|
+
stability: "recommended",
|
|
250
|
+
officialRepo: "https://huggingface.co/onnx-community/whisper-base",
|
|
251
|
+
tasks: ["stt"],
|
|
252
|
+
modalityIn: ["audio"],
|
|
253
|
+
modalityOut: ["text"],
|
|
254
|
+
mmRuntime: "stt",
|
|
255
|
+
brand: "OpenAI",
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
id: "onnx-community/whisper-tiny",
|
|
259
|
+
label: "Whisper Tiny — smallest multilingual speech-to-text",
|
|
260
|
+
shortName: "Whisper Tiny",
|
|
261
|
+
description: "Smallest Whisper. Ultra-fast multilingual transcription for low-memory devices.",
|
|
262
|
+
approximateDownload: "~41 MB q8 ONNX plus browser cache overhead",
|
|
263
|
+
vramRequiredMB: 250,
|
|
264
|
+
vramSource: "estimated",
|
|
265
|
+
lowResourceRequired: true,
|
|
266
|
+
disableThinkingSupported: false,
|
|
267
|
+
defaultRuntime: extractionPreset(),
|
|
268
|
+
source: "transformers-onnx",
|
|
269
|
+
backend: "transformers-js",
|
|
270
|
+
stability: "stable",
|
|
271
|
+
officialRepo: "https://huggingface.co/onnx-community/whisper-tiny",
|
|
272
|
+
tasks: ["stt"],
|
|
273
|
+
modalityIn: ["audio"],
|
|
274
|
+
modalityOut: ["text"],
|
|
275
|
+
mmRuntime: "stt",
|
|
276
|
+
brand: "OpenAI",
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
id: "onnx-community/moonshine-base-ONNX",
|
|
280
|
+
label: "Moonshine Base — fast English on-device speech-to-text",
|
|
281
|
+
shortName: "Moonshine Base",
|
|
282
|
+
description: "Fast English speech-to-text tuned for short, real-time clips and low-latency on-device transcription.",
|
|
283
|
+
approximateDownload: "~63 MB q8 ONNX plus browser cache overhead",
|
|
284
|
+
vramRequiredMB: 400,
|
|
285
|
+
vramSource: "estimated",
|
|
286
|
+
lowResourceRequired: true,
|
|
287
|
+
disableThinkingSupported: false,
|
|
288
|
+
defaultRuntime: extractionPreset(),
|
|
289
|
+
source: "transformers-onnx",
|
|
290
|
+
backend: "transformers-js",
|
|
291
|
+
stability: "stable",
|
|
292
|
+
officialRepo: "https://huggingface.co/onnx-community/moonshine-base-ONNX",
|
|
293
|
+
tasks: ["stt"],
|
|
294
|
+
modalityIn: ["audio"],
|
|
295
|
+
modalityOut: ["text"],
|
|
296
|
+
mmRuntime: "stt",
|
|
297
|
+
brand: "Moonshine",
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
id: "onnx-community/moonshine-tiny-ONNX",
|
|
301
|
+
label: "Moonshine Tiny — smallest fast English on-device speech-to-text",
|
|
302
|
+
shortName: "Moonshine Tiny",
|
|
303
|
+
description: "Smallest Moonshine. Ultra-low-latency English speech-to-text for short, real-time clips on low-memory devices.",
|
|
304
|
+
approximateDownload: "~75 MB (fp32 encoder + q4 decoder) plus browser cache overhead",
|
|
305
|
+
vramRequiredMB: 250,
|
|
306
|
+
vramSource: "estimated",
|
|
307
|
+
lowResourceRequired: true,
|
|
308
|
+
disableThinkingSupported: false,
|
|
309
|
+
defaultRuntime: extractionPreset(),
|
|
310
|
+
source: "transformers-onnx",
|
|
311
|
+
backend: "transformers-js",
|
|
312
|
+
stability: "stable",
|
|
313
|
+
officialRepo: "https://huggingface.co/onnx-community/moonshine-tiny-ONNX",
|
|
314
|
+
tasks: ["stt"],
|
|
315
|
+
modalityIn: ["audio"],
|
|
316
|
+
modalityOut: ["text"],
|
|
317
|
+
mmRuntime: "stt",
|
|
318
|
+
brand: "Moonshine",
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
id: "onnx-community/whisper-medium_timestamped",
|
|
322
|
+
label: "Whisper Medium — higher-accuracy multilingual speech-to-text (word timestamps)",
|
|
323
|
+
shortName: "Whisper Medium",
|
|
324
|
+
description: "OpenAI Whisper medium (~769M) with word-level timestamps. Stronger multilingual accuracy than Base/Tiny, at a much larger download and slower first load.",
|
|
325
|
+
approximateDownload: "~1.7 GB (fp32 encoder + q4 decoder) plus browser cache overhead",
|
|
326
|
+
vramRequiredMB: 1800,
|
|
327
|
+
vramSource: "estimated",
|
|
328
|
+
lowResourceRequired: false,
|
|
329
|
+
disableThinkingSupported: false,
|
|
330
|
+
defaultRuntime: extractionPreset(),
|
|
331
|
+
source: "transformers-onnx",
|
|
332
|
+
backend: "transformers-js",
|
|
333
|
+
stability: "experimental",
|
|
334
|
+
officialRepo: "https://huggingface.co/onnx-community/whisper-medium_timestamped",
|
|
335
|
+
tasks: ["stt"],
|
|
336
|
+
modalityIn: ["audio"],
|
|
337
|
+
modalityOut: ["text"],
|
|
338
|
+
mmRuntime: "stt",
|
|
339
|
+
brand: "OpenAI",
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
id: "onnx-community/whisper-medium.en_timestamped",
|
|
343
|
+
label: "Whisper Medium English — English-only medium speech-to-text (word timestamps)",
|
|
344
|
+
shortName: "Whisper Medium EN",
|
|
345
|
+
description: "English-only Whisper medium (~769M) with word-level timestamps. Tuned for English accuracy; do not use it for other languages.",
|
|
346
|
+
approximateDownload: "~1.7 GB (fp32 encoder + q4 decoder) plus browser cache overhead",
|
|
347
|
+
vramRequiredMB: 1800,
|
|
348
|
+
vramSource: "estimated",
|
|
349
|
+
lowResourceRequired: false,
|
|
350
|
+
disableThinkingSupported: false,
|
|
351
|
+
defaultRuntime: extractionPreset(),
|
|
352
|
+
source: "transformers-onnx",
|
|
353
|
+
backend: "transformers-js",
|
|
354
|
+
stability: "experimental",
|
|
355
|
+
officialRepo: "https://huggingface.co/onnx-community/whisper-medium.en_timestamped",
|
|
356
|
+
tasks: ["stt"],
|
|
357
|
+
modalityIn: ["audio"],
|
|
358
|
+
modalityOut: ["text"],
|
|
359
|
+
mmRuntime: "stt",
|
|
360
|
+
brand: "OpenAI",
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
id: "onnx-community/cohere-transcribe-03-2026-ONNX",
|
|
364
|
+
label: "Cohere Transcribe — multilingual speech-to-text via Transformers.js/WebGPU",
|
|
365
|
+
shortName: "Cohere Transcribe",
|
|
366
|
+
description: "Cohere's multilingual transcription model (14 languages). Loads via the automatic-speech-recognition pipeline with a flat q4 dtype — its fp32 encoder is multiple GB, so q4 is the documented WebGPU recipe.",
|
|
367
|
+
approximateDownload: "~2.1 GB q4 ONNX (q4 encoder + q4 decoder) plus browser cache overhead",
|
|
368
|
+
vramRequiredMB: 2600,
|
|
369
|
+
vramSource: "estimated",
|
|
370
|
+
lowResourceRequired: false,
|
|
371
|
+
disableThinkingSupported: false,
|
|
372
|
+
defaultRuntime: extractionPreset(),
|
|
373
|
+
source: "transformers-onnx",
|
|
374
|
+
backend: "transformers-js",
|
|
375
|
+
stability: "experimental",
|
|
376
|
+
officialRepo: "https://huggingface.co/onnx-community/cohere-transcribe-03-2026-ONNX",
|
|
377
|
+
transformersDtype: "q4",
|
|
378
|
+
tasks: ["stt"],
|
|
379
|
+
modalityIn: ["audio"],
|
|
380
|
+
modalityOut: ["text"],
|
|
381
|
+
mmRuntime: "stt",
|
|
382
|
+
brand: "Cohere",
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
id: "onnx-community/parakeet-ctc-0.6b-ONNX",
|
|
386
|
+
label: "Parakeet CTC 0.6B — fast low-latency English speech-to-text (NVIDIA FastConformer)",
|
|
387
|
+
shortName: "Parakeet CTC 0.6B",
|
|
388
|
+
description: "NVIDIA Parakeet CTC 0.6B (FastConformer). Fast, low-latency English transcription through the CTC speech-recognition pipeline. Loads with a flat q4f16 dtype (single-module CTC model — no separate encoder/decoder).",
|
|
389
|
+
approximateDownload: "~450 MB q4f16 ONNX plus browser cache overhead",
|
|
390
|
+
vramRequiredMB: 1200,
|
|
391
|
+
vramSource: "estimated",
|
|
392
|
+
lowResourceRequired: false,
|
|
393
|
+
disableThinkingSupported: false,
|
|
394
|
+
defaultRuntime: extractionPreset(),
|
|
395
|
+
source: "transformers-onnx",
|
|
396
|
+
backend: "transformers-js",
|
|
397
|
+
stability: "experimental",
|
|
398
|
+
officialRepo: "https://huggingface.co/onnx-community/parakeet-ctc-0.6b-ONNX",
|
|
399
|
+
transformersDtype: "q4f16",
|
|
400
|
+
tasks: ["stt"],
|
|
401
|
+
modalityIn: ["audio"],
|
|
402
|
+
modalityOut: ["text"],
|
|
403
|
+
mmRuntime: "stt",
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
id: "onnx-community/granite-speech-4.1-2b-ONNX",
|
|
407
|
+
label: "IBM Granite Speech 4.1 2B — audio-LLM speech-to-text via Transformers.js/WebGPU",
|
|
408
|
+
shortName: "Granite Speech 2B",
|
|
409
|
+
description: "IBM Granite Speech (2B): a speech-aware LLM (Conformer encoder + Granite LLM + audio LoRA) with strong English ASR. Runs through the audio-text-to-text recipe — it generates the transcript, so there are no per-segment timestamps.",
|
|
410
|
+
approximateDownload: "~1.5 GB q4f16 ONNX (audio encoder + decoder + embeddings) plus browser cache overhead",
|
|
411
|
+
vramRequiredMB: 2200,
|
|
412
|
+
vramSource: "estimated",
|
|
413
|
+
lowResourceRequired: false,
|
|
414
|
+
disableThinkingSupported: false,
|
|
415
|
+
defaultRuntime: extractionPreset(),
|
|
416
|
+
source: "transformers-onnx",
|
|
417
|
+
backend: "transformers-js",
|
|
418
|
+
stability: "experimental",
|
|
419
|
+
officialRepo: "https://huggingface.co/onnx-community/granite-speech-4.1-2b-ONNX",
|
|
420
|
+
transformersDtype: "q4f16",
|
|
421
|
+
tasks: ["stt"],
|
|
422
|
+
modalityIn: ["audio"],
|
|
423
|
+
modalityOut: ["text"],
|
|
424
|
+
mmRuntime: "audio-text-to-text",
|
|
425
|
+
brand: "IBM Granite",
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
id: "onnx-community/Voxtral-Mini-4B-Realtime-2602-ONNX",
|
|
429
|
+
label: "Voxtral Mini 4B Realtime — Mistral audio-LLM speech-to-text via Transformers.js/WebGPU",
|
|
430
|
+
shortName: "Voxtral Mini 4B RT",
|
|
431
|
+
description: "Mistral Voxtral Mini 4B: an audio-LLM for multilingual transcription (14 languages) built on Ministral. Runs through the audio-text-to-text recipe as a single-pass transcription. This is the realtime/streaming checkpoint and is heavy (4B), so single-pass output quality should be validated on your hardware.",
|
|
432
|
+
approximateDownload: "~2.8 GB q4f16 ONNX (audio encoder + decoder + embeddings) plus browser cache overhead",
|
|
433
|
+
vramRequiredMB: 4096,
|
|
434
|
+
vramSource: "estimated",
|
|
435
|
+
lowResourceRequired: false,
|
|
436
|
+
disableThinkingSupported: false,
|
|
437
|
+
defaultRuntime: extractionPreset(),
|
|
438
|
+
source: "transformers-onnx",
|
|
439
|
+
backend: "transformers-js",
|
|
440
|
+
stability: "experimental",
|
|
441
|
+
officialRepo: "https://huggingface.co/mistralai/Voxtral-Mini-4B-Realtime-2602",
|
|
442
|
+
artifactRepo: "https://huggingface.co/onnx-community/Voxtral-Mini-4B-Realtime-2602-ONNX",
|
|
443
|
+
transformersDtype: "q4f16",
|
|
444
|
+
tasks: ["stt"],
|
|
445
|
+
modalityIn: ["audio"],
|
|
446
|
+
modalityOut: ["text"],
|
|
447
|
+
mmRuntime: "voxtral-realtime",
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
id: "onnx-community/Kokoro-82M-v1.0-ONNX",
|
|
451
|
+
label: "Kokoro 82M — natural on-device text-to-speech (kokoro-js)",
|
|
452
|
+
shortName: "Kokoro 82M",
|
|
453
|
+
description: "Compact, natural text-to-speech with a library of expressive voices. A browser-TTS favorite.",
|
|
454
|
+
approximateDownload: "~86 MB q8 (326 MB fp32 on WebGPU) plus browser cache overhead",
|
|
455
|
+
vramRequiredMB: 420,
|
|
456
|
+
vramSource: "estimated",
|
|
457
|
+
lowResourceRequired: true,
|
|
458
|
+
disableThinkingSupported: false,
|
|
459
|
+
defaultRuntime: extractionPreset(),
|
|
460
|
+
source: "transformers-onnx",
|
|
461
|
+
backend: "transformers-js",
|
|
462
|
+
stability: "recommended",
|
|
463
|
+
officialRepo: "https://huggingface.co/onnx-community/Kokoro-82M-v1.0-ONNX",
|
|
464
|
+
tasks: ["tts"],
|
|
465
|
+
modalityIn: ["text"],
|
|
466
|
+
modalityOut: ["audio"],
|
|
467
|
+
mmRuntime: "tts-kokoro",
|
|
468
|
+
brand: "Kokoro",
|
|
469
|
+
notes: "Loaded via kokoro-js from CDN; it bundles its own Transformers.js runtime and fetches weights directly from Hugging Face.",
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
id: "onnx-community/Supertonic-TTS-ONNX",
|
|
473
|
+
label: "Supertonic — low-latency streaming text-to-speech (native pipeline)",
|
|
474
|
+
shortName: "Supertonic",
|
|
475
|
+
description: "Very low-latency on-device text-to-speech built for real-time streaming playback.",
|
|
476
|
+
approximateDownload: "~fp32 ONNX plus browser cache overhead",
|
|
477
|
+
vramRequiredMB: 350,
|
|
478
|
+
vramSource: "estimated",
|
|
479
|
+
lowResourceRequired: true,
|
|
480
|
+
disableThinkingSupported: false,
|
|
481
|
+
defaultRuntime: extractionPreset(),
|
|
482
|
+
source: "transformers-onnx",
|
|
483
|
+
backend: "transformers-js",
|
|
484
|
+
stability: "experimental",
|
|
485
|
+
officialRepo: "https://huggingface.co/onnx-community/Supertonic-TTS-ONNX",
|
|
486
|
+
tasks: ["tts"],
|
|
487
|
+
modalityIn: ["text"],
|
|
488
|
+
modalityOut: ["audio"],
|
|
489
|
+
mmRuntime: "tts-pipeline",
|
|
490
|
+
brand: "Supertonic",
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
id: "onnx-community/Supertonic-TTS-2-ONNX",
|
|
494
|
+
label: "Supertonic 2 — multilingual low-latency streaming text-to-speech (native pipeline)",
|
|
495
|
+
shortName: "Supertonic 2",
|
|
496
|
+
description: "Second-generation Supertonic: very low-latency on-device text-to-speech for real-time streaming playback, now multilingual (English, Korean, Spanish, Portuguese, French). Same ten F1–F5 / M1–M5 speaker voices as v1.",
|
|
497
|
+
approximateDownload: "~260 MB fp32 ONNX plus browser cache overhead",
|
|
498
|
+
vramRequiredMB: 400,
|
|
499
|
+
vramSource: "estimated",
|
|
500
|
+
lowResourceRequired: true,
|
|
501
|
+
disableThinkingSupported: false,
|
|
502
|
+
defaultRuntime: extractionPreset(),
|
|
503
|
+
source: "transformers-onnx",
|
|
504
|
+
backend: "transformers-js",
|
|
505
|
+
stability: "experimental",
|
|
506
|
+
officialRepo: "https://huggingface.co/onnx-community/Supertonic-TTS-2-ONNX",
|
|
507
|
+
tasks: ["tts"],
|
|
508
|
+
modalityIn: ["text"],
|
|
509
|
+
modalityOut: ["audio"],
|
|
510
|
+
mmRuntime: "tts-pipeline",
|
|
511
|
+
brand: "Supertonic",
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
id: "HuggingFaceTB/SmolVLM-256M-Instruct",
|
|
515
|
+
label: "SmolVLM 256M — tiny vision-language model via Transformers.js/WebGPU",
|
|
516
|
+
shortName: "SmolVLM 256M",
|
|
517
|
+
description: "Tiny vision-language model for captioning and quick image Q&A. Runs on almost any device.",
|
|
518
|
+
approximateDownload: "~190 MB q4f16 ONNX plus browser cache overhead",
|
|
519
|
+
vramRequiredMB: 600,
|
|
520
|
+
vramSource: "estimated",
|
|
521
|
+
lowResourceRequired: true,
|
|
522
|
+
disableThinkingSupported: false,
|
|
523
|
+
defaultRuntime: extractionPreset(),
|
|
524
|
+
source: "transformers-onnx",
|
|
525
|
+
backend: "transformers-js",
|
|
526
|
+
stability: "stable",
|
|
527
|
+
officialRepo: "https://huggingface.co/HuggingFaceTB/SmolVLM-256M-Instruct",
|
|
528
|
+
transformersDtype: "q4",
|
|
529
|
+
tasks: ["vision"],
|
|
530
|
+
modalityIn: ["text", "image"],
|
|
531
|
+
modalityOut: ["text"],
|
|
532
|
+
mmRuntime: "vlm-vision2seq",
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
id: "HuggingFaceTB/SmolVLM-500M-Instruct",
|
|
536
|
+
label: "SmolVLM 500M — stronger small vision-language model",
|
|
537
|
+
shortName: "SmolVLM 500M",
|
|
538
|
+
description: "Small vision-language model with stronger scene and document understanding than the 256M build.",
|
|
539
|
+
approximateDownload: "~250 MB q4f16 ONNX plus browser cache overhead",
|
|
540
|
+
vramRequiredMB: 900,
|
|
541
|
+
vramSource: "estimated",
|
|
542
|
+
lowResourceRequired: false,
|
|
543
|
+
disableThinkingSupported: false,
|
|
544
|
+
defaultRuntime: extractionPreset(),
|
|
545
|
+
source: "transformers-onnx",
|
|
546
|
+
backend: "transformers-js",
|
|
547
|
+
stability: "stable",
|
|
548
|
+
officialRepo: "https://huggingface.co/HuggingFaceTB/SmolVLM-500M-Instruct",
|
|
549
|
+
transformersDtype: "q4",
|
|
550
|
+
tasks: ["vision"],
|
|
551
|
+
modalityIn: ["text", "image"],
|
|
552
|
+
modalityOut: ["text"],
|
|
553
|
+
mmRuntime: "vlm-vision2seq",
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
id: "onnx-community/Qwen3-VL-2B-Instruct-ONNX",
|
|
557
|
+
label: "Qwen3-VL 2B — capable vision-language model via Transformers.js/WebGPU",
|
|
558
|
+
shortName: "Qwen3-VL 2B",
|
|
559
|
+
description: "Capable vision-language model for detailed image reasoning, charts, screenshots, and multi-step questions.",
|
|
560
|
+
approximateDownload: "~1.5 GB mixed-precision ONNX plus browser cache overhead",
|
|
561
|
+
vramRequiredMB: 2500,
|
|
562
|
+
vramSource: "estimated",
|
|
563
|
+
lowResourceRequired: false,
|
|
564
|
+
disableThinkingSupported: false,
|
|
565
|
+
defaultRuntime: extractionPreset(),
|
|
566
|
+
source: "transformers-onnx",
|
|
567
|
+
backend: "transformers-js",
|
|
568
|
+
stability: "experimental",
|
|
569
|
+
officialRepo: "https://huggingface.co/Qwen/Qwen3-VL-2B-Instruct",
|
|
570
|
+
artifactRepo: "https://huggingface.co/onnx-community/Qwen3-VL-2B-Instruct-ONNX",
|
|
571
|
+
tasks: ["vision"],
|
|
572
|
+
modalityIn: ["text", "image"],
|
|
573
|
+
modalityOut: ["text"],
|
|
574
|
+
mmRuntime: "vlm-imagetext",
|
|
575
|
+
},
|
|
576
|
+
{
|
|
577
|
+
id: "wolfofbackstreet/GLM-OCR-ONNX-q4f16",
|
|
578
|
+
label: "GLM-OCR — document OCR vision-language model via Transformers.js/WebGPU",
|
|
579
|
+
shortName: "GLM-OCR",
|
|
580
|
+
description: "Document-focused vision model for OCR, layout parsing, and structured text extraction from images.",
|
|
581
|
+
approximateDownload: "~658 MB q4f16 ONNX plus browser cache overhead",
|
|
582
|
+
vramRequiredMB: 1800,
|
|
583
|
+
vramSource: "estimated",
|
|
584
|
+
lowResourceRequired: false,
|
|
585
|
+
disableThinkingSupported: false,
|
|
586
|
+
defaultRuntime: extractionPreset(),
|
|
587
|
+
source: "transformers-onnx",
|
|
588
|
+
backend: "transformers-js",
|
|
589
|
+
stability: "experimental",
|
|
590
|
+
officialRepo: "https://huggingface.co/zai-org/GLM-OCR",
|
|
591
|
+
artifactRepo: "https://huggingface.co/wolfofbackstreet/GLM-OCR-ONNX-q4f16",
|
|
592
|
+
transformersDtype: "q4f16",
|
|
593
|
+
tasks: ["vision"],
|
|
594
|
+
modalityIn: ["text", "image"],
|
|
595
|
+
modalityOut: ["text"],
|
|
596
|
+
mmRuntime: "vlm-imagetext",
|
|
597
|
+
brand: "Zhipu",
|
|
598
|
+
},
|
|
599
|
+
{
|
|
600
|
+
id: "onnx-community/Qwen2.5-VL-3B-Instruct-ONNX",
|
|
601
|
+
label: "Qwen2.5-VL 3B — vision-language model via Transformers.js/WebGPU",
|
|
602
|
+
shortName: "Qwen2.5-VL 3B",
|
|
603
|
+
description: "Qwen2.5-VL 3B for detailed image reasoning, charts, screenshots, and documents. Larger and stronger than the Qwen3-VL 2B build, at a heavier first download and higher GPU-memory needs.",
|
|
604
|
+
approximateDownload: "~3.7 GB mixed-precision ONNX (fp16 vision + q4f16 decoder) plus browser cache overhead",
|
|
605
|
+
vramRequiredMB: 3500,
|
|
606
|
+
vramSource: "estimated",
|
|
607
|
+
lowResourceRequired: false,
|
|
608
|
+
disableThinkingSupported: false,
|
|
609
|
+
defaultRuntime: extractionPreset(),
|
|
610
|
+
source: "transformers-onnx",
|
|
611
|
+
backend: "transformers-js",
|
|
612
|
+
stability: "experimental",
|
|
613
|
+
officialRepo: "https://huggingface.co/Qwen/Qwen2.5-VL-3B-Instruct",
|
|
614
|
+
artifactRepo: "https://huggingface.co/onnx-community/Qwen2.5-VL-3B-Instruct-ONNX",
|
|
615
|
+
tasks: ["vision"],
|
|
616
|
+
modalityIn: ["text", "image"],
|
|
617
|
+
modalityOut: ["text"],
|
|
618
|
+
mmRuntime: "vlm-imagetext",
|
|
619
|
+
},
|
|
620
|
+
{
|
|
621
|
+
id: "onnx-community/LightOnOCR-2-1B-ONNX",
|
|
622
|
+
label: "LightOnOCR-2 1B — document OCR vision-language model via Transformers.js/WebGPU",
|
|
623
|
+
shortName: "LightOnOCR-2 1B",
|
|
624
|
+
description: "Compact document-OCR vision model for text extraction, tables, forms, and layout parsing across 11 languages. Loads flat q4f16 like the GLM-OCR build.",
|
|
625
|
+
approximateDownload: "~680 MB q4f16 ONNX plus browser cache overhead",
|
|
626
|
+
vramRequiredMB: 1500,
|
|
627
|
+
vramSource: "estimated",
|
|
628
|
+
lowResourceRequired: false,
|
|
629
|
+
disableThinkingSupported: false,
|
|
630
|
+
defaultRuntime: extractionPreset(),
|
|
631
|
+
source: "transformers-onnx",
|
|
632
|
+
backend: "transformers-js",
|
|
633
|
+
stability: "experimental",
|
|
634
|
+
officialRepo: "https://huggingface.co/lightonai/LightOnOCR-2-1B",
|
|
635
|
+
artifactRepo: "https://huggingface.co/onnx-community/LightOnOCR-2-1B-ONNX",
|
|
636
|
+
transformersDtype: "q4f16",
|
|
637
|
+
tasks: ["vision"],
|
|
638
|
+
modalityIn: ["text", "image"],
|
|
639
|
+
modalityOut: ["text"],
|
|
640
|
+
mmRuntime: "vlm-imagetext",
|
|
641
|
+
brand: "LightOn",
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
id: "onnx-community/NVIDIA-Nemotron-3-Nano-4B-BF16-ONNX",
|
|
645
|
+
label: "NVIDIA Nemotron 3 Nano 4B ONNX — experimental Transformers.js/WebGPU (~2.5 GB download)",
|
|
646
|
+
shortName: "Nemotron 3 Nano 4B",
|
|
647
|
+
description: "Experimental ONNX + Transformers.js backend from the WebGPU demo space. It is prompt-only JSON generation, not WebLLM schema-constrained decoding, and may require substantially more disk/GPU memory than Qwen3.5.",
|
|
648
|
+
approximateDownload: "~2.5 GB browser-selected quantized ONNX artifacts, cached after first load",
|
|
649
|
+
vramRequiredMB: 4096,
|
|
650
|
+
vramSource: "estimated",
|
|
651
|
+
lowResourceRequired: false,
|
|
652
|
+
disableThinkingSupported: true,
|
|
653
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, topP: 0.95, repetitionPenalty: 1.05, disableThinking: true }),
|
|
654
|
+
source: "transformers-onnx",
|
|
655
|
+
backend: "transformers-js",
|
|
656
|
+
stability: "experimental",
|
|
657
|
+
officialRepo: "https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16",
|
|
658
|
+
artifactRepo: "https://huggingface.co/onnx-community/NVIDIA-Nemotron-3-Nano-4B-BF16-ONNX",
|
|
659
|
+
transformersDtype: "q4",
|
|
660
|
+
notes: "Loaded through @huggingface/transformers from CDN at runtime so the WebLLM demo remains small until this model is selected.",
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
id: "LiquidAI/LFM2.5-230M-ONNX",
|
|
664
|
+
label: "Liquid LFM2.5 230M ONNX — tiny Transformers.js/WebGPU model (~300 MB class)",
|
|
665
|
+
shortName: "LFM2.5 230M",
|
|
666
|
+
description: "Very small LiquidAI ONNX model for browser testing. It is useful when you want a fast, low-footprint Transformers.js/WebGPU baseline for extraction prompts.",
|
|
667
|
+
approximateDownload: "~300 MB class model artifacts plus browser cache overhead",
|
|
668
|
+
vramRequiredMB: 768,
|
|
669
|
+
vramSource: "estimated",
|
|
670
|
+
lowResourceRequired: true,
|
|
671
|
+
disableThinkingSupported: false,
|
|
672
|
+
defaultRuntime: extractionPreset({ maxTokens: 384, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
673
|
+
source: "transformers-onnx",
|
|
674
|
+
backend: "transformers-js",
|
|
675
|
+
stability: "experimental",
|
|
676
|
+
officialRepo: "https://huggingface.co/LiquidAI/LFM2.5-230M",
|
|
677
|
+
artifactRepo: "https://huggingface.co/LiquidAI/LFM2.5-230M-ONNX",
|
|
678
|
+
transformersDtype: "q4",
|
|
679
|
+
},
|
|
680
|
+
{
|
|
681
|
+
id: "LiquidAI/LFM2.5-350M-ONNX",
|
|
682
|
+
label: "Liquid LFM2.5 350M ONNX — compact Transformers.js/WebGPU model (~700 MB class)",
|
|
683
|
+
shortName: "LFM2.5 350M",
|
|
684
|
+
description: "Compact LiquidAI edge model with an official ONNX/WebGPU export. Good for comparing a hybrid architecture against Qwen, Gemma, and Llama in browser extraction.",
|
|
685
|
+
approximateDownload: "~700 MB class model artifacts plus browser cache overhead",
|
|
686
|
+
vramRequiredMB: 1024,
|
|
687
|
+
vramSource: "estimated",
|
|
688
|
+
lowResourceRequired: true,
|
|
689
|
+
disableThinkingSupported: false,
|
|
690
|
+
defaultRuntime: extractionPreset({ maxTokens: 448, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
691
|
+
source: "transformers-onnx",
|
|
692
|
+
backend: "transformers-js",
|
|
693
|
+
stability: "experimental",
|
|
694
|
+
officialRepo: "https://huggingface.co/LiquidAI/LFM2.5-350M",
|
|
695
|
+
artifactRepo: "https://huggingface.co/LiquidAI/LFM2.5-350M-ONNX",
|
|
696
|
+
transformersDtype: "q4",
|
|
697
|
+
},
|
|
698
|
+
{
|
|
699
|
+
id: "LiquidAI/LFM2.5-1.2B-Thinking-ONNX",
|
|
700
|
+
label: "Liquid LFM2.5 1.2B Thinking ONNX — reasoning-focused browser model",
|
|
701
|
+
shortName: "LFM2.5 1.2B Thinking",
|
|
702
|
+
description: "Reasoning-focused LiquidAI ONNX model for Transformers.js/WebGPU. It may emit <think> traces, so extraction prompts should explicitly request final JSON only.",
|
|
703
|
+
approximateDownload: "large ONNX model artifacts plus browser cache overhead",
|
|
704
|
+
vramRequiredMB: 2300,
|
|
705
|
+
vramSource: "estimated",
|
|
706
|
+
lowResourceRequired: false,
|
|
707
|
+
disableThinkingSupported: true,
|
|
708
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, topP: 0.9, repetitionPenalty: 1.06, disableThinking: true }),
|
|
709
|
+
source: "transformers-onnx",
|
|
710
|
+
backend: "transformers-js",
|
|
711
|
+
stability: "experimental",
|
|
712
|
+
officialRepo: "https://huggingface.co/LiquidAI/LFM2.5-1.2B-Thinking",
|
|
713
|
+
artifactRepo: "https://huggingface.co/LiquidAI/LFM2.5-1.2B-Thinking-ONNX",
|
|
714
|
+
transformersDtype: "q4",
|
|
715
|
+
},
|
|
716
|
+
{
|
|
717
|
+
id: "onnx-community/Falcon-H1-Tiny-90M-Instruct-ONNX",
|
|
718
|
+
label: "Falcon H1 Tiny 90M ONNX — ultra-small Transformers.js/WebGPU smoke-test model",
|
|
719
|
+
shortName: "Falcon H1 Tiny 90M",
|
|
720
|
+
description: "Ultra-small hybrid Mamba/attention model. It is best as a browser compatibility smoke test; extraction quality will likely be lower than the larger models.",
|
|
721
|
+
approximateDownload: "~1.1 GB model repo, but selected quantized artifacts may be smaller",
|
|
722
|
+
vramRequiredMB: 512,
|
|
723
|
+
vramSource: "estimated",
|
|
724
|
+
lowResourceRequired: true,
|
|
725
|
+
disableThinkingSupported: false,
|
|
726
|
+
defaultRuntime: extractionPreset({ maxTokens: 256, topP: 0.9, repetitionPenalty: 1.04 }),
|
|
727
|
+
source: "transformers-onnx",
|
|
728
|
+
backend: "transformers-js",
|
|
729
|
+
stability: "experimental",
|
|
730
|
+
officialRepo: "https://huggingface.co/tiiuae/Falcon-H1-Tiny-90M-Instruct",
|
|
731
|
+
artifactRepo: "https://huggingface.co/onnx-community/Falcon-H1-Tiny-90M-Instruct-ONNX",
|
|
732
|
+
transformersDtype: "q4",
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
id: "onnx-community/granite-4.0-micro-ONNX-web",
|
|
736
|
+
label: "IBM Granite 4.0 Micro ONNX-web — small hybrid chat model via Transformers.js/WebGPU",
|
|
737
|
+
shortName: "Granite 4.0 Micro ONNX",
|
|
738
|
+
description: "Small IBM Granite MoE/hybrid chat model packaged specifically for Transformers.js/WebGPU. Useful as a non-Qwen/non-Llama browser extraction comparison.",
|
|
739
|
+
approximateDownload: "ONNX-web model artifacts plus tokenizer/config files",
|
|
740
|
+
vramRequiredMB: 2048,
|
|
741
|
+
vramSource: "estimated",
|
|
742
|
+
lowResourceRequired: true,
|
|
743
|
+
disableThinkingSupported: false,
|
|
744
|
+
defaultRuntime: extractionPreset({ maxTokens: 512, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
745
|
+
source: "transformers-onnx",
|
|
746
|
+
backend: "transformers-js",
|
|
747
|
+
stability: "experimental",
|
|
748
|
+
officialRepo: "https://huggingface.co/ibm-granite/granite-4.0-micro",
|
|
749
|
+
artifactRepo: "https://huggingface.co/onnx-community/granite-4.0-micro-ONNX-web",
|
|
750
|
+
transformersDtype: "q4f16",
|
|
751
|
+
},
|
|
752
|
+
{
|
|
753
|
+
id: "onnx-community/granite-4.0-350m-ONNX-web",
|
|
754
|
+
label: "IBM Granite 4.0 350M ONNX-web — small Transformers.js/WebGPU model",
|
|
755
|
+
shortName: "Granite 4.0 350M",
|
|
756
|
+
description: "Small Granite 4.0 ONNX-web build packaged for Transformers.js/WebGPU. This is one of the safest Granite test options for lower-memory machines.",
|
|
757
|
+
approximateDownload: "~350 MB q4f16 ONNX artifacts plus tokenizer/config files",
|
|
758
|
+
vramRequiredMB: 1024,
|
|
759
|
+
vramSource: "estimated",
|
|
760
|
+
lowResourceRequired: true,
|
|
761
|
+
disableThinkingSupported: false,
|
|
762
|
+
defaultRuntime: extractionPreset({ maxTokens: 448, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
763
|
+
source: "transformers-onnx",
|
|
764
|
+
backend: "transformers-js",
|
|
765
|
+
stability: "experimental",
|
|
766
|
+
officialRepo: "https://huggingface.co/ibm-granite/granite-4.0-350m",
|
|
767
|
+
artifactRepo: "https://huggingface.co/onnx-community/granite-4.0-350m-ONNX-web",
|
|
768
|
+
transformersDtype: "q4f16",
|
|
769
|
+
},
|
|
770
|
+
{
|
|
771
|
+
id: "onnx-community/granite-4.0-h-350m-ONNX",
|
|
772
|
+
label: "IBM Granite 4.0 H 350M ONNX — hybrid/MoE Transformers.js/WebGPU test",
|
|
773
|
+
shortName: "Granite 4.0 H 350M",
|
|
774
|
+
description: "Small Granite hybrid/MoE ONNX export. Use it to compare the Granite H family against Qwen3.5 and LiquidAI in browser extraction.",
|
|
775
|
+
approximateDownload: "~236 MB q4f16 ONNX data plus graph/tokenizer/config files",
|
|
776
|
+
vramRequiredMB: 1024,
|
|
777
|
+
vramSource: "estimated",
|
|
778
|
+
lowResourceRequired: true,
|
|
779
|
+
disableThinkingSupported: false,
|
|
780
|
+
defaultRuntime: extractionPreset({ maxTokens: 448, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
781
|
+
source: "transformers-onnx",
|
|
782
|
+
backend: "transformers-js",
|
|
783
|
+
stability: "experimental",
|
|
784
|
+
officialRepo: "https://huggingface.co/ibm-granite/granite-4.0-h-350m",
|
|
785
|
+
artifactRepo: "https://huggingface.co/onnx-community/granite-4.0-h-350m-ONNX",
|
|
786
|
+
transformersDtype: "q4f16",
|
|
787
|
+
},
|
|
788
|
+
{
|
|
789
|
+
id: "onnx-community/granite-4.0-1b-ONNX-web",
|
|
790
|
+
label: "IBM Granite 4.0 1B ONNX-web — larger Transformers.js/WebGPU model",
|
|
791
|
+
shortName: "Granite 4.0 1B",
|
|
792
|
+
description: "Granite 4.0 1B ONNX-web build packaged for Transformers.js/WebGPU. Expect better extraction quality than the 350M variant and a larger first download.",
|
|
793
|
+
approximateDownload: "~1.25 GB q4f16 ONNX artifacts plus tokenizer/config files",
|
|
794
|
+
vramRequiredMB: 2048,
|
|
795
|
+
vramSource: "estimated",
|
|
796
|
+
lowResourceRequired: false,
|
|
797
|
+
disableThinkingSupported: false,
|
|
798
|
+
defaultRuntime: extractionPreset({ maxTokens: 640, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
799
|
+
source: "transformers-onnx",
|
|
800
|
+
backend: "transformers-js",
|
|
801
|
+
stability: "experimental",
|
|
802
|
+
officialRepo: "https://huggingface.co/ibm-granite/granite-4.0-1b",
|
|
803
|
+
artifactRepo: "https://huggingface.co/onnx-community/granite-4.0-1b-ONNX-web",
|
|
804
|
+
transformersDtype: "q4f16",
|
|
805
|
+
},
|
|
806
|
+
{
|
|
807
|
+
id: "onnx-community/granite-4.0-h-1b-ONNX",
|
|
808
|
+
label: "IBM Granite 4.0 H 1B ONNX — hybrid/MoE Transformers.js/WebGPU model",
|
|
809
|
+
shortName: "Granite 4.0 H 1B",
|
|
810
|
+
description: "Larger Granite H hybrid/MoE ONNX export. Use this on machines that can handle around a 1 GB quantized ONNX download plus runtime memory.",
|
|
811
|
+
approximateDownload: "~925 MB q4f16 ONNX data plus graph/tokenizer/config files",
|
|
812
|
+
vramRequiredMB: 2048,
|
|
813
|
+
vramSource: "estimated",
|
|
814
|
+
lowResourceRequired: false,
|
|
815
|
+
disableThinkingSupported: false,
|
|
816
|
+
defaultRuntime: extractionPreset({ maxTokens: 640, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
817
|
+
source: "transformers-onnx",
|
|
818
|
+
backend: "transformers-js",
|
|
819
|
+
stability: "experimental",
|
|
820
|
+
officialRepo: "https://huggingface.co/ibm-granite/granite-4.0-h-1b",
|
|
821
|
+
artifactRepo: "https://huggingface.co/onnx-community/granite-4.0-h-1b-ONNX",
|
|
822
|
+
transformersDtype: "q4f16",
|
|
823
|
+
},
|
|
824
|
+
{
|
|
825
|
+
id: "onnx-community/granite-4.0-h-micro-ONNX",
|
|
826
|
+
label: "IBM Granite 4.0 H Micro ONNX — larger hybrid/MoE test",
|
|
827
|
+
shortName: "Granite 4.0 H Micro",
|
|
828
|
+
description: "Large Granite H Micro ONNX export. It is included for testing but is not a first-load choice because the repository contains very large model variants.",
|
|
829
|
+
approximateDownload: "~1.95 GB q4f16 ONNX data plus graph/tokenizer/config files",
|
|
830
|
+
vramRequiredMB: 4096,
|
|
831
|
+
vramSource: "estimated",
|
|
832
|
+
lowResourceRequired: false,
|
|
833
|
+
disableThinkingSupported: false,
|
|
834
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
835
|
+
source: "transformers-onnx",
|
|
836
|
+
backend: "transformers-js",
|
|
837
|
+
stability: "experimental",
|
|
838
|
+
officialRepo: "https://huggingface.co/ibm-granite/granite-4.0-h-micro",
|
|
839
|
+
artifactRepo: "https://huggingface.co/onnx-community/granite-4.0-h-micro-ONNX",
|
|
840
|
+
transformersDtype: "q4f16",
|
|
841
|
+
},
|
|
842
|
+
{
|
|
843
|
+
id: "Mike0021/MiniCPM5-1B-ONNX-Web",
|
|
844
|
+
label: "MiniCPM5 1B ONNX-web — community q4 Transformers.js/WebGPU export",
|
|
845
|
+
shortName: "MiniCPM5 1B ONNX-web",
|
|
846
|
+
description: "Browser-friendly q4 Transformers.js export of MiniCPM5 1B. The official ONNX Runtime GenAI repo is linked as the official repo; this selected artifact repo is the browser-loadable q4 export.",
|
|
847
|
+
approximateDownload: "~902 MB q4 ONNX artifact plus tokenizer/config files",
|
|
848
|
+
vramRequiredMB: 2048,
|
|
849
|
+
vramSource: "estimated",
|
|
850
|
+
lowResourceRequired: false,
|
|
851
|
+
disableThinkingSupported: true,
|
|
852
|
+
defaultRuntime: extractionPreset({ maxTokens: 640, topP: 0.9, repetitionPenalty: 1.05, disableThinking: true }),
|
|
853
|
+
source: "transformers-onnx",
|
|
854
|
+
backend: "transformers-js",
|
|
855
|
+
stability: "experimental",
|
|
856
|
+
officialRepo: "https://huggingface.co/onnx-community/MiniCPM5-1B",
|
|
857
|
+
artifactRepo: "https://huggingface.co/Mike0021/MiniCPM5-1B-ONNX-Web",
|
|
858
|
+
transformersDtype: "q4",
|
|
859
|
+
},
|
|
860
|
+
{
|
|
861
|
+
id: "HuggingFaceTB/SmolLM3-3B-ONNX",
|
|
862
|
+
label: "SmolLM3 3B ONNX — current compact 3B model via Transformers.js/WebGPU",
|
|
863
|
+
shortName: "SmolLM3 3B ONNX",
|
|
864
|
+
description: "Current SmolLM3 ONNX export for Transformers.js. It is larger than the default model but useful for testing a fully open 3B browser/local model path.",
|
|
865
|
+
approximateDownload: "large ONNX model artifacts plus tokenizer/config files",
|
|
866
|
+
vramRequiredMB: 3072,
|
|
867
|
+
vramSource: "estimated",
|
|
868
|
+
lowResourceRequired: false,
|
|
869
|
+
disableThinkingSupported: false,
|
|
870
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
871
|
+
source: "transformers-onnx",
|
|
872
|
+
backend: "transformers-js",
|
|
873
|
+
stability: "experimental",
|
|
874
|
+
officialRepo: "https://huggingface.co/HuggingFaceTB/SmolLM3-3B",
|
|
875
|
+
artifactRepo: "https://huggingface.co/HuggingFaceTB/SmolLM3-3B-ONNX",
|
|
876
|
+
transformersDtype: "q4",
|
|
877
|
+
},
|
|
878
|
+
{
|
|
879
|
+
id: "onnx-community/gemma-4-E2B-it-ONNX",
|
|
880
|
+
label: "Gemma 4 E2B ONNX — experimental Transformers.js/WebGPU alternative",
|
|
881
|
+
shortName: "Gemma 4 E2B ONNX",
|
|
882
|
+
description: "ONNX/Transformers.js route for Gemma 4 E2B. This is separate from the custom WebLLM/MLC Gemma 4 build and may be useful if the MLC artifact is not stable on a device.",
|
|
883
|
+
approximateDownload: "large ONNX model artifacts plus tokenizer/config files",
|
|
884
|
+
vramRequiredMB: 4096,
|
|
885
|
+
vramSource: "estimated",
|
|
886
|
+
lowResourceRequired: false,
|
|
887
|
+
disableThinkingSupported: false,
|
|
888
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
889
|
+
source: "transformers-onnx",
|
|
890
|
+
backend: "transformers-js",
|
|
891
|
+
stability: "experimental",
|
|
892
|
+
officialRepo: "https://huggingface.co/google/gemma-4-E2B-it",
|
|
893
|
+
artifactRepo: "https://huggingface.co/onnx-community/gemma-4-E2B-it-ONNX",
|
|
894
|
+
transformersDtype: "q4f16",
|
|
895
|
+
tasks: ["text", "vision", "stt"],
|
|
896
|
+
modalityIn: ["text", "image", "audio"],
|
|
897
|
+
modalityOut: ["text"],
|
|
898
|
+
mmRuntime: "gemma-mm",
|
|
899
|
+
},
|
|
900
|
+
{
|
|
901
|
+
id: "onnx-community/gemma-4-E4B-it-ONNX",
|
|
902
|
+
label: "Gemma 4 E4B ONNX — larger multimodal Transformers.js/WebGPU build",
|
|
903
|
+
shortName: "Gemma 4 E4B ONNX",
|
|
904
|
+
description: "Larger ONNX/Transformers.js route for Gemma 4 E4B (~8B). Text + image + audio in one model, with stronger quality than the E2B ONNX build at a heavier first load and higher GPU-memory needs.",
|
|
905
|
+
approximateDownload: "~5–6 GB q4f16 ONNX artifacts plus tokenizer/config files",
|
|
906
|
+
vramRequiredMB: 6144,
|
|
907
|
+
vramSource: "estimated",
|
|
908
|
+
lowResourceRequired: false,
|
|
909
|
+
disableThinkingSupported: false,
|
|
910
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
911
|
+
source: "transformers-onnx",
|
|
912
|
+
backend: "transformers-js",
|
|
913
|
+
stability: "experimental",
|
|
914
|
+
officialRepo: "https://huggingface.co/google/gemma-4-E4B-it",
|
|
915
|
+
artifactRepo: "https://huggingface.co/onnx-community/gemma-4-E4B-it-ONNX",
|
|
916
|
+
transformersDtype: "q4f16",
|
|
917
|
+
tasks: ["text", "vision", "stt"],
|
|
918
|
+
modalityIn: ["text", "image", "audio"],
|
|
919
|
+
modalityOut: ["text"],
|
|
920
|
+
mmRuntime: "gemma-mm",
|
|
921
|
+
},
|
|
922
|
+
{
|
|
923
|
+
id: "Llama-3.2-1B-Instruct-q4f16_1-MLC",
|
|
924
|
+
label: "Llama 3.2 1B Instruct q4f16 — low-memory Meta fallback (~879 MB VRAM)",
|
|
925
|
+
shortName: "Llama 3.2 1B",
|
|
926
|
+
description: "Compact Meta Llama instruction model. It is a useful compatibility fallback and gives you another model family to compare against Qwen3.5.",
|
|
927
|
+
approximateDownload: "small model download plus browser cache overhead",
|
|
928
|
+
vramRequiredMB: 879.04,
|
|
929
|
+
vramSource: "webllm",
|
|
930
|
+
lowResourceRequired: true,
|
|
931
|
+
disableThinkingSupported: false,
|
|
932
|
+
defaultRuntime: extractionPreset({ maxTokens: 448, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
933
|
+
source: "webllm-prebuilt",
|
|
934
|
+
backend: "webllm",
|
|
935
|
+
stability: "stable",
|
|
936
|
+
officialRepo: "https://huggingface.co/mlc-ai/Llama-3.2-1B-Instruct-q4f16_1-MLC",
|
|
937
|
+
},
|
|
938
|
+
{
|
|
939
|
+
id: "Llama-3.2-3B-Instruct-q4f16_1-MLC",
|
|
940
|
+
label: "Llama 3.2 3B Instruct q4f16 — stronger Meta fallback (~2.2 GB VRAM)",
|
|
941
|
+
shortName: "Llama 3.2 3B",
|
|
942
|
+
description: "More capable Llama option for machines that can handle a larger local browser model.",
|
|
943
|
+
approximateDownload: "large model download plus browser cache overhead",
|
|
944
|
+
vramRequiredMB: 2263.69,
|
|
945
|
+
vramSource: "webllm",
|
|
946
|
+
lowResourceRequired: true,
|
|
947
|
+
disableThinkingSupported: false,
|
|
948
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
949
|
+
source: "webllm-prebuilt",
|
|
950
|
+
backend: "webllm",
|
|
951
|
+
stability: "stable",
|
|
952
|
+
officialRepo: "https://huggingface.co/mlc-ai/Llama-3.2-3B-Instruct-q4f16_1-MLC",
|
|
953
|
+
},
|
|
954
|
+
{
|
|
955
|
+
id: "Hermes-3-Llama-3.2-3B-q4f16_1-MLC",
|
|
956
|
+
label: "Hermes 3 Llama 3.2 3B q4f16 — extraction/chat alternate (~2.2 GB VRAM)",
|
|
957
|
+
shortName: "Hermes 3 Llama 3.2 3B",
|
|
958
|
+
description: "Hermes-tuned Llama 3.2 3B variant. Useful for comparing structured-output behavior against the base Llama instruct build.",
|
|
959
|
+
approximateDownload: "large model download plus browser cache overhead",
|
|
960
|
+
vramRequiredMB: 2263.69,
|
|
961
|
+
vramSource: "webllm",
|
|
962
|
+
lowResourceRequired: true,
|
|
963
|
+
disableThinkingSupported: false,
|
|
964
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, topP: 0.9, repetitionPenalty: 1.06 }),
|
|
965
|
+
source: "webllm-prebuilt",
|
|
966
|
+
backend: "webllm",
|
|
967
|
+
stability: "stable",
|
|
968
|
+
officialRepo: "https://huggingface.co/mlc-ai/Hermes-3-Llama-3.2-3B-q4f16_1-MLC",
|
|
969
|
+
},
|
|
970
|
+
{
|
|
971
|
+
id: "OLMo-2-0425-1B-Instruct-q4f16_1-MLC",
|
|
972
|
+
label: "OLMo 2 0425 1B Instruct q4f16 — open 1B alternate (~1.7 GB VRAM)",
|
|
973
|
+
shortName: "OLMo 2 1B",
|
|
974
|
+
description: "Recent small OLMo 2 instruction model compiled for WebLLM. Good for a non-Qwen, non-Llama comparison while staying near the 1B class.",
|
|
975
|
+
approximateDownload: "medium model download plus browser cache overhead",
|
|
976
|
+
vramRequiredMB: 1776.75,
|
|
977
|
+
vramSource: "webllm",
|
|
978
|
+
lowResourceRequired: true,
|
|
979
|
+
disableThinkingSupported: false,
|
|
980
|
+
defaultRuntime: extractionPreset({ maxTokens: 512, topP: 0.9, repetitionPenalty: 1.06 }),
|
|
981
|
+
source: "webllm-prebuilt",
|
|
982
|
+
backend: "webllm",
|
|
983
|
+
stability: "stable",
|
|
984
|
+
officialRepo: "https://huggingface.co/mlc-ai/OLMo-2-0425-1B-Instruct-q4f16_1-MLC",
|
|
985
|
+
},
|
|
986
|
+
{
|
|
987
|
+
id: "Phi-4-mini-instruct-q4f16_1-MLC",
|
|
988
|
+
label: "Phi-4 mini Instruct q4f16 — capable desktop option (~3.4 GB VRAM)",
|
|
989
|
+
shortName: "Phi-4 mini",
|
|
990
|
+
description: "Capable compact Phi model. Use on desktop-class devices when smaller models miss fields or produce lower-quality extraction.",
|
|
991
|
+
approximateDownload: "large model download plus browser cache overhead",
|
|
992
|
+
vramRequiredMB: 3437.58,
|
|
993
|
+
vramSource: "webllm",
|
|
994
|
+
lowResourceRequired: false,
|
|
995
|
+
disableThinkingSupported: false,
|
|
996
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
997
|
+
source: "webllm-prebuilt",
|
|
998
|
+
backend: "webllm",
|
|
999
|
+
stability: "stable",
|
|
1000
|
+
officialRepo: "https://huggingface.co/mlc-ai/Phi-4-mini-instruct-q4f16_1-MLC",
|
|
1001
|
+
},
|
|
1002
|
+
{
|
|
1003
|
+
id: "Ministral-3-3B-Instruct-2512-BF16-q4f16_1-MLC",
|
|
1004
|
+
label: "Ministral 3 3B Instruct q4f16 — recent Mistral-family option (~2.8 GB VRAM)",
|
|
1005
|
+
shortName: "Ministral 3 3B",
|
|
1006
|
+
description: "Recent Mistral-family WebLLM option. Useful for comparing extraction quality against Qwen3.5/Llama/Phi on desktop-class GPUs.",
|
|
1007
|
+
approximateDownload: "large model download plus browser cache overhead",
|
|
1008
|
+
vramRequiredMB: 2863.69,
|
|
1009
|
+
vramSource: "webllm",
|
|
1010
|
+
lowResourceRequired: true,
|
|
1011
|
+
disableThinkingSupported: false,
|
|
1012
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
1013
|
+
source: "webllm-prebuilt",
|
|
1014
|
+
backend: "webllm",
|
|
1015
|
+
stability: "stable",
|
|
1016
|
+
officialRepo: "https://huggingface.co/mlc-ai/Ministral-3-3B-Instruct-2512-BF16-q4f16_1-MLC",
|
|
1017
|
+
},
|
|
1018
|
+
{
|
|
1019
|
+
id: "Mistral-7B-Instruct-v0.3-q4f16_1-MLC",
|
|
1020
|
+
label: "Mistral 7B Instruct v0.3 q4f16 — high-memory quality test (~4.5 GB VRAM)",
|
|
1021
|
+
shortName: "Mistral 7B v0.3",
|
|
1022
|
+
description: "Larger Mistral-family model. Keep this as a desktop/high-memory comparison model; it is not a first-load choice for casual users.",
|
|
1023
|
+
approximateDownload: "very large model download plus browser cache overhead",
|
|
1024
|
+
vramRequiredMB: 4573.39,
|
|
1025
|
+
vramSource: "webllm",
|
|
1026
|
+
lowResourceRequired: false,
|
|
1027
|
+
disableThinkingSupported: false,
|
|
1028
|
+
defaultRuntime: extractionPreset({ maxTokens: 768, topP: 0.9, repetitionPenalty: 1.05 }),
|
|
1029
|
+
source: "webllm-prebuilt",
|
|
1030
|
+
backend: "webllm",
|
|
1031
|
+
stability: "stable",
|
|
1032
|
+
officialRepo: "https://huggingface.co/mlc-ai/Mistral-7B-Instruct-v0.3-q4f16_1-MLC",
|
|
1033
|
+
},
|
|
1034
|
+
];
|
|
1035
|
+
export function getModelPreset(modelId) {
|
|
1036
|
+
return MODEL_PRESETS.find((preset) => preset.id === modelId) ?? MODEL_PRESETS[0];
|
|
1037
|
+
}
|
|
1038
|
+
export function formatMB(mb) {
|
|
1039
|
+
if (!Number.isFinite(mb))
|
|
1040
|
+
return "unknown";
|
|
1041
|
+
return mb >= 1024 ? `${(mb / 1024).toFixed(2)} GB` : `${Math.round(mb)} MB`;
|
|
1042
|
+
}
|
|
1043
|
+
export function modelRepoLabel(preset) {
|
|
1044
|
+
try {
|
|
1045
|
+
const url = new URL(preset.artifactRepo ?? preset.officialRepo);
|
|
1046
|
+
return url.pathname.replace(/^\//, "");
|
|
1047
|
+
}
|
|
1048
|
+
catch {
|
|
1049
|
+
return preset.id;
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
//# sourceMappingURL=models.js.map
|