MTPLX/Docs/Open WebUI

Open WebUI on a local MLX model.

Open WebUI connects to any OpenAI-compatible server. MTPLX is one, running on your Mac, with Qwen 3.8 27B decoding on Apple Silicon through native MTP speculative decoding. One connection setting and the chat is local.

Start MTPLX, add one OpenAI API connection in Open WebUI, pick the model. If Open WebUI runs in Docker, the container reaches the Mac through host.docker.internal and MTPLX prints that command for you. Created by Youssof Altoukhi, who brought native MTP to the Mac in April 2026.

Connection settings

Install MTPLX from the DMG or with Homebrew and start the server. The app's play button does the same thing; the app and the CLI share one server.

brew install youssofal/mtplx/mtplx
mtplx start

Then print the connection steps for your install:

mtplx connect openwebui

What it prints on 3 Sep 2026:

Open WebUI:
  Settings -> Connections -> OpenAI API
  API base URL: http://127.0.0.1:8000/v1
  API key: leave blank for localhost

Enter those three in Open WebUI, save the connection, and pick the served model. Use an API key only if you started MTPLX with --api-key, which is required for any non-localhost bind.

Docker

A Dockerized Open WebUI cannot reach the Mac at 127.0.0.1; inside the container that address is the container itself. The connection has to go through the host gateway, so the base URL becomes http://host.docker.internal:8000/v1. MTPLX prints the complete docker command with that URL and the host mapping already set:

mtplx connect openwebui --docker

The same command is available as mtplx openwebui docker-command. The generated command also disables Open WebUI's Ollama probe and its background task generations (titles, tags, follow-ups, autocomplete), so MTPLX only serves visible chat turns by default.

MTPLX-owned surfaces, the app and the built-in browser chat, can append a speed footer to a reply. Since 2.5.3 API clients such as Open WebUI never receive it, so no flag is needed. --no-stats-footer still turns it off everywhere. The numbers stay available at /metrics.

Built-in browser chat

If you want a browser chat with nothing else to install, MTPLX ships one on the same server:

mtplx start web

It runs on the same server and the same loaded model, so there is no second copy of anything to download or configure.

What to expect. Decode on Qwen 3.8 27B Optimized Speed measured 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. 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 full set is on the benchmarks page.

Images

Image input (PNG, JPEG, WebP) has run with MTP intact since 1.0.3 (11 Jun 2026) on Qwen 3.6 27B, Qwen 3.6 35B-A3B and Qwen 3.5 9B. All six Qwen 3.8 27B repos ship their vision towers (restored 15 Aug 2026), and Flash-Next accepts image input since 2.10.1 (30 Aug 2026).

Model list

/v1/models lists the chat model by default, so a model picker never offers an embedder as a conversation target. If you also configure retrieval models (/v1/embeddings and /v1/rerank, both since 2.6.0, 11 Aug 2026), list them with ?capability=embedding or ?capability=rerank; a chat completion that names a retrieval id gets a clear 400.

PackServed idRAM
Qwen 3.8 27B Optimized Speed (recommended for coding)mtplx-qwen38-27b-optimized-speed32 GB+
Qwen 3.8 27B Optimized Quality (8-bit)mtplx-qwen38-27b-optimized-quality36 GB+
Qwen 3.8 Flash-Next Optimized Speed (125B MoE)mtplx-flash-next-optimized-speed96 GB+
Qwen 3.5 9B Optimized Speedmtplx-qwen35-9b-optimized-speed16 GB+

Details for each pack, including the quantization map and the measured speeds, are on the models pages.