Three values in Cline's provider settings and you are running a local model: the base URL, the served model id, and any non-empty API key. Since 2.0.2 (9 Jul 2026) Cline's long sessions restore from the warm prefix cache. Created by Youssof Altoukhi, who brought native MTP to the Mac in April 2026.
Setup
Install MTPLX from the DMG or with Homebrew, then start the server. The app's play
button does the same thing; the app and the CLI share one server, so mtplx start attaches to a model
the app already has loaded instead of loading a second copy.
brew install youssofal/mtplx/mtplx
mtplx start # pick Qwen 3.8 27B Optimized Speed, serve on 127.0.0.1:8000
Confirm the server is up and read the served model id:
curl http://127.0.0.1:8000/health
curl http://127.0.0.1:8000/v1/models
Provider settings
In Cline, choose the OpenAI Compatible provider and enter:
| Field | Value |
|---|---|
| Base URL | http://127.0.0.1:8000/v1 |
| Model ID | mtplx-qwen38-27b-optimized-speed |
| API key | any non-empty string for localhost |
The model id follows the pack you loaded; the table at the end of this page lists the others. If you bind the
server to a non-localhost address you must start it with --api-key, and the server accepts that key
as Authorization: Bearer or X-API-Key.
Tool calls
MTPLX returns tool calls in OpenAI style. When tools are active, Qwen XML tool calls are translated into
OpenAI delta.tool_calls chunks as the function name and arguments stream, so a client reading the
standard streaming shape sees the call as it forms. Unknown or malformed tool-shaped output falls back to
assistant content rather than hanging or returning a server 500. Tool calls have been on the OpenAI route since
5 May 2026.
Structured output
Requests may set response_format with a json_schema. Since 2.3.0 (21 Jul 2026)
structured output runs with full MTP speed: a schema-bound reply stays on the speculative path instead of dropping
to plain decoding.
Warm restores
Since 2.0.0 (6 Jul 2026) MTPLX checkpoints the attention KV cache plus the recurrent and conv GDN state at
commit boundaries, with speculation on. 2.0.2 (9 Jul 2026) extended the warm prefix restore from OpenCode to
Cline, Pi and Claude Code. A Cline turn that appends a tool result and resends the transcript restores the prefix
instead of prefilling it again: mid-session tool rounds restore warm in under 2 s, and a 100k-token session
restores in about 2 s after a restart instead of a five-minute cold prefill. Every response reports
usage.cached_tokens, so you can see what was served from cache.
What to expect
Decode on Qwen 3.8 27B Optimized Speed runs through the native MTP path: the model drafts three tokens ahead
with its own MTP head, the target verifies them in one forward pass, and acceptance is exact rejection sampling
at the model's shipped sampler (temperature 1.0, top-p 0.95, top-k 20 for Qwen 3.8). The measured decode curve on
an M5 Max, MTPLX 2.10.0 (29 Aug 2026), stock settings: 64.3 tok/s on a 3k-token chat answer, 30.4 tok/s at 88k
context, 18.4 tok/s at 147k. On the MTPLX 2.7.0 coding task (15 Aug 2026, medium reasoning, via
mtplx serve, M5 Max, fans verified at max, single stream, official Qwen 3.8 sampling) Qwen 3.8 27B
Optimized Speed decoded at 58.7 tok/s. The full set is on the
benchmarks page.
Model ids
The served id follows the pack. /v1/models lists the one for the model you loaded.
| Pack | Served id | RAM |
|---|---|---|
| Qwen 3.8 27B Optimized Speed (recommended for coding) | mtplx-qwen38-27b-optimized-speed | 32 GB+ |
| Qwen 3.8 27B Optimized Quality (8-bit) | mtplx-qwen38-27b-optimized-quality | 36 GB+ |
| Qwen 3.8 Flash-Next Optimized Speed (125B MoE) | mtplx-flash-next-optimized-speed | 96 GB+ |
| Qwen 3.5 9B Optimized Speed | mtplx-qwen35-9b-optimized-speed | 16 GB+ |
Details for each pack, including the quantization map and the measured speeds, are on the models pages.