The 15 Aug 2026 rows were measured by MTPLX on its own M5 Max with the same prompt and the same sampling for both engines. The Weschera rows are a third-party README, measured on the author's Mac Studio M4 Max at temperature 0. Created by Youssof Altoukhi, who brought native MTP to the Mac in April 2026.
What oMLX does well
oMLX is a continuous-batching server with SSD caching; its repository at github.com/jundot/omlx had 21,371 stars on 3 Sep 2026. Its Lightning MTP runs on MTPLX kernels.
The numbers
Two sets. The first is the MTPLX 2.7.0 run from 15 Aug 2026: oMLX 0.5.7 and MTPLX 2.7.0 on one M5 Max, the same prompt, the same sampling (official Qwen 3.8: temp 1.0 / top-p 0.95 / top-k 20). The second is a third-party README by Weschera on a Mac Studio M4 Max, at temperature 0 with thinking off, over 320 generated tokens.
| Engine | Model | Machine | Task | Sampling | Decode tok/s | Source | Date |
|---|---|---|---|---|---|---|---|
| oMLX 0.5.7, MTP | Qwen 3.8, oMLX's own 4-bit MTP quant (same task as the 27B rows below) | M5 Max, MTPLX's own machine | same coding task and prompt as the MTPLX rows | official Qwen 3.8 sampling: temp 1.0 / top-p 0.95 / top-k 20, same as the MTPLX rows | 63.3 | MTPLX 2.7.0 release note, same-night run | 15 Aug 2026 |
| MTPLX 2.7.0, MTP depth 3, mtplx serve | Qwen 3.8 27B Bare Speed: flat 4-bit, 64-weight groups | M5 Max, MTPLX's own machine, fans verified at max | coding task, single stream, generation to the model's own stop | official Qwen 3.8 sampling: temp 1.0 / top-p 0.95 / top-k 20 | 65.2 | MTPLX 2.7.0 release note | 15 Aug 2026 |
| MTPLX 2.7.0, MTP depth 3, mtplx serve | Qwen 3.8 27B Optimized Speed: 4-bit dynamic, 32-weight groups | M5 Max, MTPLX's own machine, fans verified at max | coding task, medium reasoning, single stream, generation to the model's own stop | official Qwen 3.8 sampling: temp 1.0 / top-p 0.95 / top-k 20 | 58.7 | MTPLX 2.7.0 release note | 15 Aug 2026 |
| oMLX 0.6.3rc2, ANE prefill, MTP k=3 | Qwen 3.8 27B, oMLX MTP build (quantization: see source) | Mac Studio M4 Max, the author's machine | prose, 320 generated tokens, thinking off | temperature 0 | 53.3 | Weschera README, third party | see source |
| oMLX 0.6.3rc2, ANE prefill, MTP k=3 | Qwen 3.8 27B, oMLX MTP build (quantization: see source) | Mac Studio M4 Max, the author's machine | code, 320 generated tokens, thinking off | temperature 0 | 72.1 | Weschera README, third party | see source |
The Weschera rows are temperature-0 numbers: thinking off, 320 generated tokens, on the author's Mac Studio M4 Max, with oMLX 0.6.3rc2, ANE prefill and MTP k=3. The 15 Aug 2026 rows are sampled at the official Qwen 3.8 settings on MTPLX's own M5 Max, and MTPLX's rows there run single stream to the model's own stop. Cells that read "see source" are recorded only in the linked README.
Kernel credit, dated
The oMLX README credits MTPLX. The record, by date:
| Date | Event | Source |
|---|---|---|
| 11 May 2026 | oMLX begins loading MTPLX-format packs. | github.com/jundot/omlx |
| 8 Jul 2026 | Lightning MTP lands in oMLX (#2113). | github.com/jundot/omlx |
| 12 Jul 2026 | Acknowledgment commit. README credit: "Lightning MTP's verify-shape Metal kernels are powered by MTPLX by Youssof Altoukhi, which also inspired the depth-k pipeline." | github.com/jundot/omlx |
| 8 Aug 2026 | oMLX imports MTPLX side-car MTP heads into its model index (#2497). | github.com/jundot/omlx |
What is different
- MTP on both, shared kernels. Both engines decode with the model's MTP head. oMLX's Lightning MTP (#2113, 8 Jul 2026) runs on MTPLX's verify-shape Metal kernels, per the oMLX README credit, and oMLX has loaded MTPLX-format packs since 11 May 2026. MTPLX shipped native MTP on the Mac on 2 May 2026 (v0.1.0-preview); on the Qwen 3.8 27B packs the model drafts three tokens ahead, the target verifies them in one forward pass, and the speculative path runs the same model as the AR path.
- Exact at any temperature. MTPLX acceptance is probability-ratio min(1, p/q) with residual (p - q)+ resampling (Leviathan–Chen), so output follows the model's distribution at any temperature. MTPLX has never shipped a greedy-only path. The Weschera rows are temperature-0 numbers; the 15 Aug 2026 run had both engines at the official Qwen 3.8 sampling. Activations stay bf16 (fp16 on M1/M2) on every pass.
- Caching. oMLX ships SSD caching. Since 2.0.0 (6 Jul 2026) MTPLX checkpoints the attention KV cache plus the recurrent and conv GDN state at commit boundaries, together with speculation: a 100k-token session restores in about 2 s after a restart instead of a five-minute cold prefill, and mid-session tool rounds restore warm in under 2 s.
- Serving shape. oMLX is a continuous-batching server. MTPLX is a Mac app and a CLI that
share one server:
mtplx startattaches to the app's loaded model instead of loading a second copy. Since 2.6.0 (11 Aug 2026) MTPLX runs concurrent speculative decoding; two agents at once decode at 1.6 to 2.25x per lane vs the previous AR batch route on the 35B-A3B, M5 Max, sampled at shipped settings. - One server, two dialects.
mtplx startor the app's play button serves an OpenAI-compatible API on 127.0.0.1:8000 (/v1/chat/completions,/v1/completions,/v1/models,/v1/embeddings,/v1/rerank) and an Anthropic-compatible/v1/messages, with streaming and tool calls in both styles.