An emergency fix for mtplx pull. On 2.7.1 and older, re-pulling a model
that changed upstream — such as the Qwen 3.8 repos, re-published on
2026-08-15 with their vision towers restored — can corrupt your local copy.
Upgrade before you pull.
mtplx pull no longer corrupts files that changed upstream (#258,
#234). The downloader treated a complete local file whose size no
longer matched the server as an interrupted download, and byte-range
appended the remote tail onto the old content. Updating a repo in place
corrupted config.json and model.safetensors.index.json and left the
model unloadable. Stale files are now discarded and re-fetched whole;
genuinely interrupted *.incomplete downloads still resume. (Only pulls
with progress reporting — the interactive CLI, --progress-json, and the
app — had the bug; mtplx pull --json routes through hf_hub's etag
downloader and was never affected.)Already hit by this? A file the old downloader corrupted ends up at
exactly the size the server reports, so mtplx pull on 2.7.2 still sees
it as complete and cannot repair it on its own. Delete the affected
model's config.json and model.safetensors.index.json from its folder
under ~/.mtplx/models/, then run mtplx pull again on 2.7.2.
model-vision.safetensors; language and MTP tensors are untouched, so an
existing install picks the repair up as a ~0.9 GB delta. mtplx forge
build now grafts the vision tower, vision_config, and preprocessor
sidecars on every lane and fails closed rather than producing a blind
artifact (a repair script for already-forged artifacts ships as
scripts/graft_vision_tower.py). Catalog and app download sizes now
include the tower.pip install -U mtplx or brew upgrade mtplx.