MTPLX 2.9.2
MTPLX stops rewriting agent transcripts, greedy decoding gets faster below 12k context, and the model forge gets a correctness fix that rescues packs whose draft acceptance had collapsed.
Your transcript is yours (#282)
- The serving endpoints are passthrough by default. MTPLX no longer compacts tool results, trims file reads, or injects steering text into agent transcripts unless you explicitly turn a rewrite feature on.
MTPLX_AGENT_REWRITES is the master switch, and each individual feature only arms when you set its own environment variable.
- The macOS app stopped exporting the legacy compaction settings when it launches coding agents, so app-launched Pi and OpenCode sessions get the same clean passthrough as the CLI.
- Managed client configs respect your edits.
mtplx start and the app only update files they wrote themselves, and never overwrite a config you have customized.
- The request log records exactly what was and was not rewritten on every request, so you can verify the passthrough yourself.
Faster greedy decode below 12k context
Chained greedy drafting is now on by default for temperature 0 requests with prompts under 12,288 tokens (#313, #315, #318). Gated A/B runs on an M5 Max measured +2.5 to +9.8 percent decode speed across 0.5k to 8k prompts. The same stack measured -2.9 and -2.7 percent at 16k and 32k, so a context fence keeps it off there. Sampled requests are untouched. Move the fence with MTPLX_GREEDY_TRIO_MAX_CONTEXT or disable with MTPLX_GREEDY_DRAFT_CHAIN=off.
Model forge correctness
- The forge decides the MTP norm convention once per tensor set instead of blind-shifting three norm tensors by +1.0 (#301). Packs extracted from absolute-encoded sources no longer ship with draft acceptance collapsed to 0 to 2 percent.
- The runtime refuses to load a double-shifted trunk with a clear error instead of serving a broken drafter (#306).
quantize: false module overrides are honored during quantization (PR #281 by @shiftedx).
Fixed
- Images survive user-message canonicalization on consecutive or retried turns (#327), and vision rows survive near-prefix cache restores (#296). Both were silent vision-drop bugs.
- The literal-repetition stop covers width 2+ batched MTP cohorts (#311), closing the 8,192-token "!" loop seen on raw CSS.
- The default request log is content-free, as its documentation always claimed (#326).
- The installer and the app write the PATH line through a symlinked
~/.zshrc instead of replacing the symlink with a plain file (#292).
- The dashboard Hardware card reports the real chip. A Mac Studio M2 no longer shows up as an M3 (#329).
bench --harness depth-sweep honors --depths, --seed, and --generation-mode, and refuses --stock-ar loudly instead of silently ignoring all four (#285).
- Exactness: the fp16 fused add+rmsnorm kernel uses the exact 1024-lane dispatch (#319), and the packed-concats exactness gate tests its element-identity claim honestly (#320).
- The NAX turbo verify path no longer uses padded M=5 lanes that measured slower than stock.
- The flight recorder samples non-streaming requests too.
- The app renders
<br> variants inside markdown table cells (PR #273 by @El-Patronum).
- Capture tooling persists exact completion token ids on all three lanes (PR #330 by @CharliePetch).
Experimental, off by default
MTPLX_FUSE_PROJ: load-time projection fusion for GDN, attention, and MLP (port of PR #316 by @grzracz).
MTPLX_VK_CROSSROW: crossrow wide-verify kernel.
- Draft-confidence tracing and confidence-gated draft width, groundwork for head calibration.
- Marathon postcommit protection for very long sessions.
Docs
- New:
HISTORY.md, the dated record of putting native MTP on Apple Silicon.
Updating
- App: Sparkle offers 2.9.2 automatically, or download the DMG at mtplx.com.
- CLI:
pip install -U mtplx or brew upgrade mtplx.