History

Mac didn't have MTP.
So I created it.

In April 2026 no Mac runtime could run a model's MTP heads; neither MLX nor GGUF had it. I wrote MTPLX from the papers and the CUDA reference code. I made the first commit on 27 April 2026 and had exact speculative sampling running the same day, the first release shipped on 2 May, and the same engine has since reached 81.74 tokens per second on a 27B model and 262k-token contexts on a Mac.

01 · First exact

Exact from day one.

Probability-ratio acceptance with residual correction from the first day. Output matches plain decoding at any temperature, and there has never been a greedy-only path.

02 · First on the Mac

First to bring MTP to the Mac.

MTPLX v0.1 shipped on 2 May 2026 with native multi-token prediction and exact speculative sampling on Apple Silicon.

03 · Both at once

Cache and speculate together.

Prefix caching and speculative decoding run at the same time on hybrid GatedDeltaNet models, since 6 July 2026. A 100k-token session restores in about two seconds.

Timeline

27 April 2026
to today.

27 Apr 2026

MTPLX begins

Youssof Altoukhi starts MTPLX alone, working from the Leviathan–Chen papers and the CUDA reference implementation. First commit da0d338.

27 Apr 2026

Exact sampling

Commit 7293ecb: probability-ratio acceptance with residual correction. 50/50 match against single-token decoding at temperature 0.6.

28 Apr 2026
47 tok/s

Past 40

47.3 tok/s at depth 4 on Qwen 3.6 27B, 192-token coding bench, temp 0.6. Draft acceptance by depth 97.6 / 95.2 / 88.1 / 75.6 percent. Clean runs the next morning: 49.8 and 52.4 tok/s at depth 3.

29 Apr 2026
60 tok/s

Past 60

60.169 tok/s at temp 0.6, depth 3, 192-token coding bench, fans pinned. No-MTP control on the same prompt: 23.59 tok/s. Two days after the first commit.

2 May 2026

MTPLX v0.1 released

For the first time in history, MTP technology on a Mac. Tool calls for agents followed three days later.

5 May 2026

mlx-lm's MTP pull request

PR #990 adds residual sampling to mlx-lm's MTP pull request, eight days after MTPLX's exact-sampling commit. The pull request is still open.

6 May 2026

2.24x published

First public number: 63.056 tok/s at depth 3 against 28.156 tok/s plain decode. Qwen 3.6 27B, M5 Max, temp 0.6, top-p 0.95, top-k 20.

6 May 2026

Sustained Mode

Peak memory at 32k context drops from 98.6 GB to 27.5 GB on Ivan Fioravanti's M5 Max benchmark.

7 May 2026

128k context

v0.2.0 publishes the full curve on an M5 Max: 32k context at 620.6 tok/s prefill, 39.1 decode and 22.1 GB peak; 64k at 504.3 / 31.2 / 27.2 GB; 128k at 372.1 / 25.3 / 37.5 GB.

11 May 2026

OpenCode

v0.3.2 adds mtplx start opencode: the first coding agent running on a local MTP server, nine days after v0.1.

11 May 2026

oMLX adopts the MTPLX format

oMLX commit c19a4f5d adds support for MTPLX-format models, nine days after v0.1.

16 May 2026

llama.cpp adds MTP

PR #22673 merges MTP into llama.cpp, two weeks after MTPLX v0.1.

17 May 2026

Claude Code

v0.3.7 runs Claude Code's full tool loop on the Anthropic-compatible /v1/messages route. Setup is one command: mtplx connect claude-code.

11 Jun 2026

MTPLX 1.0: the Mac app

The native Mac app and the CLI ship as one product. Gemma 4, Qwen 3.6 35B-A3B and Qwen 3.5 4B and 9B join the 27B. Warm-prefix KV reuse in RAM and an SSD session cache. Image input with MTP intact follows in 1.0.3 the same day.

2 Jul 2026
81.7 tok/s

Past 80

81.74 tok/s at depth 3, 2.69x over 30.37 plain decode. Qwen 3.6 27B Optimized Speed, 192-token bench, thinking off, temp 0.6, fans verified above 7,800 RPM, twin runs. Same day, same config, an uncapped 11,390-token Flappy Bird with reasoning on: 62.95 tok/s. Logs.

6 Jul 2026

Turbo kernels and cached speculation

MTPLX 2.0.0 makes the turbo verify kernels the default: 27B Optimized Speed from about 45 to 58-60 tok/s in the chat lane, Optimized Quality from 31-36 to 43-44. Prefix caching runs alongside speculation on hybrid GatedDeltaNet models, with KV and recurrent state restored at commit boundaries; a 100k-token session restores in about two seconds.

10 Jul 2026

oMLX, powered by MTPLX

oMLX, the widely used MLX server, ships Lightning MTP in 0.5.0 with MTPLX kernels doing the speculative decoding. Its README credit: "powered by MTPLX by Youssof Altoukhi."

12 Jul 2026

1,000 GitHub stars

MTPLX passes 1,000 GitHub stars, eleven weeks after the first commit.

3 Aug 2026

llama.cpp adds MTP for hybrid GDN models

PR #25589 brings MTP to Qwen3-Next hybrid GatedDeltaNet models in llama.cpp, three months after MTPLX ran them.

11 Aug 2026

Concurrent speculative decoding

MTPLX 2.6.0 decodes for two agents at once with speculation on: 1.6 to 2.25x per lane over the previous batch route, sampled at shipped settings. Embeddings and rerank endpoints ship the same day.

15 Aug 2026

Qwen 3.8, the day after release

MTPLX 2.7.0 ships Qwen 3.8 27B one day after Qwen released it. Bare Speed decodes 65.2 tok/s and Optimized Speed 58.7 on the coding task at Qwen's official sampling; the installed app runs 64.4 tok/s cold at 17.0 GB peak.

29 Aug 2026

Flash-Next and a faster curve

MTPLX 2.10.0 runs Qwen 3.8 Flash-Next, a 125B MoE, with its MTP head: 61 tok/s plain, 63 to 76 with MTP. The 27B speeds up at every context length: 3k from 55.9 to 64.3 tok/s, 88k from 23.6 to 30.4, 147k from 12.0 to 18.4. The cache-copy rewrite lane reaches 87.6 tok/s.

30 Aug 2026

262k tokens on a Mac

MTPLX 2.10.1 ships block-sparse prefill on Flash-Next: a 262,144-token cold prompt completes in 355 s at 87.4 GB peak, and 131k prompts prefill at 810 tok/s.

3 Sep 2026

2,000 GitHub stars

MTPLX passes 2,000 GitHub stars while on GitHub's monthly Trending list, 826 stars in the month. The Qwen 3.8 packs pass 119,000 Hugging Face downloads in thirty days.

4 Sep 2026

Flash-Next faster at every context

MTPLX 2.11 decodes Qwen 3.8 Flash-Next at 68.4 tok/s at 16k context, 60.9 at 100k and 44.2 at 206k on an M5 Max with 128 GB, temperature 1, against 53.2, 47.5 and 32.2 on 2.10.2. The 27B gets a flash-decoding verify kernel. Agent tool turns lose their dead time: a turn after a file write re-prefills 20 tokens in 0.12 s instead of 3,535 in 3.7 s. The app ships a light appearance and twelve languages.