← Back to this issue

MLX MiniMax M3.1 Flash on MLX (lead): mlx-lm #2003 + mlx-community Text 3/4-bit + oQ builds · MLX quiet

Apple Silicon this window: mlx-lm #2003 (load the original MiniMax M3.1 checkpoint) merged early Oct 23 ET; mlx-community posted MiniMax-M3.1-Flash-Text-3bit / -Text-4bit and oQ3e / oQ3.5e / oQ4e-mtp builds overnight. MLX 0.32.4 / mlx-lm 0.32.2 still the latest tagged releases.

mlx-lm #2003 — “Support loading the original MiniMax M3.1 checkpoint” (merged)

Opened by jundot (implementation credited to pcuenca), approved and merged by zcbenz on Oct 23 (early morning ET). Loads MiniMax’s native-precision files directly: routed experts NVFP4 with a per-expert global scale, attention / shared expert / dense MLP MXFP8. “The router stays float32 on convert, like the checkpoint. With a bf16 router about 1% of tokens per layer pick a different top-4 set.” “No vision yet.” PR verification: mlx_lm.generate --model MiniMaxAI/MiniMax-M3.1-Flash … -m 1024 → prompt 199 tokens at 104.7 tok/s, generation 858 tokens at 23.8 tok/s, peak memory 252.3 GB. Hardware not stated; one run; project-reported, not ours. Not in a tagged release: PyPI mlx-lm is still 0.32.2 (Oct 15 ET). To use it on the original checkpoint, install from main.

mlx-community — MiniMax-M3.1-Flash-Text-3bit and -Text-4bit

Both created Oct 23 ~01:43Z (≈9:43 PM ET Oct 22; note this is before the 03:37Z timestamp on MiniMax’s single “Init” commit — HF shows last-modified time, so the weights may have gone public earlier than the commit date suggests). Both cards: “This is a text-only conversion. The vision tower is not included.” “Tested with mlx-lm 0.32.2.” Text-4bit: “keep the original quantization” (NVFP4 experts with per-expert global scale; MXFP8 attention/shared/dense; router float32); ≈248.4 GB; peak ≈249 GB in a short test — does not realistically fit 256 GB with macOS and KV cache. Text-3bit: “dequantized and then quantized to 3-bit affine with group size 64 (3.5 bits per weight). The router is kept at 8 bits.” ≈186.5 GB; peak ≈187 GB in a short generation test — the 256 GB Studio fit. Dequant/requant means quality may differ from the official weights (MiniMax: “third-party quantizations may differ”). Not benchmarked here.

mlx-community — oQ3e / oQ3.5e / oQ4e-mtp (oMLX mixed precision, vision + DSpark draft kept)

Quantized with oQ (oMLX v0.7.3.dev1). oQ3e-mtp: routed experts NVFP4 → affine 3-bit; MXFP8 kept for shared experts, sparse-attention indexer and about a third of attention projections; vision encoder (0.677B, 1.35 GB) and DSpark draft (2.011B, 2.30 GB) included; total 429.063B params, 196.15 GB; 3.631 bpw (3.657 incl. draft). oQ4e-mtp ≈248.8 GB. Built for the oMLX runtime (github.com/jundot/omlx), not necessarily stock mlx-lm. License wording contradiction: the oQ3e card says commercial use needs “obtaining prior written authorization from MiniMax”; the actual LICENSE requires written authorization only above US$20M yearly revenue, otherwise a one-time notice.

MLX / mlx-lm / mlx-vlm — releases quiet

MLX v0.32.4 (Oct 14) and mlx-lm v0.32.2 (Oct 15 ET) still latest on GitHub and PyPI; mlx-swift / mlx-swift-lm newest Sep 30; mlx-vlm v0.7.10 (Oct 21; Issue 44) still latest; mlx-audio newest Oct 20. No GitHub Security advisories for MLX since Nov 2025, none ever for mlx-lm. Flint support in mlx-lm (#1998) not re-checked this morning (GitHub API rate limit).

mlx-vlm v0.7.10

Published Oct 21 17:46Z (≈1:46 PM ET). #2565 native Flint BF16 support (Blaizzy); #2542 Muse Spark Open with audio/video/images (lucasnewman); #2538 preserve NVFP4 scales + batch offloaded MoE execution; #2566 fix fused NVFP4 rowwise scales in expert-offload repacking. Note: mlx-vlm is a VLM package; Flint is text-only — this is a runtime path, not a vision feature.

mlx-community — Flint mixed 3/4-bit; DeepSeek V4.1 Flash 1017 oQ builds

mlx-community/flint-mixed-3-4bit created Oct 22 08:29Z (≈4:29 AM ET). mlx-community/DeepSeek-V4.1-Flash-1017-oQ2e/oQ2.5e/oQ3e/oQ4e-ngram-mtp created Oct 22 ~03:53–03:56Z (≈midnight ET). Community uploads (also many third-party Flint MLX/GGUF repos); check each card for conversion details. Not benchmarked here.

MLX / mlx-lm — quiet releases; Flint PR open; merged Metal work

MLX v0.32.4 (Oct 14) and mlx-lm v0.32.2 (Oct 15 ET) still latest on GitHub and PyPI. mlx-lm: #1998 “Recursive Flint model support” open; merged Oct 22 ~09:46–09:48Z #1986 Mistral3 medium and #1955 keep NVFP4 global scales in convert --dtype / --dequantize; open #1945 Kolibri 1, #1997 GLM sparse prefill, #1988 Dory, #1982 Nemotron 3.5 Bolt. MLX: merged #4712 Metal qmv_mma/qmv_nax for 6–16 rows with large N/K (Oct 22 08:22Z); open #4734 sliding-window attention (relevant to Flint’s 35 sliding layers), #4722 int8 affine qmm path.

AnyLanguageModel 1.0 + swift-huggingface 1.0 + swift-xet 1.0

HF blog published Oct 20 (Mattt). Releases: AnyLanguageModel 1.0.0 (Oct 13 13:18Z; breaking: own JSONValue type, @Generable enums with associated values), swift-huggingface 1.0.0 (Oct 9; requires swift-xet 1.0; struct errors), swift-xet 1.0.0 (Oct 6) / 1.1.0 (Oct 8; CAS reconstruction v2, retries). Drop-in for Apple Foundation Models: import AnyLanguageModel; providers: system model, MLX, llama.cpp, Core ML, any Foundation Models LanguageModel on OS 27 (incl. Core AI models), OpenAI Chat Completions + Responses, Open Responses, Anthropic Messages (adaptive thinking/effort), Gemini, Ollama, Private Cloud Compute (OS 27), HF Inference Providers / OpenAI-compatible base URLs. Tool calling + guided generation on every provider; image input (Foundation Models 27 syntax); reasoning in transcript; API-key closure for short-lived tokens; runs on Linux. Package trait "MLX". Post examples: Gemma 4 E2B GGUF ~3.4 GB Q4_0, LFM2.5 2.6B ~1.7 GB Q4_K_M, Qwen3.8 27B MLX ~16 GB 4-bit (Mac with 32 GB+). “Coming soon: models that decide, and models that listen.”

MLX — quiet release lane; merged Metal quantized-matmul work

MLX v0.32.4 (Oct 14) still latest on GitHub and PyPI; mlx-lm v0.32.2 (Oct 15 ET). Merged, unreleased: MLX #4682 staged affine_qmm_t_nax kernels with split-k (Oct 20 10:35Z), #4709 fast fp4→half dequant route in fp_qmm_t (Oct 21 07:52Z); open #4722 int8 path for affine quantized matmul, #4712 tile fp qmm for 6–16 rows, #4734 sliding-window attention. mlx-lm merged #1990 AFM7 RoPE offsets for left-padded batches, #1959 ERNIE-4.5 MoE correction-bias routing (Oct 20); open #1988 Dory, #1982 Nemotron 3.5 Bolt, #1986 Mistral3 medium. mlx-community: Hy-Memory-30B-A3B-4bit / -8bit (Oct 21 02:06–02:17Z ≈ Oct 20 10 PM ET).

PyTorch 2.15 on MPS — FP8, MoE grouped matmul, Metal kernels (lead)

Hugging Face blog “MPS in PyTorch 2.15,” published Oct 20, 2026 by HF’s PyTorch team (Irakli Salia, Khushi Agrawal). Status: release candidate — post says “give the release candidate a try”; RC install uv pip install torch==2.15.0 --index-url https://download.pytorch.org/whl/test/cpu; PyPI latest final at our check (≈8:20 AM ET) is 2.14.1 (Sep 30). Requirements: MPS needs macOS 15+; PyTorch 2.15 needs Python 3.11+; the MPS availability check now says why it is unavailable. FP8: torch.float8_e4m3fn tensors on MPS (1 byte/value) and F.scaled_mm with tensorwise and rowwise scaling. Decode: F.linear now uses the MPS GEMV kernels (since 2.14 only for torch.mm) with eligible bias fused — 1.23× geometric-mean over 96 BF16 layer shapes; native F.grouped_mm Metal kernels read group offsets on the GPU (Metal Performance Primitives where available) plus a small-group decode kernel (~1.3× MoE tok/s on its own); MoE decode 5–6.5× vs 2.14 on an M3 Ultra with torch.compile: Qwen3.6-35B-A3B 9.4 → 61.3 tok/s, LFM2.5-8B-A1B 23.6 → 123.6 tok/s; vocabulary softmax ~8× (57 µs → 7 µs in HF’s example). Linear algebra: complex64 LU / LU solve / triangular solve on MPS; single-kernel batched FP32 inverse up to 4×4; blocked QR; Gated DeltaNet fast path for 16/32/64 FP32 triangular systems with ≥8 RHS; SVD robustness fixes. Conv/padding/training: specialized conv1d forward kernels + im2col path; constant padding moved to Metal — Wan2.2-TI2V-5B tiled VAE decode (8,764 padding calls) peak driver memory ≈270 GiB → 8 GiB; reflection/replication padding on Metal with backward fixes; Qwen-Image-2.1 VAE encoder corruption on 2.14 (reported in ComfyUI) fixed — round-trip PSNR vs CPU 10.06 → 29.95 dB. Public MPS streams; SDPA math path batch/head broadcasting fix. 2.16 preview (nightlies/in review): command buffer committed every 16 kernels — compiled BF16 decode at 2,048 ctx: LFM2.5-8B-A1B 108.8 → 126.0 (+16%), Qwen3.6-35B-A3B 52.9 → 62.8 (+19%), Qwen3.8-27B 12.1 → 12.6 (+4%); SDPA fully on Metal (M5 Pro GQA decode at 4K: 465 µs → 65 µs). Flag: the 2.16 table’s “before” for Qwen3.6-35B-A3B (52.9 tok/s) is below the 2.15 headline (61.3) — different test settings, not reconciled in the post; treat absolute numbers as setup-specific. All figures HF-reported.

mlx-vlm v0.7.9 — Nemotron 3.5 Super VL (MTP) + Bolt, FLUX.3, MOSS-Image, GRPO for VLMs

Published Oct 19 16:01Z (≈12:01 PM ET). New models: Nemotron 3.5 Super VL with MTP and Bolt support (#2528); FLUX.3 image generation and editing (#2537); MOSS-Image-SFT image generation (#2541). Training: GRPO for VLMs (#2504). Performance/correctness: qwen3_5 reads strided K/V in ragged decode attention instead of copying the KV cache every step (#2510); remaining affine QMV precision mismatches on MLX 0.32.4 (#2527); rotating cache sinks and absolute positions (#2548); prompt cache released for finished SpeculativeGenerationBatch (#2525); checkpoint sampling defaults honored in CLI/APIs (#2545). Server: live image resolution controls (#2529). Fixes: MiniCPM vision dtype with quantized embeddings (#2511), MiniCPM-V 4.7 vision cache (#2514), Mistral Large 3 image feature merging (#2516), channels-last PIL in Gemma 4 / EmbeddingGemma 2 processors (#2367, #2489), sam3 GroupNorm (#2513). License: FLUX.3 Image Klein weights ship under Black Forest Labs’ FLUX Kommunity License (see Issue 40) — check terms before commercial use of outputs.

MLX / mlx-lm / mlx-community — quiet releases, small merges

MLX latest release still v0.32.4 (Oct 14); mlx-lm still v0.32.2 (Oct 15 ET). mlx-lm merged Oct 20 ≈4:03 AM ET: #1995 “Require mlx 0.32.3” and #1973 TextMachine improvements. Open: #1988 Nemotron-Labs Dory, #1982 Nemotron 3.5 Bolt, #1986 Mistral3 medium, #1965 /v1/models 200-before-scan fix. No Beam PR. mlx-community: Oct 19 Ming-3.0 tiny TTS/ASR/audio builds (bf16/8-bit/4-bit) and Ming-3.0-tts-0.5B; Oct 19 ColGrep-Agent-2B 8-bit; Oct 20 Molmo2-8B mxfp4. No Beam MLX build (only third-party conversions outside mlx-community).

SGLang v0.5.22 — Apple Silicon (MPS) platform for the standard Torch runner

Release v0.5.22 published Oct 19 02:55Z (≈10:55 PM ET Sun Oct 18); 950 PRs / 245 contributors. #36780 (merged Oct 4) adds platforms/mps.py (MpsSRTPlatform): capacity from torch.mps.recommended_max_memory(), usage from torch.mps.driver_allocated_memory(), so mem_fraction_static applies to Metal’s budget (author’s M4 Pro 48 GB: 37.44 GiB). Defaults: torch_native attention, eager (no CUDA graphs), gloo, overlap schedule off, pytorch sampling. Fails fast on quantized weights, multimodal, spec decoding, torch.compile, disaggregation, LoRA on non-native backends, non-bf16 KV, and tp/pp/dp ≠ 1. MLX path unchanged (gated behind not use_mlx(); SGLANG_USE_MLX=1) plus MLX fixes #41314, #43282, #43284, #43292. Other notes: Python ≥3.11; ChunkCache removed; InstantTensor loader “10x faster” (#40453) project-reported; security: multimodal-gen ZMQ scheduler ingress pinned to loopback on wildcard --host (#36854). Install: uv pip install --prerelease=allow sglang==0.5.22.

MLX / mlx-lm — weekend merges (unreleased)

MLX merged Oct 18–19 ET: Metal SDPA f16/f32 d512 max-threadgroup fix for M1/M2 (#4708), float16 head_dim 256 TK=1 SDPA vector kernel for M1/M2 (#4719), configurable CPU JIT cache dir (#4714), broadcast_arrays returns a tuple (#4713), unaligned scalar reads fix (#4721). No release tag yet (latest v0.32.4, Oct 14). mlx-lm merged #1931 PLaMo3 instruct with YaRN and #1974 [THINK] tokens (Oct 18); open: #1982 Nemotron 3.5 Bolt, #1988 Nemotron-Labs Dory, #1986 Mistral3 medium. No Beam PR.

mlx-community — DeepSeek V4.1 Flash 1017 and FLUX.3 Klein builds

Oct 17: DeepSeek-V4.1-Flash-1017-oQ2e/oQ2.5e/oQ3e/oQ4e-mtp (oQ4e ≈432 GB, oQ3e ≈380 GB summed from HF file listing; MIT) — none fit a 256 GB Studio. Oct 18: flux-3-image-klein bf16 and flux-3-image-klein-pup bf16/8-bit/4-bit (FLUX Kommunity License; see Issue 40 license note). No Beam MLX build.

Meta — Muse Spark Open (lead)

Published Oct 15, 2026. 816B total / 42B active MoE; 62 layers, hidden 8192, 128 Q / 16 KV heads (GQA, head dim 64), 256 experts/layer with top-8 routing (experts ≈97% of params; latent 8192→4096 expert projection per llama.cpp #30616); untied input/output embeddings ≈1.66B each; vocab 202,048; 1.8B perception encoder; convolutional audio encoder at one token per 80 ms (12.5 tok/s of audio). Context 1,048,576 tokens shared across modalities; KV ≈250 KB/token BF16 (≈266 GB at 1M, per HF). Reasoning cannot be turned off (low/medium/high/xhigh = 16/64/256/512; default xhigh). Recommended sampling temp 1.0, top_p 1.0, top_k off. Checkpoints: meta-models/Muse-Spark-Open-816B-A42B (BF16, safetensors total ≈1.64 TB) and -NVFP4; HF gate is manual approval. Model card says ≥700 GB GPU memory for NVFP4, 2 TB for BF16, and “optimized to run on two Mac Studios with M5 Ultra using MLX.” Hosted: Baseten, Fireworks, Groq, Modal, Nebius, OpenRouter, Together; weights also via SageMaker JumpStart (AWS What’s New Oct 15), Google Cloud Model Garden, Microsoft Foundry. Shares the base model with Muse Spark 1.3 (PyTorch blog). License: Muse Model License — MIT-style grant (use, modify, distill, sell) subject to (1) Usage Policy, (2) prominent “Built with Muse Spark Open” display for products using the Software or Derivatives, (3) a separate written agreement before offering it as Model-as-a-Service if group gross revenue exceeds US$20M in any 12 months (internal use and non-MaaS product features exempt). Benchmarks are Meta-reported (xhigh): e.g. MCP-Atlas 89.2, JobBench 61.8, Terminal-Bench 2.1 76.4 (trails four listed comparators at 80.1–85.0), GDPVal-AA v2 1401 (trails four comparators at 1424–1653). Full evaluation report “available soon.”

Apple ML Research — Local and distributed LLM inference with MLX and RDMA on Mac Studio

Published Oct 15, 2026. Benchmarks via mlx_lm.benchmark at 8,192 and 65,536 context, 128 generated tokens, batch 1. Models: Muse Spark Open (NVFP4), Mistral Medium 3.5 128B (FP8, dense), Qwen 3.8 27B (BF16, dense). Single box (512 GB): M5 Ultra TTFT up to 4.6× faster than M3 Ultra (GPU Neural Accelerators); decode ≈1.6× (1.2 TB/s vs 819 GB/s); peak power ≈200 W (M3 Ultra) / ≈300 W (M5 Ultra); Qwen 3.8 and Mistral Medium take up to 68 GB / 158 GB at 65K. Muse Spark Open NVFP4 ≈493 GB weights → does not fit one machine with intermediates. Multi-node: macOS 26.2 RDMA-over-Thunderbolt 5 driver + MLX ≥0.30.1 jaccl backend; two TB cables per link. Pipeline over 2 nodes leaves decode ≈flat and gives up to ≈1.8× prefill at 65K (chunked prefill overlap, --prefill-step-size 8192). Muse decode at 8K (Figure 1): 15.74 tok/s (2× pipeline), 24.99 (2× tensor), 36.73 (4× tensor). 4× M5 at 65K: two cables cut Muse TTFT from ≈50.5 s to 40.6 s. Two-machine tensor parallel lags pipeline on Muse prefill at 65K (expert-output normalization adds comms). Flag: post says “the latest version of MLX, released today”; GitHub/PyPI show MLX v0.32.4 on Oct 14 ET and mlx-lm 0.32.1/0.32.2 on Oct 15 ET. All numbers Apple-reported.

Muse Spark Open on a single 512 GB Mac (HF tests)

HF blog (Oct 15): mlx-community/Muse-Spark-Open-816B-A42B-oQ3e on an M3 Ultra 512 GB ≈344 GB, ≈225 tok/s prefill and ≈21 tok/s decode (1,024-token prompt, 128 generated). oQ3e/oQ4e published for oMLX; mlx-community also has 3bit/4bit (Oct 16). llama.cpp imatrix 2-bit (ggml-org/Muse-Spark-Open-816B-A42B-GGUF:Q2_K) ≈304 GB, 18 tok/s on M3 Ultra 512 GB; Q2_K, Q4_K_S, Q8 tested on Apple Silicon. HF: “even the 3-bit quantization requires more than 256 GB of RAM.” HF-reported. Contrast with Meta/Apple “two Mac Studios” framing: that is for NVFP4; lower-bit community quants fit one 512 GB box.

mlx-lm v0.32.1 / v0.32.2

v0.32.1 Oct 15 21:22Z (≈5:22 PM ET): fix Muse template (#1977). v0.32.2 Oct 16 02:49Z (≈10:49 PM ET Oct 15): MiMo-V2-Flash attention value scaling (#1971, open in Issue 39’s check), SMM mask fix (#1979), Muse Spark HF names (#1981). The GitHub release object for v0.32.0 was published Oct 15 and lists meta-models/Muse-Spark-Open-816B-A42B-NVFP4 (#1976), nvfp4 MoE global scale (#1844), Hadamard-rotated 2-bit Qwen3.5 (#1941), unconverted-model support (#1962), tool-call argument parsing fixes (#1904, #1910); PyPI shows 0.32.0 uploaded Oct 1, so pin 0.32.2 for Muse.

MLX v0.32.4

Release published Oct 14, 7:37 PM ET; PyPI wheels uploaded 5:15 PM ET. Highlights: 1-bit affine quantization (Metal, #3161); stft/istft in mlx.core.fft (#3639); VJP for SDPA (#4563) and gated delta net (#4565); fixed-size unique; FloorDivide; minmax; Python 3.15 / 3.15t. Metal: fence deadlock fix (#4689), SDPA max threadgroup for M1/M2 (#4643), pre-M5 SDPA D512 memory (#4518), 32-bit dispatch grid overflow in reductions (#4437), conv bounds/integer overflow (#4672), qvm_split_k row-count fix (#4673), thin-M/N GEMM, fast qmv for outputs not divisible by 8, split-K partials kept in float32 (#4641), MLX_CONV_WINOGRAD switch, env-var residency refresh interval (#4633), Metal extension build support (#4004), NAX gather_qmm_rhs non-transposed (#4684). CUDA: fp_gather_qmv, gather_qmm_rhs_sm80. Eval cleanup deadlock fix (#4556). Many of these were “main only” notes in Issues 35–38; this is the tagged wheel.

Liquid AI — LFM2.5-24B-A2B

HF blog Oct 13, 2026; weights created Oct 12. 24B total / 2B active MoE (40 layers, 64 experts top-4, gated short conv + GQA hybrid). Context 32K→131K; vocab 65K→128K. Reasoning-only. Pre-training ~33T tokens; mid-training 2T @32K + 300B @131K; post-training SFT → teacher specialization → MOPD (non-agentic, agentic) → agentic RL in OpenClaw / Hermes Agent / Pi / OpenCode. Vendor evals (vLLM): LiveClaw 48.09 vs Qwen3.6-35B-A3B 38.19; BFCLv4 65.01; SWE-Bench Verified (OpenCode) 51.00 vs 66.20 (Qwen) — Liquid-reported. Speed: 184 tok/s decode on M5 Max, 114 tok/s on Ryzen AI Max+ 395, >21K output tok/s on one B300 at high concurrency (vendor). Official repos: LFM2.5-24B-A2B, -Base, -GGUF, -ONNX, -FP8, -MLX-4bit/5bit/6bit/8bit/bf16. License: LFM Open License v1.0 (HF tag lfm1.0) — read terms before commercial use. Serve ports in blog: llama.cpp/MLX 8080, vLLM 8000, SGLang 30000, LM Studio 1234.

mlx-vlm v0.7.8

Released Oct 13, 2026. EmbeddingGemma 2 multimodal embedding support (#2446). Clef decision model (#2459). LiquidAI d1-3B and d1-omni-600M decision models (#2467). Kolibri1 (#2423). Xing4.0 (#2465). Qwen3.5 packed gated-delta prefill via mlx-lm (#2442). RF-DETR / tracker RoPE / MoE offload fixes. MLX framework tag still 0.32.3; main continues with Metal/NAX commits Oct 13–14.

MLX main — pad_gpu/fill_gpu and scalar arctan2 (unreleased)

After Issue 36’s #4672/#4673: #4660 “Fix missing add_temporary in pad_gpu/fill_gpu” committed 2026-10-13; #4679 arctan2/radians/degrees scalar inputs 2026-10-12. Latest release tag remains v0.32.3 (Sep 29). No new GA tag in this window.

MLX main — Metal conv bounds / qvm_split_k (unreleased)

#4672 “Fix metal conv bounds checks and integer overflows” merged 2026-10-12T05:52:15Z. #4673 “Fix batched row count mismatch in metal qvm_split_k” merged 2026-10-12T02:02:47Z. Also on main Oct 10: STFT/ISTFT (#3639), CPU conv past-write fix (#4668), layer_norm/sdpa fallback stream (#4663), distributed launcher rank fix (#4615). Latest release tag remains v0.32.3 (Sep 29). Issue 35’s 1-bit affine quantization (#3161) and M1/M2 SDPA fix (#4643) still unreleased.

MLX main — 1-bit affine quantization (CPU + Metal); M1/M2 SDPA fix

#3161 “Add 1-bit affine quantization support (Metal)” merged 2026-10-09T01:18Z ≈ 9:18 PM ET Oct 8. Extends affine widths from {2,3,4,5,6,8} to {1,2,3,4,5,6,8} using w_hat = scale * w_q + bias; affine 1-bit (bit 0 → w_min, bit 1 → w_max) and symmetric {−d,+d} both run through the affine path (no dedicated scale-only mode yet). CPU quantize/dequantize/qmm and all Metal quantized kernels. The PR says it “assumes the model has already been quantized externally (e.g. during training)” — packing and inference, not a 1-bit quantizer for arbitrary models. #4643 “[Metal] Fix SDPA max threadgroup for M1/M2 generation” (07:13Z ≈ 3:13 AM ET Oct 9): recent SDPA optimizations could exceed thread limits on older GPUs (RuntimeError: Maximum threads per threadgroup); repro used mlx-community/Qwen3.8-27B-4bit with a 1,024-token prompt cache. Also Oct 9: thin-M GEMM dispatch (#4654), FloorDivide primitive (#4642), .npy shape validation on load (#4657), compile scalar-merge fix (#4658), Metal negative-stride index fixes in scatter and SDPA masks, bfloat16 pickle strides (#4649). Latest release v0.32.3 (Sep 29); mlx-swift 0.32.3 / mlx-swift-lm 3.32.3 (Sep 30).

mlx-vlm main — Liquid AI d1-3B and d1-omni-600M

#2467 “feat: add LiquidAI d1-3B and d1-omni-600M decision models” merged 2026-10-08T20:30Z ≈ 4:30 PM ET; companion “let decision models declare the media they read” (13:36Z). Also: inkling uses Metal kernels only when Metal is available (#2462), RF-DETR segmentation fast upsample (#2468). Unreleased; latest v0.7.6 (Oct 5). d1 license is LFM 1.0 (see Issue 34).

Google ML Drift — open-source on-device GPU engine (Apache 2.0)

Google Developers Blog, 2026-10-08. ML Drift is the GPU compute engine inside LiteRT, now standalone and open under Apache 2.0 at github.com/google-ai-edge/ml-drift. Backends: OpenGL ES, OpenCL, Metal, WebGPU; desktop previews on Windows and Linux by compiling the WebGPU backend natively with Dawn, alongside native Metal on macOS. Architecture: tensor virtualization (logical tensors decoupled from textures/buffers; one shader template set across backends), custom-op framework with low-level shading access and an agentic SKILL.md for coding agents to author/register/verify shaders, 5D tensors (3D conv, YOLO 11n, MobileViT v2, Swin v2), stage-aware LLM kernels (convolution-aligned KV-cache layout and in-kernel activation quantization during decode). Production users named: Chrome built-in AI (Prompt/Summarize/Writer APIs on Gemini Nano), YouTube Shorts (up to 40% lower frame latency), Photos, Meet, AI Edge Gallery, Adobe Lightroom/Photoshop mobile (up to 30% faster), Snap (30% latency). “Up to 12% lower memory overhead than other frameworks” on Gemma; all figures Google/partner-reported. Partners: Arm (Mali/Immortalis), Intel (Xe3 / XMX via WebGPU), Qualcomm (Adreno OpenCL). The legacy TFLite GPU delegate gets no new features; ML Drift is in standalone LiteRT packages now and “coming soon” to LiteRT in Google Play Services.

LiteRT v2.3.0 — Metal FlashAttention, residency, Swift API

Released 2026-10-07T21:26Z ≈ 5:26 PM ET. Single-kernel Flash-Decode and FlashAttention-2 prefill GPU kernels on Metal with GQA (odml.sdpa_transposed). Google-reported, “Tested on MacBook M4 pro”: Qwen3-0.6B decode ~38% faster; 32K prefill 2.98× (Qwen3-0.6B) and 1.40× (Qwen3-4B); >4 GB peak RAM saved at 32K. Fused composite kernels odml.qkv_norm_rope and odml.swiglu (Metal and OpenCL; opt-in fusion passes): −69% Qwen3 decode dispatches, ~12% decode throughput (Google-reported). Dynamic Metal residency via MTLResidencySet on macOS and iOS for weights and external KV cache. Type-safe Swift API over the C API. Also: Intel NPU weight sharing (Gemma4 12B AOT 11.6 → 6.3 GB), zero-copy mmap program cache, separate litert-gpu Maven package, Android minSdk 24, MediaTek NPU on Android S+, vendor NPU Maven packages (the runtime-libraries zip is dropped), ATS coverage on macOS Metal/WebGPU.

MLX main and mlx-vlm main — unreleased

MLX core main: “[metal] Add env var based residency refresh interval (#4633)” (Oct 6). Then, Oct 6 evening through Oct 8 morning ET: thin-N GEMM kernels (#4640), keep split-K quantized matmul partials in float32 (#4641), MLX_CONV_WINOGRAD switch (#4639), foreign buffer ownership fix (#4634), CPU compile-cache cross-process race (#4638), 32-bit dispatch grid overflow in Metal reductions (#4437), float16 clip_grad_norm overflow (#4626). Latest release still v0.32.3. mlx-vlm main: “Add support for Clef decision model (#2459)” (8:29 PM ET Oct 7) and “Add Xing4.0 model (#2465)” (Oct 8); latest release v0.7.6. mlx-lm main: Hadamard-rotated 2-bit Qwen3.5 (#1941), nvfp4 MoE global scale (#1844), MiniCPM5 tool parser (#1899).

mlx-vlm main — EmbeddingGemma 2 and Kolibri merged, unreleased

“Add EmbeddingGemma 2 multimodal embedding support (#2446)” merged 2026-10-06T18:35Z ≈ 2:35 PM ET; “adding kolibri1 support (#2423)” merged 02:22Z Oct 6 ≈ 10:22 PM ET Oct 5. Also on main: fused SDPA in the RF-DETR backbone (#2443) and the packed gated-delta kernel for multi-token qwen3_5 calls (#2442). Latest release is still v0.7.6, so install from main or wait for a tag. Google’s launch post links mlx-vlm as the MLX path. mlx-community posted EmbeddingGemma 2 nvfp4 / mxfp4 / mxfp8 conversions around 11:54 AM ET Oct 6. Those are community quants, not Google files.

mlx-lm Kolibri PR #1945 closed; MLX core fixes on main

Issue 32 said PR #1945 (Kolibri 1 for mlx-lm) was still open. It now shows Closed, with last activity Oct 5, while Kolibri support landed on mlx-vlm main instead (see above; unreleased). mlx-lm main Oct 6: a Qwen3 Coder tool-argument parsing fix and a max_tokens: 0 server fix. MLX core main, Oct 6–7: Metal reductions 32-bit dispatch grid overflow (#4437), CPU compile-cache cross-process race (#4638), float16 overflow in clip_grad_norm (#4626), GPU boolean masking on 0-dim arrays (#4635). None are in a release; MLX remains 0.32.3.

mlx-vlm v0.7.5 / v0.7.6 — decision API, Responses compaction

v0.7.5 published 2026-10-05T18:31Z ≈ 2:31 PM ET: Decider and shared typed decision API (#2396); Laya on the decision API (#2397); decision CLI (#2402); conversation compaction in the Responses API (#2408); Qwen3-Omni multimodal batching (#2349); fixes for prequantized Qwen4 PLE loading, PhiMoE routing, top-p computed in float32, Qwen3-VL video timestamps, and MoE router stop-gradient (needs MLX ≥ 0.32.1). v0.7.6 published 19:14Z ≈ 3:14 PM ET: stream compaction progress and recover oversized requests (#2418).

MLX main and Kolibri PR — unreleased

MLX main commits on Oct 6: “[metal] Add env var based residency refresh interval (#4633)” and “Tune M1 quantized matmul dispatch (#4629)”. Neither is in a release (latest 0.32.3). mlx-lm last commit Oct 2. Kolibri 1 support PR #1945 still open (updated Oct 4). An mlx-vlm PR #2424 “Add Kolibri 1 (Aleph Alpha) text model” references it. Do not present either as shipped.

mlx-lm PR #1945 — Kolibri 1 support (open)

Opened Oct 4, 2026 by a community contributor: “add support for the (German language) Kolibri 1 model by Aleph Alpha.” Not merged at publish time. A related mlx-vlm PR (Blaizzy/mlx-vlm#2424) was closed. Community MLX conversions appeared on the Hub Oct 3–4 (e.g. 3/4/6/8-bit, MXFP4) — these are unofficial, dequantize the official FP8 weights and re-quantize; their size/perplexity/tok-s figures are uploader-reported. No mlx-community upload yet. Official weights: Aleph-Alpha/Kolibri-1 (FP8) and Kolibri-1-BF16.

Ollama v0.40.0-rc3 — decision models on MLX

Pre-release, updated ≈8:17 PM ET Sun Oct 4. On Apple Silicon, architectures supported by the MLX runner run on MLX by default; decision models Nimble, tev1, clef, clef-flash now available on MLX. rc1 aligned MLX tokenization with publisher tokenizers. See Local page for full notes.

mlx-community Clef / Clef Flash (4-bit / 8-bit)

Hub uploads Fri Oct 2, 2026. Cloudflare Clef and Clef Flash converted to MLX (4-bit and 8-bit). Decision / System One models: state (text, JSON, images, or video) + typed questions → probabilities in one forward pass. Not a chat model — mlx_vlm.generate / mlx_lm.generate / LM Studio load the backbone but produce meaningless text. Use bundled clef_mlx.py (model.systemone(...)). Backbone via mlx_vlm.convert -q; joint schema head copied bf16. License Apache-2.0 following Cloudflare/clef. Card tables (parity vs PyTorch, Decision Index sample 57.02 vs published 61.21, M5 Max latency) are uploader-reported. Related: clef-flash-4bit, clef-8bit, clef-flash-8bit. Do not rehash K2-Horizon.

mlx-community K2-Horizon quants

HF Hub Sep 29–30, 2026. mlx-community published K2-Horizon dense 0.9B / 3.7B / 7B in bf16 / 8-bit / 4-bit and K2-Horizon-MoVA-36B-A4B quants. 7B-4bit card: mixed-precision 4-bit (MLP 4-bit g32; attn/embed/lm_head 8-bit g64); Apache-2.0 from base IFM/K2-Horizon-7B; 512K context claimed on card. Caveat: mlx-lm does not yet natively support k2_horizon (open request mlx-lm#1876); repo ships k2_horizon.py via model_file + trust_remote_code required on newer mlx-lm. WikiText-2 PPL / tok/s on M4 Max 128GB (e.g. 4-bit 69.0 tok/s, peak 7.3 GB) are uploader-reported. Framework tip still MLX v0.32.3 / mlx-vlm v0.7.4 — Watch unchanged.

mlx-vlm v0.7.4 (prior · Issue 27)

Published 2026-09-28 (~19:07 UTC ≈ 3:07 PM ET). After 0.7.3 (Issue 25). Adds DeepSeek V4.1 vision + language support; InternVL3.5; multi-image generation via num_images (ming_image / qwen_image / flux2 / ideogram4 batching); Qwen3.5 MoE text path; gpt-oss harmony channel parsing into reasoning/content; LFM2 ColBERT + encoder; tool-parser fixes (boolean schemas, untyped Qwen3-Coder objects, unclosed params); Gemma 4 audio encoder past-frame fix; quantized KV packed-width fix for empty 3/5/6-bit caches; MiMo-V2.6 audio server thread fix.

MLX v0.32.3

Published ~2026-09-29 00:37 UTC ≈ 8:37 PM ET Sep 28. First mlx core release since v0.32.2 (2026-08-25). Apple-facing: Metal kernels for gated delta nets (#4020); M5 Ultra tunings for non-quantized matmuls (#4447); Metal SDPA D512 + D96/V64 support and memory improvements for D256/D512; Metal global scale for qmm; adaptive I/O concurrency on load; GIL release when copying Metal DLPack inputs (mx↔PyTorch MPS); various Metal/CUDA correctness fixes.

mlx-vlm v0.7.3 GA (prior · Issue 25)

Published 2026-09-24T16:01:48Z ≈ 12:01 PM ET Sep 24. Compare v0.7.2...v0.7.3. Adds/fixes: Hemmingway-1; MiMo-V2.6-Flash-RL + multimodal + MXFP4 load + batching; limite-1b-violetto; Qwen-Image-2.1 fixes + KV caching; Ming-Image-0.1-Design (text-to-image); rampart + shared PII components; batched audio for supported processors; Gemma-3n audio batching; generation batch array release without waiting on cyclic GC.

mlx-community Hub ports (after Issue 23)

HF Hub API sample ~8:35 AM ET Sep 24. Notable after Issue 23 morning: mlx-community/LensVLM-9B-OptiQ-4bit (created ~5:30 AM ET Sep 24); mlx-community/Qwen3.8-Flash-Next-4bit-mtp (~4:48 PM ET Sep 23); also SAM2.1-hiera-small-fp16 and Nemotron-3-Diarization(-8bit) mid-day Sep 23. Community quants — verify license + mlx-lm / mlx-vlm arch support before try-this. Already in Issue 23 table (do not re-lead): Qwen3.6-35B-A3B-DFlash2-4bit.

Jun Kim / oMLX joins Hugging Face (prior · Issue 23)

Hugging Face blog published September 22, 2026. Do not re-lead. Flag: comments reported oMLX repo may be unavailable — verify before any try-this.