MTPLX/Compare/MTPLX vs oMLX

MTPLX vs oMLX on a Mac.

oMLX is a continuous-batching server with SSD caching, at github.com/jundot/omlx with 21,371 stars on 3 Sep 2026. MTPLX is a free, open source Mac app and CLI that runs local LLMs on Apple Silicon with native MTP speculative decoding, exact at any temperature.

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.

EngineModelMachineTaskSamplingDecode tok/sSourceDate
oMLX 0.5.7, MTPQwen 3.8, oMLX's own 4-bit MTP quant (same task as the 27B rows below)M5 Max, MTPLX's own machinesame coding task and prompt as the MTPLX rowsofficial Qwen 3.8 sampling: temp 1.0 / top-p 0.95 / top-k 20, same as the MTPLX rows63.3MTPLX 2.7.0 release note, same-night run15 Aug 2026
MTPLX 2.7.0, MTP depth 3, mtplx serveQwen 3.8 27B Bare Speed: flat 4-bit, 64-weight groupsM5 Max, MTPLX's own machine, fans verified at maxcoding task, single stream, generation to the model's own stopofficial Qwen 3.8 sampling: temp 1.0 / top-p 0.95 / top-k 2065.2MTPLX 2.7.0 release note15 Aug 2026
MTPLX 2.7.0, MTP depth 3, mtplx serveQwen 3.8 27B Optimized Speed: 4-bit dynamic, 32-weight groupsM5 Max, MTPLX's own machine, fans verified at maxcoding task, medium reasoning, single stream, generation to the model's own stopofficial Qwen 3.8 sampling: temp 1.0 / top-p 0.95 / top-k 2058.7MTPLX 2.7.0 release note15 Aug 2026
oMLX 0.6.3rc2, ANE prefill, MTP k=3Qwen 3.8 27B, oMLX MTP build (quantization: see source)Mac Studio M4 Max, the author's machineprose, 320 generated tokens, thinking offtemperature 053.3Weschera README, third partysee source
oMLX 0.6.3rc2, ANE prefill, MTP k=3Qwen 3.8 27B, oMLX MTP build (quantization: see source)Mac Studio M4 Max, the author's machinecode, 320 generated tokens, thinking offtemperature 072.1Weschera README, third partysee 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:

DateEventSource
11 May 2026oMLX begins loading MTPLX-format packs.github.com/jundot/omlx
8 Jul 2026Lightning MTP lands in oMLX (#2113).github.com/jundot/omlx
12 Jul 2026Acknowledgment 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 2026oMLX 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 start attaches 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 start or 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.
Sources. MTPLX numbers link to their release notes; third-party numbers link to their authors. If you measure something different on your Mac, open an issue with the command line and the log.