@inferrlm/react-native-mlx 0.4.0 → 0.4.1

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.
Files changed (49) hide show
  1. package/MLXReactNative.podspec +1 -1
  2. package/lib/module/index.js +9 -0
  3. package/lib/module/index.js.map +1 -0
  4. package/lib/module/llm.js +193 -0
  5. package/lib/module/llm.js.map +1 -0
  6. package/lib/module/modelManager.js +79 -0
  7. package/lib/module/modelManager.js.map +1 -0
  8. package/lib/module/models.js +360 -0
  9. package/lib/module/models.js.map +1 -0
  10. package/lib/module/package.json +1 -0
  11. package/lib/module/specs/LLM.nitro.js +4 -0
  12. package/lib/module/specs/LLM.nitro.js.map +1 -0
  13. package/lib/module/specs/ModelManager.nitro.js +4 -0
  14. package/lib/module/specs/ModelManager.nitro.js.map +1 -0
  15. package/lib/module/specs/STT.nitro.js +4 -0
  16. package/lib/module/specs/STT.nitro.js.map +1 -0
  17. package/lib/module/specs/TTS.nitro.js +4 -0
  18. package/lib/module/specs/TTS.nitro.js.map +1 -0
  19. package/lib/module/stt.js +49 -0
  20. package/lib/module/stt.js.map +1 -0
  21. package/lib/module/tool-utils.js +56 -0
  22. package/lib/module/tool-utils.js.map +1 -0
  23. package/lib/module/tts.js +40 -0
  24. package/lib/module/tts.js.map +1 -0
  25. package/lib/typescript/package.json +1 -0
  26. package/lib/typescript/src/index.d.ts +11 -0
  27. package/lib/typescript/src/index.d.ts.map +1 -0
  28. package/lib/typescript/src/llm.d.ts +129 -0
  29. package/lib/typescript/src/llm.d.ts.map +1 -0
  30. package/lib/typescript/src/modelManager.d.ts +53 -0
  31. package/lib/typescript/src/modelManager.d.ts.map +1 -0
  32. package/lib/typescript/src/models.d.ts +67 -0
  33. package/lib/typescript/src/models.d.ts.map +1 -0
  34. package/lib/typescript/src/specs/LLM.nitro.d.ts +160 -0
  35. package/lib/typescript/src/specs/LLM.nitro.d.ts.map +1 -0
  36. package/lib/typescript/src/specs/ModelManager.nitro.d.ts +41 -0
  37. package/lib/typescript/src/specs/ModelManager.nitro.d.ts.map +1 -0
  38. package/lib/typescript/src/specs/STT.nitro.d.ts +28 -0
  39. package/lib/typescript/src/specs/STT.nitro.d.ts.map +1 -0
  40. package/lib/typescript/src/specs/TTS.nitro.d.ts +22 -0
  41. package/lib/typescript/src/specs/TTS.nitro.d.ts.map +1 -0
  42. package/lib/typescript/src/stt.d.ts +16 -0
  43. package/lib/typescript/src/stt.d.ts.map +1 -0
  44. package/lib/typescript/src/tool-utils.d.ts +13 -0
  45. package/lib/typescript/src/tool-utils.d.ts.map +1 -0
  46. package/lib/typescript/src/tts.d.ts +13 -0
  47. package/lib/typescript/src/tts.d.ts.map +1 -0
  48. package/package.json +1 -1
  49. package/src/models.ts +24 -0
@@ -24,7 +24,7 @@ Pod::Spec.new do |s|
24
24
 
25
25
  spm_dependency(s,
26
26
  url: "https://github.com/ml-explore/mlx-swift-lm.git",
27
- requirement: {kind: "upToNextMinorVersion", minimumVersion: "2.30.3"},
27
+ requirement: {kind: "branch", branch: "main"},
28
28
  products: ["MLXLLM", "MLXLMCommon"]
29
29
  )
30
30
 
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ export { LLM } from "./llm.js";
4
+ export { ModelManager } from "./modelManager.js";
5
+ export { MLXModel, MLXModels, ModelFamily, ModelProvider } from "./models.js";
6
+ export { createTool } from "./tool-utils.js";
7
+ export { TTS } from "./tts.js";
8
+ export { STT } from "./stt.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LLM","ModelManager","MLXModel","MLXModels","ModelFamily","ModelProvider","createTool","TTS","STT"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SACEA,GAAG,QAKE,UAAO;AACd,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SACEC,QAAQ,EACRC,SAAS,EACTC,WAAW,EAEXC,aAAa,QAGR,aAAU;AAqBjB,SAASC,UAAU,QAAqC,iBAAc;AACtE,SAASC,GAAG,QAAQ,UAAO;AAM3B,SAASC,GAAG,QAAQ,UAAO","ignoreList":[]}
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+
3
+ import { NitroModules } from 'react-native-nitro-modules';
4
+ let instance = null;
5
+ function getInstance() {
6
+ if (!instance) {
7
+ instance = NitroModules.createHybridObject('LLM');
8
+ }
9
+ return instance;
10
+ }
11
+
12
+ /**
13
+ * LLM text generation using MLX on Apple Silicon.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { LLM } from 'react-native-nitro-mlx'
18
+ *
19
+ * // Load a model
20
+ * await LLM.load('mlx-community/Qwen3-0.6B-4bit', progress => {
21
+ * console.log(`Loading: ${(progress * 100).toFixed(0)}%`)
22
+ * })
23
+ *
24
+ * // Stream a response
25
+ * await LLM.stream('Hello!', token => {
26
+ * process.stdout.write(token)
27
+ * })
28
+ *
29
+ * // Get generation stats
30
+ * const stats = LLM.getLastGenerationStats()
31
+ * console.log(`${stats.tokensPerSecond} tokens/sec`)
32
+ * ```
33
+ */
34
+ export const LLM = {
35
+ /**
36
+ * Load a model into memory. Downloads the model from HuggingFace if not already cached.
37
+ * @param modelId - HuggingFace model ID (e.g., 'mlx-community/Qwen3-0.6B-4bit')
38
+ * @param options - Callback invoked with loading progress (0-1)
39
+ */
40
+ load(modelId, options) {
41
+ return getInstance().load(modelId, options);
42
+ },
43
+ /**
44
+ * Generate a complete response for a prompt. Blocks until generation is complete.
45
+ * For streaming responses, use `stream()` instead.
46
+ * @param prompt - The input text to generate a response for
47
+ * @returns The complete generated text
48
+ */
49
+ generate(prompt) {
50
+ return getInstance().generate(prompt);
51
+ },
52
+ /**
53
+ * Stream a response token by token with optional tool calling support.
54
+ * Tools must be provided when loading the model via `load()` options.
55
+ * Tools are automatically executed when the model calls them.
56
+ * @param prompt - The input text to generate a response for
57
+ * @param onToken - Callback invoked for each generated token
58
+ * @param onToolCall - Optional callback invoked when a tool is called.
59
+ * Receives the current tool call and an accumulated array of all tool calls so far.
60
+ * @returns The complete generated text
61
+ */
62
+ stream(prompt, onToken, onToolCall) {
63
+ const accumulatedToolCalls = [];
64
+ return getInstance().stream(prompt, onToken, (name, argsJson) => {
65
+ if (onToolCall) {
66
+ try {
67
+ const args = JSON.parse(argsJson);
68
+ const toolCall = {
69
+ name,
70
+ arguments: args
71
+ };
72
+ accumulatedToolCalls.push(toolCall);
73
+ onToolCall({
74
+ toolCall,
75
+ allToolCalls: [...accumulatedToolCalls]
76
+ });
77
+ } catch {
78
+ const toolCall = {
79
+ name,
80
+ arguments: {}
81
+ };
82
+ accumulatedToolCalls.push(toolCall);
83
+ onToolCall({
84
+ toolCall,
85
+ allToolCalls: [...accumulatedToolCalls]
86
+ });
87
+ }
88
+ }
89
+ });
90
+ },
91
+ /**
92
+ * Stream with typed events for thinking blocks and tool calls.
93
+ * Provides granular lifecycle events for UI updates.
94
+ *
95
+ * @param prompt - The input text
96
+ * @param onEvent - Callback receiving typed StreamEvent objects
97
+ * @returns Promise resolving to final content string (thinking content stripped)
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * await LLM.streamWithEvents(prompt, (event) => {
102
+ * switch (event.type) {
103
+ * case 'token':
104
+ * appendToContent(event.token)
105
+ * break
106
+ * case 'thinking_start':
107
+ * showThinkingIndicator()
108
+ * break
109
+ * case 'thinking_chunk':
110
+ * appendToThinking(event.chunk)
111
+ * break
112
+ * case 'tool_call_start':
113
+ * showToolCallCard(event.name, event.arguments)
114
+ * break
115
+ * }
116
+ * })
117
+ * ```
118
+ */
119
+ streamWithEvents(prompt, onEvent) {
120
+ return getInstance().streamWithEvents(prompt, eventJson => {
121
+ try {
122
+ const event = JSON.parse(eventJson);
123
+ onEvent(event);
124
+ } catch {
125
+ // Silently ignore malformed events
126
+ }
127
+ });
128
+ },
129
+ /**
130
+ * Stop the current generation. Safe to call even if not generating.
131
+ */
132
+ stop() {
133
+ getInstance().stop();
134
+ },
135
+ /**
136
+ * Unload the current model and release memory.
137
+ * Call this when you're done with the model to free up memory.
138
+ */
139
+ unload() {
140
+ getInstance().unload();
141
+ },
142
+ /**
143
+ * Get statistics from the last generation.
144
+ * @returns Statistics including token count, tokens/sec (excluding tool execution), TTFT, total time, and tool execution time
145
+ */
146
+ getLastGenerationStats() {
147
+ return getInstance().getLastGenerationStats();
148
+ },
149
+ /**
150
+ * Get the message history if management is enabled.
151
+ * @returns Array of messages in the history
152
+ */
153
+ getHistory() {
154
+ return getInstance().getHistory();
155
+ },
156
+ /**
157
+ * Clear the message history.
158
+ */
159
+ clearHistory() {
160
+ getInstance().clearHistory();
161
+ },
162
+ /** Whether a model is currently loaded and ready for generation */
163
+ get isLoaded() {
164
+ return getInstance().isLoaded;
165
+ },
166
+ /** Whether text is currently being generated */
167
+ get isGenerating() {
168
+ return getInstance().isGenerating;
169
+ },
170
+ /** The ID of the currently loaded model, or empty string if none */
171
+ get modelId() {
172
+ return getInstance().modelId;
173
+ },
174
+ /** Enable debug logging to console */
175
+ get debug() {
176
+ return getInstance().debug;
177
+ },
178
+ set debug(value) {
179
+ getInstance().debug = value;
180
+ },
181
+ /**
182
+ * System prompt used when loading the model.
183
+ * Set this before calling `load()`. Changes require reloading the model.
184
+ * @default "You are a helpful assistant."
185
+ */
186
+ get systemPrompt() {
187
+ return getInstance().systemPrompt;
188
+ },
189
+ set systemPrompt(value) {
190
+ getInstance().systemPrompt = value;
191
+ }
192
+ };
193
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NitroModules","instance","getInstance","createHybridObject","LLM","load","modelId","options","generate","prompt","stream","onToken","onToolCall","accumulatedToolCalls","name","argsJson","args","JSON","parse","toolCall","arguments","push","allToolCalls","streamWithEvents","onEvent","eventJson","event","stop","unload","getLastGenerationStats","getHistory","clearHistory","isLoaded","isGenerating","debug","value","systemPrompt"],"sourceRoot":"../../src","sources":["llm.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ import { NitroModules } from 'react-native-nitro-modules';
4
+ let instance = null;
5
+ function getInstance() {
6
+ if (!instance) {
7
+ instance = NitroModules.createHybridObject('ModelManager');
8
+ }
9
+ return instance;
10
+ }
11
+
12
+ /**
13
+ * Manage MLX model downloads from HuggingFace.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { ModelManager } from 'react-native-nitro-mlx'
18
+ *
19
+ * // Download a model
20
+ * await ModelManager.download('mlx-community/Qwen3-0.6B-4bit', progress => {
21
+ * console.log(`Downloading: ${(progress * 100).toFixed(0)}%`)
22
+ * })
23
+ *
24
+ * // Check if downloaded
25
+ * const isReady = await ModelManager.isDownloaded('mlx-community/Qwen3-0.6B-4bit')
26
+ *
27
+ * // List all downloaded models
28
+ * const models = await ModelManager.getDownloadedModels()
29
+ * ```
30
+ */
31
+ export const ModelManager = {
32
+ /**
33
+ * Download a model from HuggingFace.
34
+ * @param modelId - HuggingFace model ID (e.g., 'mlx-community/Qwen3-0.6B-4bit')
35
+ * @param progressCallback - Callback invoked with download progress (0-1)
36
+ * @returns Path to the downloaded model directory
37
+ */
38
+ download(modelId, progressCallback) {
39
+ return getInstance().download(modelId, progressCallback);
40
+ },
41
+ /**
42
+ * Check if a model is already downloaded.
43
+ * @param modelId - HuggingFace model ID
44
+ * @returns True if the model is fully downloaded
45
+ */
46
+ isDownloaded(modelId) {
47
+ return getInstance().isDownloaded(modelId);
48
+ },
49
+ /**
50
+ * Get a list of all downloaded model IDs.
51
+ * @returns Array of model IDs that are available locally
52
+ */
53
+ getDownloadedModels() {
54
+ return getInstance().getDownloadedModels();
55
+ },
56
+ /**
57
+ * Delete a downloaded model to free up disk space.
58
+ * @param modelId - HuggingFace model ID
59
+ */
60
+ deleteModel(modelId) {
61
+ return getInstance().deleteModel(modelId);
62
+ },
63
+ /**
64
+ * Get the local filesystem path for a downloaded model.
65
+ * @param modelId - HuggingFace model ID
66
+ * @returns Absolute path to the model directory
67
+ */
68
+ getModelPath(modelId) {
69
+ return getInstance().getModelPath(modelId);
70
+ },
71
+ /** Enable debug logging to console */
72
+ get debug() {
73
+ return getInstance().debug;
74
+ },
75
+ set debug(value) {
76
+ getInstance().debug = value;
77
+ }
78
+ };
79
+ //# sourceMappingURL=modelManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NitroModules","instance","getInstance","createHybridObject","ModelManager","download","modelId","progressCallback","isDownloaded","getDownloadedModels","deleteModel","getModelPath","debug","value"],"sourceRoot":"../../src","sources":["modelManager.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AAGzD,IAAIC,QAAiC,GAAG,IAAI;AAE5C,SAASC,WAAWA,CAAA,EAAqB;EACvC,IAAI,CAACD,QAAQ,EAAE;IACbA,QAAQ,GAAGD,YAAY,CAACG,kBAAkB,CAAmB,cAAc,CAAC;EAC9E;EACA,OAAOF,QAAQ;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMG,YAAY,GAAG;EAC1B;AACF;AACA;AACA;AACA;AACA;EACEC,QAAQA,CACNC,OAAe,EACfC,gBAA4C,EAC3B;IACjB,OAAOL,WAAW,CAAC,CAAC,CAACG,QAAQ,CAACC,OAAO,EAAEC,gBAAgB,CAAC;EAC1D,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,YAAYA,CAACF,OAAe,EAAoB;IAC9C,OAAOJ,WAAW,CAAC,CAAC,CAACM,YAAY,CAACF,OAAO,CAAC;EAC5C,CAAC;EAED;AACF;AACA;AACA;EACEG,mBAAmBA,CAAA,EAAsB;IACvC,OAAOP,WAAW,CAAC,CAAC,CAACO,mBAAmB,CAAC,CAAC;EAC5C,CAAC;EAED;AACF;AACA;AACA;EACEC,WAAWA,CAACJ,OAAe,EAAiB;IAC1C,OAAOJ,WAAW,CAAC,CAAC,CAACQ,WAAW,CAACJ,OAAO,CAAC;EAC3C,CAAC;EAED;AACF;AACA;AACA;AACA;EACEK,YAAYA,CAACL,OAAe,EAAmB;IAC7C,OAAOJ,WAAW,CAAC,CAAC,CAACS,YAAY,CAACL,OAAO,CAAC;EAC5C,CAAC;EAED;EACA,IAAIM,KAAKA,CAAA,EAAY;IACnB,OAAOV,WAAW,CAAC,CAAC,CAACU,KAAK;EAC5B,CAAC;EAED,IAAIA,KAAKA,CAACC,KAAc,EAAE;IACxBX,WAAW,CAAC,CAAC,CAACU,KAAK,GAAGC,KAAK;EAC7B;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,360 @@
1
+ "use strict";
2
+
3
+ export let ModelFamily = /*#__PURE__*/function (ModelFamily) {
4
+ ModelFamily["Llama"] = "Llama";
5
+ ModelFamily["Qwen"] = "Qwen";
6
+ ModelFamily["Gemma"] = "Gemma";
7
+ ModelFamily["Phi"] = "Phi";
8
+ ModelFamily["SmolLM"] = "SmolLM";
9
+ ModelFamily["OpenELM"] = "OpenELM";
10
+ ModelFamily["PocketTTS"] = "PocketTTS";
11
+ ModelFamily["GLMASR"] = "GLMASR";
12
+ return ModelFamily;
13
+ }({});
14
+ export let ModelProvider = /*#__PURE__*/function (ModelProvider) {
15
+ ModelProvider["Meta"] = "Meta";
16
+ ModelProvider["Alibaba"] = "Alibaba";
17
+ ModelProvider["Google"] = "Google";
18
+ ModelProvider["Microsoft"] = "Microsoft";
19
+ ModelProvider["HuggingFace"] = "HuggingFace";
20
+ ModelProvider["Apple"] = "Apple";
21
+ ModelProvider["Kyutai"] = "Kyutai";
22
+ return ModelProvider;
23
+ }({});
24
+ export let MLXModel = /*#__PURE__*/function (MLXModel) {
25
+ // Llama 3.2 (Meta) - 1B and 3B variants
26
+ MLXModel["Llama_3_2_1B_Instruct_4bit"] = "mlx-community/Llama-3.2-1B-Instruct-4bit";
27
+ MLXModel["Llama_3_2_1B_Instruct_8bit"] = "mlx-community/Llama-3.2-1B-Instruct-8bit";
28
+ MLXModel["Llama_3_2_3B_Instruct_4bit"] = "mlx-community/Llama-3.2-3B-Instruct-4bit";
29
+ MLXModel["Llama_3_2_3B_Instruct_8bit"] = "mlx-community/Llama-3.2-3B-Instruct-8bit";
30
+ // Qwen 2.5 (Alibaba) - 0.5B, 1.5B, 3B variants
31
+ MLXModel["Qwen2_5_0_5B_Instruct_4bit"] = "mlx-community/Qwen2.5-0.5B-Instruct-4bit";
32
+ MLXModel["Qwen2_5_0_5B_Instruct_8bit"] = "mlx-community/Qwen2.5-0.5B-Instruct-8bit";
33
+ MLXModel["Qwen2_5_1_5B_Instruct_4bit"] = "mlx-community/Qwen2.5-1.5B-Instruct-4bit";
34
+ MLXModel["Qwen2_5_1_5B_Instruct_8bit"] = "mlx-community/Qwen2.5-1.5B-Instruct-8bit";
35
+ MLXModel["Qwen2_5_3B_Instruct_4bit"] = "mlx-community/Qwen2.5-3B-Instruct-4bit";
36
+ MLXModel["Qwen2_5_3B_Instruct_8bit"] = "mlx-community/Qwen2.5-3B-Instruct-8bit";
37
+ // Qwen 3 - 1.7B variant
38
+ MLXModel["Qwen3_1_7B_4bit"] = "mlx-community/Qwen3-1.7B-4bit";
39
+ MLXModel["Qwen3_1_7B_8bit"] = "mlx-community/Qwen3-1.7B-8bit";
40
+ // Qwen 3.5 - 0.8B variant
41
+ MLXModel["Qwen3_5_0_8B_MLX_4bit"] = "mlx-community/Qwen3.5-0.8B-MLX-4bit";
42
+ MLXModel["Qwen3_5_0_8B_MLX_8bit"] = "mlx-community/Qwen3.5-0.8B-MLX-8bit";
43
+ // Gemma 3 (Google) - 1B variant
44
+ MLXModel["Gemma_3_1B_IT_4bit"] = "mlx-community/gemma-3-1b-it-4bit";
45
+ MLXModel["Gemma_3_1B_IT_8bit"] = "mlx-community/gemma-3-1b-it-8bit";
46
+ // Phi 3.5 Mini (Microsoft) - ~3.8B but runs well on mobile
47
+ MLXModel["Phi_3_5_Mini_Instruct_4bit"] = "mlx-community/Phi-3.5-mini-instruct-4bit";
48
+ MLXModel["Phi_3_5_Mini_Instruct_8bit"] = "mlx-community/Phi-3.5-mini-instruct-8bit";
49
+ // Phi 4 Mini (Microsoft)
50
+ MLXModel["Phi_4_Mini_Instruct_4bit"] = "mlx-community/Phi-4-mini-instruct-4bit";
51
+ MLXModel["Phi_4_Mini_Instruct_8bit"] = "mlx-community/Phi-4-mini-instruct-8bit";
52
+ // SmolLM (HuggingFace) - 1.7B
53
+ MLXModel["SmolLM_1_7B_Instruct_4bit"] = "mlx-community/SmolLM-1.7B-Instruct-4bit";
54
+ MLXModel["SmolLM_1_7B_Instruct_8bit"] = "mlx-community/SmolLM-1.7B-Instruct-8bit";
55
+ // SmolLM2 (HuggingFace) - 1.7B
56
+ MLXModel["SmolLM2_1_7B_Instruct_4bit"] = "mlx-community/SmolLM2-1.7B-Instruct-4bit";
57
+ MLXModel["SmolLM2_1_7B_Instruct_8bit"] = "mlx-community/SmolLM2-1.7B-Instruct-8bit";
58
+ // OpenELM (Apple) - 1.1B and 3B
59
+ MLXModel["OpenELM_1_1B_4bit"] = "mlx-community/OpenELM-1_1B-4bit";
60
+ MLXModel["OpenELM_1_1B_8bit"] = "mlx-community/OpenELM-1_1B-8bit";
61
+ MLXModel["OpenELM_3B_4bit"] = "mlx-community/OpenELM-3B-4bit";
62
+ MLXModel["OpenELM_3B_8bit"] = "mlx-community/OpenELM-3B-8bit";
63
+ // PocketTTS (Kyutai) - 44.6M
64
+ MLXModel["PocketTTS"] = "mlx-community/pocket-tts";
65
+ MLXModel["PocketTTS_8bit"] = "mlx-community/pocket-tts-8bit";
66
+ MLXModel["PocketTTS_4bit"] = "mlx-community/pocket-tts-4bit";
67
+ // GLM-ASR (GLMASR) - Speech-to-Text
68
+ MLXModel["GLM_ASR_Nano_4bit"] = "mlx-community/GLM-ASR-Nano-2512-4bit";
69
+ return MLXModel;
70
+ }({});
71
+ export const MLXModels = [{
72
+ id: MLXModel.Llama_3_2_1B_Instruct_4bit,
73
+ family: ModelFamily.Llama,
74
+ provider: ModelProvider.Meta,
75
+ parameters: '1B',
76
+ quantization: '4bit',
77
+ displayName: 'Llama 3.2 1B Instruct (4-bit)',
78
+ downloadSize: 1407777762,
79
+ type: 'llm'
80
+ }, {
81
+ id: MLXModel.Llama_3_2_1B_Instruct_8bit,
82
+ family: ModelFamily.Llama,
83
+ provider: ModelProvider.Meta,
84
+ parameters: '1B',
85
+ quantization: '8bit',
86
+ displayName: 'Llama 3.2 1B Instruct (8-bit)',
87
+ downloadSize: 1313157436,
88
+ type: 'llm'
89
+ }, {
90
+ id: MLXModel.Llama_3_2_3B_Instruct_4bit,
91
+ family: ModelFamily.Llama,
92
+ provider: ModelProvider.Meta,
93
+ parameters: '3B',
94
+ quantization: '4bit',
95
+ displayName: 'Llama 3.2 3B Instruct (4-bit)',
96
+ downloadSize: 2019397474,
97
+ type: 'llm'
98
+ }, {
99
+ id: MLXModel.Llama_3_2_3B_Instruct_8bit,
100
+ family: ModelFamily.Llama,
101
+ provider: ModelProvider.Meta,
102
+ parameters: '3B',
103
+ quantization: '8bit',
104
+ displayName: 'Llama 3.2 3B Instruct (8-bit)',
105
+ downloadSize: 3413784042,
106
+ type: 'llm'
107
+ }, {
108
+ id: MLXModel.Qwen2_5_0_5B_Instruct_4bit,
109
+ family: ModelFamily.Qwen,
110
+ provider: ModelProvider.Alibaba,
111
+ parameters: '0.5B',
112
+ quantization: '4bit',
113
+ displayName: 'Qwen 2.5 0.5B Instruct (4-bit)',
114
+ downloadSize: 278064920,
115
+ type: 'llm'
116
+ }, {
117
+ id: MLXModel.Qwen2_5_0_5B_Instruct_8bit,
118
+ family: ModelFamily.Qwen,
119
+ provider: ModelProvider.Alibaba,
120
+ parameters: '0.5B',
121
+ quantization: '8bit',
122
+ displayName: 'Qwen 2.5 0.5B Instruct (8-bit)',
123
+ downloadSize: 525045902,
124
+ type: 'llm'
125
+ }, {
126
+ id: MLXModel.Qwen2_5_1_5B_Instruct_4bit,
127
+ family: ModelFamily.Qwen,
128
+ provider: ModelProvider.Alibaba,
129
+ parameters: '1.5B',
130
+ quantization: '4bit',
131
+ displayName: 'Qwen 2.5 1.5B Instruct (4-bit)',
132
+ downloadSize: 868628559,
133
+ type: 'llm'
134
+ }, {
135
+ id: MLXModel.Qwen2_5_1_5B_Instruct_8bit,
136
+ family: ModelFamily.Qwen,
137
+ provider: ModelProvider.Alibaba,
138
+ parameters: '1.5B',
139
+ quantization: '8bit',
140
+ displayName: 'Qwen 2.5 1.5B Instruct (8-bit)',
141
+ downloadSize: 1640414038,
142
+ type: 'llm'
143
+ }, {
144
+ id: MLXModel.Qwen2_5_3B_Instruct_4bit,
145
+ family: ModelFamily.Qwen,
146
+ provider: ModelProvider.Alibaba,
147
+ parameters: '3B',
148
+ quantization: '4bit',
149
+ displayName: 'Qwen 2.5 3B Instruct (4-bit)',
150
+ downloadSize: 1736293090,
151
+ type: 'llm'
152
+ }, {
153
+ id: MLXModel.Qwen2_5_3B_Instruct_8bit,
154
+ family: ModelFamily.Qwen,
155
+ provider: ModelProvider.Alibaba,
156
+ parameters: '3B',
157
+ quantization: '8bit',
158
+ displayName: 'Qwen 2.5 3B Instruct (8-bit)',
159
+ downloadSize: 3279142142,
160
+ type: 'llm'
161
+ }, {
162
+ id: MLXModel.Qwen3_1_7B_4bit,
163
+ family: ModelFamily.Qwen,
164
+ provider: ModelProvider.Alibaba,
165
+ parameters: '1.7B',
166
+ quantization: '4bit',
167
+ displayName: 'Qwen 3 1.7B (4-bit)',
168
+ downloadSize: 979502864,
169
+ type: 'llm'
170
+ }, {
171
+ id: MLXModel.Qwen3_1_7B_8bit,
172
+ family: ModelFamily.Qwen,
173
+ provider: ModelProvider.Alibaba,
174
+ parameters: '1.7B',
175
+ quantization: '8bit',
176
+ displayName: 'Qwen 3 1.7B (8-bit)',
177
+ downloadSize: 1839729195,
178
+ type: 'llm'
179
+ }, {
180
+ id: MLXModel.Qwen3_5_0_8B_MLX_4bit,
181
+ family: ModelFamily.Qwen,
182
+ provider: ModelProvider.Alibaba,
183
+ parameters: '0.8B',
184
+ quantization: '4bit',
185
+ displayName: 'Qwen 3.5 0.8B (4-bit)',
186
+ downloadSize: 550000000,
187
+ type: 'llm'
188
+ }, {
189
+ id: MLXModel.Qwen3_5_0_8B_MLX_8bit,
190
+ family: ModelFamily.Qwen,
191
+ provider: ModelProvider.Alibaba,
192
+ parameters: '0.8B',
193
+ quantization: '8bit',
194
+ displayName: 'Qwen 3.5 0.8B (8-bit)',
195
+ downloadSize: 950000000,
196
+ type: 'llm'
197
+ }, {
198
+ id: MLXModel.Gemma_3_1B_IT_4bit,
199
+ family: ModelFamily.Gemma,
200
+ provider: ModelProvider.Google,
201
+ parameters: '1B',
202
+ quantization: '4bit',
203
+ displayName: 'Gemma 3 1B IT (4-bit)',
204
+ downloadSize: 770650946,
205
+ type: 'llm'
206
+ }, {
207
+ id: MLXModel.Gemma_3_1B_IT_8bit,
208
+ family: ModelFamily.Gemma,
209
+ provider: ModelProvider.Google,
210
+ parameters: '1B',
211
+ quantization: '8bit',
212
+ displayName: 'Gemma 3 1B IT (8-bit)',
213
+ downloadSize: 1421522471,
214
+ type: 'llm'
215
+ }, {
216
+ id: MLXModel.Phi_3_5_Mini_Instruct_4bit,
217
+ family: ModelFamily.Phi,
218
+ provider: ModelProvider.Microsoft,
219
+ parameters: '3.8B',
220
+ quantization: '4bit',
221
+ displayName: 'Phi 3.5 Mini Instruct (4-bit)',
222
+ downloadSize: 2150195856,
223
+ type: 'llm'
224
+ }, {
225
+ id: MLXModel.Phi_3_5_Mini_Instruct_8bit,
226
+ family: ModelFamily.Phi,
227
+ provider: ModelProvider.Microsoft,
228
+ parameters: '3.8B',
229
+ quantization: '8bit',
230
+ displayName: 'Phi 3.5 Mini Instruct (8-bit)',
231
+ downloadSize: 4060636056,
232
+ type: 'llm'
233
+ }, {
234
+ id: MLXModel.Phi_4_Mini_Instruct_4bit,
235
+ family: ModelFamily.Phi,
236
+ provider: ModelProvider.Microsoft,
237
+ parameters: '3.8B',
238
+ quantization: '4bit',
239
+ displayName: 'Phi 4 Mini Instruct (4-bit)',
240
+ downloadSize: 2173624891,
241
+ type: 'llm'
242
+ }, {
243
+ id: MLXModel.Phi_4_Mini_Instruct_8bit,
244
+ family: ModelFamily.Phi,
245
+ provider: ModelProvider.Microsoft,
246
+ parameters: '3.8B',
247
+ quantization: '8bit',
248
+ displayName: 'Phi 4 Mini Instruct (8-bit)',
249
+ downloadSize: 4091536167,
250
+ type: 'llm'
251
+ }, {
252
+ id: MLXModel.SmolLM_1_7B_Instruct_4bit,
253
+ family: ModelFamily.SmolLM,
254
+ provider: ModelProvider.HuggingFace,
255
+ parameters: '1.7B',
256
+ quantization: '4bit',
257
+ displayName: 'SmolLM 1.7B Instruct (4-bit)',
258
+ downloadSize: 962855374,
259
+ type: 'llm'
260
+ }, {
261
+ id: MLXModel.SmolLM_1_7B_Instruct_8bit,
262
+ family: ModelFamily.SmolLM,
263
+ provider: ModelProvider.HuggingFace,
264
+ parameters: '1.7B',
265
+ quantization: '8bit',
266
+ displayName: 'SmolLM 1.7B Instruct (8-bit)',
267
+ downloadSize: 1818493993,
268
+ type: 'llm'
269
+ }, {
270
+ id: MLXModel.SmolLM2_1_7B_Instruct_4bit,
271
+ family: ModelFamily.SmolLM,
272
+ provider: ModelProvider.HuggingFace,
273
+ parameters: '1.7B',
274
+ quantization: '4bit',
275
+ displayName: 'SmolLM2 1.7B Instruct (4-bit)',
276
+ downloadSize: 980000000,
277
+ type: 'llm'
278
+ }, {
279
+ id: MLXModel.SmolLM2_1_7B_Instruct_8bit,
280
+ family: ModelFamily.SmolLM,
281
+ provider: ModelProvider.HuggingFace,
282
+ parameters: '1.7B',
283
+ quantization: '8bit',
284
+ displayName: 'SmolLM2 1.7B Instruct (8-bit)',
285
+ downloadSize: 1850000000,
286
+ type: 'llm'
287
+ }, {
288
+ id: MLXModel.OpenELM_1_1B_4bit,
289
+ family: ModelFamily.OpenELM,
290
+ provider: ModelProvider.Apple,
291
+ parameters: '1.1B',
292
+ quantization: '4bit',
293
+ displayName: 'OpenELM 1.1B (4-bit)',
294
+ downloadSize: 608162655,
295
+ type: 'llm'
296
+ }, {
297
+ id: MLXModel.OpenELM_1_1B_8bit,
298
+ family: ModelFamily.OpenELM,
299
+ provider: ModelProvider.Apple,
300
+ parameters: '1.1B',
301
+ quantization: '8bit',
302
+ displayName: 'OpenELM 1.1B (8-bit)',
303
+ downloadSize: 1148048397,
304
+ type: 'llm'
305
+ }, {
306
+ id: MLXModel.OpenELM_3B_4bit,
307
+ family: ModelFamily.OpenELM,
308
+ provider: ModelProvider.Apple,
309
+ parameters: '3B',
310
+ quantization: '4bit',
311
+ displayName: 'OpenELM 3B (4-bit)',
312
+ downloadSize: 1650000000,
313
+ type: 'llm'
314
+ }, {
315
+ id: MLXModel.OpenELM_3B_8bit,
316
+ family: ModelFamily.OpenELM,
317
+ provider: ModelProvider.Apple,
318
+ parameters: '3B',
319
+ quantization: '8bit',
320
+ displayName: 'OpenELM 3B (8-bit)',
321
+ downloadSize: 3100000000,
322
+ type: 'llm'
323
+ }, {
324
+ id: MLXModel.PocketTTS,
325
+ family: ModelFamily.PocketTTS,
326
+ provider: ModelProvider.Kyutai,
327
+ parameters: '44.6M',
328
+ quantization: 'bf16',
329
+ displayName: 'PocketTTS (bf16)',
330
+ downloadSize: 180000000,
331
+ type: 'tts'
332
+ }, {
333
+ id: MLXModel.PocketTTS_8bit,
334
+ family: ModelFamily.PocketTTS,
335
+ provider: ModelProvider.Kyutai,
336
+ parameters: '44.6M',
337
+ quantization: '8bit',
338
+ displayName: 'PocketTTS (8-bit)',
339
+ downloadSize: 140000000,
340
+ type: 'tts'
341
+ }, {
342
+ id: MLXModel.PocketTTS_4bit,
343
+ family: ModelFamily.PocketTTS,
344
+ provider: ModelProvider.Kyutai,
345
+ parameters: '44.6M',
346
+ quantization: '4bit',
347
+ displayName: 'PocketTTS (4-bit)',
348
+ downloadSize: 80000000,
349
+ type: 'tts'
350
+ }, {
351
+ id: MLXModel.GLM_ASR_Nano_4bit,
352
+ family: ModelFamily.GLMASR,
353
+ provider: ModelProvider.Alibaba,
354
+ parameters: '1B',
355
+ quantization: '4bit',
356
+ displayName: 'GLM-ASR Nano (4-bit)',
357
+ downloadSize: 600000000,
358
+ type: 'stt'
359
+ }];
360
+ //# sourceMappingURL=models.js.map