MLX models for LocalLM Lab

Which open-weight models to download for a 24 GB MacBook Air and a 64 GB Mac Studio, what we've tested, and what's next. Updated 2026-10-22. How local models work, and how we test them: Local AI Models on Apple Silicon.

Updated 2026-10-22. Results are for LocalLM Lab 2.1.0 GA on a 64 GB Mac Studio unless a row says otherwise; rows with times on the Air come from LocalLM Lab 2.0. 2.1.0 GA runs mlx-swift-lm at 30d755c (upstream main plus a fix of ours for Qwen3 tool calls inside an unclosed <think> block). Gemma 4 list arguments, gpt-oss tool calls and Muse Glimmer need 2.1.0 GA; on 2.0 they don't work. LocalLM Lab 2.2.0 GA runs mlx-swift-lm at dea880a: 30d755c plus Nemotron 3.5 support and nothing else, so the 2.1.0 GA results hold on 2.2.0 GA. Nemotron 3.5 needs 2.2.0 GA, and its rows were tested on it. Sizes are the checkpoint's weight files on Hugging Face as of October 2026, not the repo's usedStorage (which can count old revisions twice — Qwen3-14B-4bit reports 16.6 GB but downloads 8.3 GB).

Every result here is a point in time. Conversions, chat templates and the runtime all move, so check your own model with the SDK's MLXModelProvider.capabilityProbe before building on it.

Target Macs

MacMemoryComfortable weightsTightToo big
MacBook Air (M3)24 GBup to 12 GB12 – 16.8 GBover 16.8 GB
Mac Studio (M5 Max)64 GBup to 32 GB32 – 44.8 GBover 44.8 GB
Have a Mac with 128 GB or more? Help us test the bigger models. Several models the app's runtime supports are too big for our Macs, such as GLM 4.5 Air (60 GB), Mistral Small 4 119B (68 GB) and Mistral Medium 3.5 128B (78 GB); their repo ids are under Won't run in the app. Run them through the test protocol and send your results to neuron@thisbrain.ai or share them on our Discord. Tell us your Mac and its memory, and we'll add your results to this page with full attribution.
↑ Top

Our picks

UseMacBook Air 24 GBMac Studio 64 GB
Everyday chat with toolsmlx-community/Qwen3-8B-4bitmlx-community/Qwen3.8-27B-4bit
Best grounding (cites tool results exactly)mlx-community/gemma-4-12B-it-OptiQ-4bitmlx-community/gemma-4-31b-it-4bit
Fast with toolsmlx-community/Qwen3-4B-4bitmlx-community/Qwen3-30B-A3B-Instruct-2507-4bit
Highest quality that fitsmlx-community/Qwen3-14B-4bitmlx-community/Qwen3.8-27B-8bit
Decider (lab.decide, JevDK)mlx-community/Qwen3-4B-4bitmlx-community/Qwen3-4B-4bit
Speed helper (draft model)mlx-community/Qwen3-0.6B-4bitmlx-community/Qwen3-0.6B-4bit

Every pick is a tested row below. For a smaller grounding pick on the Air, Ministral-3-14B-Instruct-2512-mxfp4 (8.0 GB) passed every test twice.

↑ Top

How to read the tables

Tool use

Fit — ✅ comfortable, ⚠️ tight, ❌ too big, using the limits in Target Macs.

Format — the model_type from the checkpoint's config.json, and the tool-call parser the runtime picks for it. A model whose format has no parser can't call tools in the app, however good it is.

↑ Top

Qwen

The reference family: the MLX bridge was built against Qwen's tool-call convention, and the Qwen3 models call tools reliably at every size we tried. Qwen3.5 is less steady: see its rows.

ModelSizeAir 24 GBStudio 64 GBTool useFormatNotes
mlx-community/Qwen3-4B-4bit2.3 GBFitsFitsReliableqwen3 · jsonThe decider default: about 150 ms for four questions. Pairs with Qwen3-0.6B-4bit as a speed helper (17–25% faster on the Air).
mlx-community/Qwen3-8B-4bit4.6 GBFitsFitsReliableqwen3 · json360 s on the GitHub test on the Air. Dropped 2 of 3 releases and guessed a timeframe. code-buddy's default.
mlx-community/Qwen3-14B-4bit8.3 GBFitsFitsReliableqwen3 · json245 s on the Air — faster than 8B on the same prompt. Release dates to the day only.
mlx-community/Qwen3.8-27B-4bit16.1 GBTightFitsReliableqwen3_5 · xml_functionAll four tests passed on the Studio, every commit cited correctly. Slow on GitHub, 617 s, because it reads every page of commits; shows its reasoning before the answer. On the Air (LocalLM Lab 2.0) it hit the 10-minute timeout without answering. Loads as a vision model. 92% on triage questions as a decider, but about 1.2 s per case.
lmstudio-community/Qwen3.8-27B-MLX-6bit22.8 GBToo bigFitsReliableqwen3_5 · xml_functionConfirmed on the Studio.
mlx-community/Qwen3.8-27B-8bit29.5 GBToo bigFitsReliableqwen3_5 · xml_functionConfirmed on the Studio. Needed the 1.0.0 GA preflight fix, which stopped it being counted as 58.1 GB.
mlx-community/Qwen3-1.7B-4bit1.0 GBFitsFitsPartialqwen3 · jsonCalls the right tools, but its GitHub answer cites no commits and puts releases on the wrong days; Context7 stopped after the first call. Echo and HF passed. Too small for grounded answers.
mlx-community/Qwen3-4B-Instruct-2507-4bit2.3 GBFitsFitsPartialqwen3 · jsonFast (9 s on GitHub, no thinking pass) and named the releases correctly, but cites commits only vaguely ("7 commits in two days"). Context7 stopped after the first call, and in one of two runs it answered HF from a search instead of the repo details and missed the facts. Echo passed.
mlx-community/Qwen3.5-4B-MLX-4bit3.0 GBFitsFitsPartialqwen3_5 · xml_functionEcho and Context7 passed. On GitHub it never finished: one run stopped mid-plan, the other made 8 calls and returned an empty answer. Its HF answer missed the Gemma license. Shows its reasoning. Qwen3.5-9B did better in the scripted run, but its tool calls now usually fail (see its row).
mlx-community/Qwen3.5-9B-MLX-4bit6.0 GBFitsFitsPartialqwen3_5 · xml_functionTool calls usually fail in later testing: the turn ends with a rejected tool call (malformed_syntax), even for a tool with no arguments (known issue, under investigation). In the scripted run on 2.1.0 GA all four tests passed both times, with accurate GitHub answers, so it can do the work when its calls parse. 35 s on GitHub with the Studio idle. Shows its reasoning in the answer. Fine for chat without tools; for tool use, pick another model until this is fixed.
mlx-community/Qwen3.6-27B-4bit16.1 GBTightFitsReliableqwen3_5 · xml_functionAll four tests passed. Its GitHub answer (115 s) cited 12 real commit messages with exact times and all three releases, nothing invented. Shows its reasoning. Qwen3.8-27B is the newer pick at the same size.
mlx-community/Qwen3-30B-A3B-Instruct-2507-4bit17.2 GBToo bigFitsReliableqwen3_moe · jsonMoE, 3B active. All four tests passed, the fastest GitHub answers (10 s idle). Misread the release order both times, calling v1.0.0 the latest (it was the first). No visible reasoning. Not as a decider (MoE).
mlx-community/Qwen3.6-35B-A3B-4bit20.4 GBToo bigFitsPartialqwen3_5_moe · xml_functionMoE, 3B active. Right tools every time, but the first GitHub answer invented 5 of 14 commits, hashes and messages included; the second (28 s) invented none. Treat its grounding as unreliable. Echo, HF and Context7 passed both times. Shows its reasoning.
mlx-community/Qwen3-Coder-30B-A3B-Instruct-4bit17.2 GBToo bigFitsPartialqwen3_moe · jsonMoE, 3B active. Echo and HF passed, but on GitHub its call was cut off before it was complete (the turn failed), and the Context7 test produced nothing for 15 minutes and was stopped. A coding model; not reliable for general tool use in the app.
mlx-community/Qwen3-Coder-Next-4bit44.8 GBToo bigTightReliableqwen3_next · xml_functionMoE. All four tests passed. Its GitHub answer (31 s) cited real commits and placed v1.0.0 correctly as the first release; one slip, saying the last commit came "over a day" after the last release (it was 12 hours). Coding model, right at the Studio's 70% limit (44.8 GB).
mlx-community/Qwen2.5-1.5B-Instruct-4bit0.9 GBFitsFitsReliableqwen2 · jsonThe original baseline. Calls tools, grounds shallowly. Pairs with Qwen2.5-0.5B-Instruct-4bit.
↑ Top

Gemma

ModelSizeAir 24 GBStudio 64 GBTool useFormatNotes
mlx-community/gemma-4-12B-it-OptiQ-4bit9.0 GBFitsFitsReliablegemma4_unified · gemma4All four tests passed; the GitHub answer (22 s) matched five real commits to the right hashes and gave every release time correctly, nothing invented.
mlx-community/gemma-4-e4b-it-4bit5.1 GBFitsFitsPartialgemma4 · gemma4Asks for confirmation instead of calling the GitHub tools in some tries (2 of 3 on 2.0's runtime, 1 of 3 on 2.1.0 GA's); accurate when it does call them. List arguments arrive garbled on 2.0 and clean from 2.1.0 GA, where HF, echo and Context7 all passed.
mlx-community/gemma-4-26b-a4b-it-4bit15.3 GBTightFitsReliablegemma4 · gemma4MoE, 4B active. All four tests passed, every release time correct, 10 s on GitHub. On LocalLM Lab 2.0 tools that take a list fail: the HF test looped through 16 calls, and the GitHub answer had wrong dates. Needs 2.1.0 GA.
mlx-community/gemma-4-31b-it-4bit18.4 GBToo bigFitsReliablegemma4 · gemma4All four tests passed. Its GitHub answer (36 s) is one of the best yet: real commit hashes matched to the right messages, all three release times correct, nothing invented. Studio only. Needs 2.1.0 GA for tools that take lists.
↑ Top

Mistral

Two things to know before picking a Mistral checkpoint:

ModelSizeAir 24 GBStudio 64 GBTool useFormatNotes
mlx-community/Ministral-3-3B-Instruct-2512-4bit2.7 GBFitsFitsReliablemistral3 · mistralCleanest grounding after Gemma 4: every commit and release correct, nothing invented. 51 s on the Air.
mlx-community/Ministral-3-14B-Instruct-2512-mxfp48.0 GBFitsFitsReliablemistral3 · mistralThe intact way to get the 14B (the 4-bit repo is broken); MXFP4 loads fine. All four tests passed. The first GitHub answer attached one commit message to the wrong commit; the second was accurate. 25 s on GitHub, idle.
mlx-community/Ministral-3-14B-Instruct-2512-mxfp814.8 GBTightFitsReliablemistral3 · mistralAll four tests passed (35 s on GitHub): all three releases right, dates to the day, nothing invented. The 8-bit-class version of the 14B for the Studio.
mlx-community/Mistral-Small-3.2-24B-Instruct-2506-4bit13.3 GBTightFitsReliablemistral3 · mistralThe conversion ships no tool-capable template, so 2.1.0 GA supplies Mistral's own format for it. All four tests passed; the GitHub answer (30 s) cited five real commit messages and all three releases by name, dates to the day, nothing invented.
mlx-community/Mistral-Small-3.2-24B-Instruct-2506-8bit25.0 GBToo bigFitsPartialmistral3 · mistralThis conversion has no chat template at all; 2.1.0 GA supplies Mistral's tool format, and its capability check now finishes (it used to run for over 30 minutes). Echo, HF and Context7 passed, but its GitHub answer called v1.0.0 the latest release (it was the first) and cited only two commits. The 4-bit did better.
mlx-community/Devstral-Small-2-24B-Instruct-2512-4bit15.1 GBTightFitsReliablemistral3 · mistralAll four tests passed (37 s on GitHub) with real commits and releases, nothing invented, though its conclusion contradicted itself on how often releases happen. Coding and agent model.
mlx-community/Devstral-Small-2-24B-Instruct-2512-8bit26.6 GBToo bigFitsPartialmistral3 · mistralWeaker than the 4-bit in our run: echo and HF passed and its GitHub answer named all three releases, but cited no specific commits; on Context7 it wrote resolve-library-id[ARGS]{…} without the [TOOL_CALLS] marker, so nothing ran. One run each, so treat the difference from the 4-bit as tentative.
lmstudio-community/Magistral-Small-2507-MLX-4bit13.3 GBTightFitsReliablemistral · json (default)All four tests passed (37 s on GitHub). Cited real commits with links and all three releases, dates to the day, nothing invented. On 2.1.0 GA the runtime picks Mistral's parser from its template, and Magistral writes the newer call format it reads.
mlx-community/Mistral-7B-Instruct-v0.3-4bit4.1 GBFitsFitsNo toolsmistral · mistralNo tool calling in the app; use Ministral 3 instead. Its calls use the old [TOOL_CALLS] [{…}] list form: printed as raw text on LocalLM Lab 2.0, rejected as malformed from 2.1.0 GA. A drafted runtime patch parses them, but this 2024 conversion's chat template also drops the tool result, so a tool loop still fails. The newer mlx-community/Mistral-7B-Instruct-v0.3-mlx-4Bit ships the current template; untested.
mlx-community/Mistral-Nemo-Instruct-2407-4bit6.9 GBFitsFitsNo toolsmistral · json (default)Confirmed: no chat template, so no tool calls in any test; on GitHub it invents a history instead.
mlx-community/Mixtral-8x7B-Instruct-v0.1-4bit26.3 GBToo bigFitsWon't loadmixtral · json (default)MoE, 13B active. Downloads and loads, but its chat template throws an error on even a plain prompt, so it can't answer in the app.
mlx-community/Codestral-22B-v0.1-4bit12.5 GBTightFitsNo toolsmistral · json (default)No chat template, so the app falls back to plain text; in the capability probe it answered but never made a tool call. Code completion only. Non-production license.
mlx-community/Ministral-3-8B-Instruct-2512-4bit5.6 GBFitsFitsWon't loadmistral3 · mistralBroken upstream: the index names 3 weight files, the repo has 2. The 5-, 6- and 8-bit and bf16 have the same problem.
mlx-community/Ministral-3-14B-Instruct-2512-4bit8.4 GBFitsFitsWon't loadmistral3 · mistralBroken upstream, like the 8B. Use the MXFP4 conversion above.
mlx-community/Ministral-3-3B-Reasoning-2512-4bit2.7 GBFitsFitsWon't loadmistral3 · mistralBroken upstream, like every quantized Reasoning repo (only the bf16 ones are intact).
mlx-community/Ministral-3-8B-Reasoning-2512-4bit5.6 GBFitsFitsWon't loadmistral3 · mistralBroken upstream.
mlx-community/Ministral-3-14B-Reasoning-2512-4bit8.4 GBFitsFitsWon't loadmistral3 · mistralBroken upstream.
↑ Top

Granite

ModelSizeAir 24 GBStudio 64 GBTool useFormatNotes
mlx-community/granite-4.0-h-tiny-4bit3.9 GBFitsFitsPartialgranitemoehybrid · jsonCalls tools, but picked get_file_contents and get_latest_release instead of the history tools, so half the answer was made up. 26 s on the Air. Retest with the tools named.
mlx-community/granite-4.1-3b-4bit2.1 GBFitsFitsPartialgranite · jsonOnly echo passed. On GitHub, HF and Context7 it called tools it hadn't been offered, so each turn failed; the capability probe's call was cut off. Not usable for tool work.
mlx-community/granite-4.1-8b-4bit5.2 GBFitsFitsPartialgranite · jsonMuch better than the 3B: echo and Context7 passed, and its GitHub answers had every release time right. But both runs garbled a commit hash and attached it to the wrong message, and its HF answers missed a fact.
↑ Top

GLM

Zhipu AI's GLM models (MIT license). The GLM tool-call format has its own parser in the runtime, and LocalLM Lab 2.1.0 GA also reads GLM-4-0414's calls, which come without the usual markers. GLM 4.6V and 4.1V use a vision architecture (glm4v) the runtime doesn't support, GLM 5.2 and 5.3 use glm_moe_dsa (also unsupported, and over 400 GB), and GLM-OCR is a text-recognition model, not a chat model.

ModelSizeAir 24 GBStudio 64 GBTool useFormatNotes
mlx-community/GLM-4-9B-0414-4bit5.3 GBFitsFitsPartialglm4 · glm4Needs 2.1.0 GA, which passes tool results in GLM's own observation role. Echo, HF and Context7 passed. On GitHub it described the real commits accurately but never fetched the releases, and answered in Chinese to an English prompt.
mlx-community/GLM-Z1-9B-0414-4bit5.3 GBFitsFitsNo toolsglm4 · glm4No call ever dispatched: it writes GLM's markerless call (get_latest_release plus JSON) inside its reasoning, which the parser doesn't pick up. Shows its reasoning.
mlx-community/GLM-4-32B-0414-4bit18.3 GBToo bigFitsPartialglm4 · glm4Needs 2.1.0 GA, which passes tool results in GLM's own observation role. Echo, HF and Context7 passed. On GitHub it wrote a plan followed by two calls (list_commits, then list_releases) as text in one reply, which the parser didn't pick up, so nothing ran.
mlx-community/GLM-4.7-Flash-4bit16.9 GBTightFitsPartialglm4_moe_lite · glm4MoE. HF and Context7 passed, but on the echo test it wrote a garbled GLM call (<arg_value> tags with no tool name or key) that never dispatched, and the GitHub test produced nothing for 15 minutes and was stopped. Shows its reasoning.
mlx-community/GLM-4.7-Flash-6bit24.3 GBToo bigFitsReliableglm4_moe_lite · glm4MoE. Unlike the 4-bit, all four tests passed. Its GitHub answer (27 s) cited real commits with correct times and all three releases, nothing invented. Shows its reasoning. Studio only.
mlx-community/GLM-4.7-Flash-8bit31.8 GBToo bigFitsReliableglm4_moe_lite · glm4MoE. All four tests passed. Its GitHub answer (129 s, it read several pages) summarized the commits accurately and placed v1.0.0 correctly as the first release, nothing invented. Shows its reasoning. Like the 6-bit, unlike the 4-bit.
↑ Top

Other families

ModelSizeAir 24 GBStudio 64 GBTool useFormatNotes
mlx-community/NVIDIA-Nemotron-3-Nano-4B-4bit2.2 GBFitsFitsPartialnemotron_h · xml_functionEcho, HF and Context7 passed. Its GitHub answers are vague: one release named, two commits cited, and in an earlier run a commit table with a repeated hash and wrong times. Shows its reasoning. NVIDIA license.
mlx-community/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-4bit17.8 GBToo bigFitsReliablenemotron_h · xml_functionMoE, 3B active. Needs LocalLM Lab 2.2.0 GA. Tested in the app on 2.2.0 GA: calls tools, including the GitHub MCP server, like the 8-bit. The four scripted tool tests haven't been run. The comfortable Nemotron 3.5 choice for the 64 GB Studio. Shows its reasoning unless thinking is off. NVIDIA license.
mlx-community/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-8bit33.6 GBToo bigTightReliablenemotron_h · xml_functionMoE, 3B active. Needs LocalLM Lab 2.2.0 GA. Tested in the app on 2.2.0 GA: calls tools, including the GitHub MCP server. The four scripted tool tests haven't been run. Shows its reasoning unless thinking is off. NVIDIA license.
rapid-mlx/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-MLX-3bit31.7 GBToo bigFitsReliablenemotron_h_puzzle · xml_functionMoE, 9B active. Needs LocalLM Lab 2.2.0 GA. Tested in the app on 2.2.0 GA: calls tools, including the GitHub MCP server. The four scripted tool tests haven't been run. About 9–12 tokens/s, 34.7 GB peak memory. Text only: the Bolt builds that take images (nemotron_h_omni) don't load. NVIDIA license.
rapid-mlx/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-MLX-3bit42.7 GBToo bigTightReliablenemotron_h · xml_functionMoE, 12B active. Needs LocalLM Lab 2.2.0 GA. Tested in the app on 2.2.0 GA: calls tools, including the GitHub MCP server. The four scripted tool tests haven't been run. Tight on the 64 GB Studio: close other large apps. Text only: this conversion drops the vision part, despite the name. NVIDIA license.
Duckets/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-MLX-4bit43.1 GBToo bigTightWon't loadnemotron_h_omniMoE. On 2.2.0 GA it downloads, then fails to load: "Unsupported model type: nemotron_h_omni". This is the image-taking Bolt build, which the runtime doesn't support yet. Use the rapid-mlx 3-bit text build instead.
txgsync/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB-MLX24.1 GBToo bigFitsWon't loadnemotron_h_nano_omniMoE. On 2.2.0 GA it fails to load: "Unsupported model type: nemotron_h_nano_omni", another image-taking variant the runtime doesn't support yet.
nativ-community/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-mxfp440.8 GBToo bigTightWon't loadnemotron_h_omniMoE. On 2.2.0 GA the download fails its integrity check: model-00008-of-00008.safetensors doesn't match the hash Hugging Face reports, so it isn't kept. It's also the image-taking nemotron_h_omni build, so it wouldn't load even if it downloaded.
hermitdave/Nemotron-3.5-Bolt-74B-A9B-MLX-mixed3636.1 GBToo bigTightWon't loadnemotron_h_puzzleMoE. A mixed 3/6-bit conversion. On 2.2.0 GA it fails to load: the runtime can't read its per-layer quantization settings in config.json ("Type mismatch at 'quantization.method'").
mlx-community/LFM2.5-2.6B-4bit1.5 GBFitsFitsWon't loadlfm2 · lfm2Fails to load: the runtime's LFM2 code expects weights this conversion doesn't have (operator_norm, feed_forward.w2). LFM license.
mlx-community/LFM2.5-8B-A1B-MLX-4bit4.8 GBFitsFitsPartiallfm2_moe · lfm2MoE, 1B active. Echo and HF passed, quickly. The GitHub test looped through 16 calls without answering, and on Context7 it called a tool it wasn't offered (the turn fails cleanly). LFM license.
LiquidAI/LFM2.5-8B-A1B-MLX-4bit4.8 GBFitsFitsReliablelfm2_moe · lfm2MoE, 1B active. Liquid AI's own conversion. Tested in the app on 2.2.0 GA on the Studio: uses the GitHub MCP server's tools successfully. The four scripted tool tests haven't been run, and its speed on the Air isn't measured yet. LFM license.
LiquidAI/LFM2.5-8B-A1B-MLX-8bit9.0 GBFitsFitsReliablelfm2_moe · lfm2MoE, 1B active. Liquid AI's own 8-bit conversion. Tested in the app on 2.2.0 GA on the Studio: uses the GitHub MCP server's tools successfully, like the 4-bit. The four scripted tool tests haven't been run, and its speed on the Air isn't measured yet. LFM license.
LiquidAI/LFM2.5-24B-A2B-MLX-8bit25.5 GBToo bigFitsReliablelfm2_moe · lfm2MoE, 2B active. Liquid AI's own conversion. Tested in the app on 2.2.0 GA on the Studio: uses the GitHub MCP server's tools successfully. The four scripted tool tests haven't been run. LFM license.
mlx-community/Olmo-3-7B-Instruct-4bit4.1 GBFitsFitsNo toolsolmo3 · jsonNever called a tool, in any test or the capability probe. On GitHub it wrote a "hypothetical" answer with invented dates and commit hashes.
mlx-community/Olmo-3.1-32B-Instruct-4bit18.1 GBToo bigFitsNo toolsolmo3 · jsonNo call ever dispatched. It tries (on echo its call was rejected as malformed) and on GitHub it describes the calls it would make without making them. Like OLMo 3 7B, its call format doesn't match what the runtime parses.
mlx-community/Llama-3.1-8B-Instruct-4bit4.5 GBFitsFitsPartialllama · llama3Needs 2.1.0 GA, which keeps one tool call per turn for its template. Echo passed, but the model itself is weak at tools: its GitHub answer mixed up the latest commit with a release and called v1.0.0 the latest release, the HF test repeated the same lookup, and on Context7 it called the second tool before the first.
mlx-community/MiMo-V2.6-Distill-Qwen-9B-OptiQ-4bit7.1 GBFitsFitsPartialqwen3_5 · xml_functionDownloads only with the 2.1.0 GA download fix (its repo has an optiq/ subfolder). A good GitHub answer (real commits, releases, a sound conclusion) and Context7 passed, but on the echo test it wrote the arguments as plain JSON instead of a call and then described a result it never got, and its HF answer missed the Gemma license. Shows its reasoning.
mlx-community/Muse-Glimmer-30B-4bit19.4 GBToo bigFitsReliablemuse_glimmer · atemDense 30B agent model from Meta (Apache-2.0). Needs LocalLM Lab 2.1.0 GA: 2.0 can't load it. On 2.1.0 GA all four tests passed; the GitHub answer was accurate, with full hashes and dates, but took 525 s over 15 tool calls (it reads every page). Too big for the Air at any quantization. -mxfp4 (18.5 GB) and -nvfp4 (19.4 GB) are the same size class.
mlx-community/Muse-Glimmer-30B-8bit33.4 GBToo bigTightReliablemuse_glimmer · atemNeeds 2.1.0 GA. All four tests passed, with exact commit hashes and times, all matching the repository. One slip: it said development continued "more than 32 hours" after the last release (it was 12). Slow: 377 s on GitHub, 103 s on Context7. The 4-bit is faster with the same accuracy.
mlx-community/gpt-oss-20b-MXFP4-Q411.2 GBFitsFitsPartialgpt_oss · harmonyOn LocalLM Lab 2.0 its Harmony-format calls show up as raw text. On 2.1.0 GA calls dispatch; echo and Context7 passed. On GitHub it called the right tools and got every release time right, but attached the wrong messages to several commits (one hash three times). The HF test failed with "Failed to parse generated content". 26 s on GitHub.
↑ Top

Can't use tools

We tested these and found they don't call tools in the app: they load and answer, but never use a connector or MCP server. Fine for plain chat. Other models with ❌ No tools are listed with their family above.

ModelSizeAir 24 GBStudio 64 GBTool useFormatNotes
mlx-community/phi-4-4bit8.2 GBFitsFitsNo toolsphi3 · jsonIts chat template has no tool support. Says so honestly instead of inventing an answer.
mlx-community/Phi-4-mini-instruct-4bit2.2 GBFitsFitsNo toolsphi3 · jsonIts template expects tools inside the system message, which the runtime doesn't do, so the model never sees them.
mlx-community/SmolLM3-3B-4bit1.7 GBFitsFitsNo toolssmollm3 · jsonTemplate expects xml_tools, which the runtime doesn't set. Then invents dates and counts.
mlx-community/DeepSeek-R1-Distill-Qwen-14B-4bit8.3 GBFitsFitsNo toolsqwen2 · jsonNo working tool convention in the template. Invents a full commit and release history.
mlx-community/DeepSeek-R1-Distill-Qwen-7B-4bit4.3 GBFitsFitsNo toolsqwen2 · jsonAs the 14B.
mlx-community/DeepSeek-R1-Distill-Llama-8B-4bit4.5 GBFitsFitsNo toolsllama · llama3As the 14B, on a Llama base: the gap is DeepSeek's template, not the base.
mlx-community/DeepSeek-V2-Lite-Chat-4bit-mlx8.8 GBFitsFitsNo toolsdeepseek_v2 · jsonFastest run we measured (12 s), but no tool concept in its template.
↑ Top

Won't run in the app

ModelSizeAir 24 GBStudio 64 GBTool useFormatNotes
mlx-community/Mistral-Small-4-119B-2603-OptiQ-2bit45.8 GBToo bigToo bigToo bigmistral3 · mistralMoE. Just over the Studio's preflight limit even at 2-bit; the 4-bit is 67.8 GB.
mlx-community/Mistral-Medium-3.5-128B-4bit78.0 GBToo bigToo bigToo bigmistral3 · mistralSupported, too big for either Mac.
mlx-community/Devstral-2-123B-Instruct-2512-4bit70.3 GBToo bigToo bigWon't loadministral3Architecture name not in the runtime, and too big anyway.
mlx-community/Qwen3.8-Flash-Next-4bit111.5 GBToo bigToo bigWon't loadqwen4_expArchitecture not in the runtime, and too big for either Mac.
mlx-community/Qwen3.8-27B-MTP-4bit0.2 GBFitsFitsWon't loadqwen3_5_mtpNot a model on its own: a multi-token-prediction head for Qwen3.8-27B.
mlx-community/GLM-5.3-Flash-4bit204 GBToo bigToo bigWon't loadglm5_nextArchitecture not in the runtime.
mlx-community/GLM-4.5-Air-4bit60.2 GBToo bigToo bigToo bigglm4_moe · glm4Supported, but over the Studio's preflight limit despite the name.
mlx-community/DeepSeek-V4-Flash-4bit489 GBToo bigToo bigToo bigdeepseek_v3 · jsonSupported, far too big for any desktop Mac.
↑ Top

Speed helpers and adapters

Pairs that ran end to end on the Air in a release build. Speed depends on the Mac and the pair, so measure yours.

ModelCompanionResult
mlx-community/Qwen3-4B-4bitSpeed helper mlx-community/Qwen3-0.6B-4bit, 2 tokens aheadAbout 17–25% faster once warmed up. The SDK's reference app measured 30–40% on other hardware.
mlx-community/Qwen2.5-1.5B-Instruct-4bitSpeed helper mlx-community/Qwen2.5-0.5B-Instruct-4bitLoads and is used; speed not measured.
mlx-community/Qwen3-4B-4bitSpeed helper mlx-community/Qwen2.5-0.5B-Instruct-4bit (a different family that shares Qwen's vocabulary)Loads and is used; speed not measured.
mlx-community/Qwen3-0.6B-bf16Adapter stbenjam/qwen3-0.6b-haiku-mlx-loraReplies come back as haiku-style verse, the same each time at temperature 0.

To try on the Studio: Qwen3-0.6B-4bit as a helper for Qwen3-8B-4bit and Qwen3-14B-4bit, and Qwen3.5-0.8B-4bit as a helper for Qwen3.8-27B-4bit (same qwen3_5 vocabulary — check before relying on it).

↑ Top

Test protocol

  1. Fit and load. Add the model by repo id in LocalLM Lab's Add Model sheet. Note the preflight result and whether it loads. A load failure with a missing weight file is usually the repo, not the app: compare its model.safetensors.index.json with its file list.
  2. Tool use.
    • Run the four tool tests below.
    • Record the tools called and the elapsed time.
    • Check every commit, release and fact the answer cites against the source.
    • Treat any invented detail as a finding, even in an otherwise good answer.
  3. Speed. Run the Benchmark switch on the same pasted text for each model on a given Mac, and record time to first token and tokens per second from a warmed-up run.
  4. Record. Keep the full trace, then update the model's row here. Tried a model that isn't listed? Send us your results at neuron@thisbrain.ai.

The four tool tests

Each test is a single prompt with only the named tools turned on. GitHub times on this page are the GitHub test, start to answer.

↑ Top