2x Faster Qwen3.8-Flash + GLM-5.3-Flash MTP
·
10 commits
to main
since this release
Run Qwen3.8-Flash-Next and GLM-5.3-Flash up to 2x faster with MTP. MTP is enabled by default, you can still disable it.
Also our new release includes 170+ training, chat, hardware, and performance improvements.
Highlights
- Smoother model loading (less errors) across local servers and connected providers.
- Safer chat edits that preserve tool cards, reply details, and conversation branches.
- New local media APIs for video, audio, and MLX-served models.
- New audio support with new models, progress tracking including: MiniMax-Music3, Higgs, MOSS and more!
- Improved multi-GPU planning, memory fitting, and split-model training.
- Ctrl+F Search now works.
- Strengthened AMD/ROCm detection, installation, and GPU compatibility.
- Upgraded MCP, Deep Research, OAuth, and agent tool reliability.
Qwen3.8-Flash + GLM-5.3-Flash
- Qwen and GLM now generate faster with MTP enabled by default.
- Use GLM tools across longer, multi-turn chats.
- Qwen automatically applies the recommended settings for thinking and non-thinking modes.
Download Qwen3.8-Flash-Next and GLM-5.3-Flash. See the Qwen guide and GLM guide for recommended settings and available GGUFs.
Faster MLX inference
- Fine-tune both large MoE models with text or images on Apple Silicon using MLX.
- Long Qwen chats now run much faster on Mac, with follow-up turns up to 30x faster.
- MLX models now use their full context size and support much longer batched generation.
- MLX releases GPU memory more cleanly between generation bursts and model switches.
- Serve MLX models through Unsloth's OpenAI-compatible API.
Audio
- Added support for MiniMax-Music3, Higgs, MOSS audio models.
- Added live progress updates while audio is being generated.
- Audio clips can now be archived and managed.
- Improved reliability with custom TTS playback fixes, Whisper pairing checks, and stronger audio testing.
Chat + tools
- Run several tool calls at once without mixing up their arguments.
- Keep tools available when chatting with images.
- Each chat keeps its MCP connection for faster tool calls.
- Local models can edit code using Codex’s apply_patch tool.
- Continue long chats with images and other media using Auto Compaction.
- Review and approve Deep Research plans before research starts.
Training + hardware
- Train larger models across multiple GPUs with automatic placement.
- AMD installs choose the best build across Windows and Linux, with BF16 on more GPUs.
- Export GLM-5.3 MLX fine-tunes to GGUF.
- Choose custom GGUF shard sizes and save locations.
API + Desktop
- Generate videos through the new OpenAI-compatible Videos API.
- Updates download in the background and install when you restart.
- Choose a custom port for LAN access.
- Generate audio with Higgs, MOSS and MiniMax models.
- Track audio generation progress and archive finished clips.
- Model downloads show clearer progress and can switch from Xet to HTTP automatically.
Download Unsloth Desktop
Unsloth Desktop is free and open source. Download it for:
- Windows
- macOS
- Linux
What's Changed
- Put the smart offload planner back behind its flag by @danielhanchen in #9862
- Studio: stop the per-chunk autosave writing back messages the server owns by @danielhanchen in #9865
- Bump install.sh / install.ps1 pins to unsloth>=2026.8.22 by @danielhanchen in #9868
- Fix Studio hydrating synced GGUF files before selection by @milewski in #9539
- Fix datasets PyArrow registration after failed warm import by @Imagineer99 in #9626
- fix(studio): stop offering a transformers upgrade where it cannot load anything by @Lyxot in #9878
- Fix Studio CPT overwriting LFM2 all-linear LoRA targets by @Souravrajvi0 in #9870
- fix(studio): accept trailing slash for model discovery by @Imagineer99 in #9876
- studio: accept shared youtube clipboard links by @mahiatlinux in #9903
- studio: tell users when a canvas is blocked by the network access setting by @NilayYadav in #9894
- studio: fix streamed tool calls in studio api monitor by @Etherll in #9896
- studio: serve installed mlx models through the openai-compatible api by @mahiatlinux in #8768
- Fix sidebar footer width and context menu radius by @shimmyshimmer in #9918
- strip inherited claude provider routing from local agent launches by @Souravrajvi0 in #9871
- studio: honor a cancelled load inside the llama-server health wait by @NilayYadav in #9893
- fix model hub recent sorting for on-device models by @Imagineer99 in #9642
- add a setting that tells the model the current date by @mahiatlinux in #8879
- studio: fix lan address actions and launch bind reporting by @Lyxot in #9170
- rag: avoid re-hashing linked-folder snapshots in start_ingestion by @DhruvaMyakeri in #9913
- fix(studio): coalesce concurrent keyless-settings reads to stop SQLite thundering herd by @Greninja44 in #9911
- Studio: add the OpenAI videos API on /v1/videos by @NilayYadav in #9891
- Clarify tool approval copy by @Imagineer99 in #8738
- Pin Claude Code to the loaded model's real context window by @NilayYadav in #9940
- studio: drop the schema bounds llama.cpp's grammar engine cannot compile by @Lyxot in #9923
- Fix shell selection for remote Agents commands by @Imagineer99 in #8844
- Studio: accept the loadConfig keys a saved system-prompt preset already sends by @indrajeetapache in #9881
- Studio: compact long chats with media attachments by @Imagineer99 in #9476
- Studio: add Higgs, MOSS, and MiniMax audio models by @Etherll in #8794
- studio: add ordered arguments to mcp server settings by @Etherll in #9943
- studio: list route-aware models through the openai api by @NilayYadav in #9892
- fix(studio): repair custom TTS endpoint test and playback by @Souravrajvi0 in #9905
- Studio: render escaped inline math in lists by @Imagineer99 in #9796
- deprecate unsupported custom prompt templates by @vineethsaivs in #8938
- Restore UNSLOTH_RETURN_LOGITS after prediction_step instead of forcing it to 0 by @danielhanchen in #6239
- Studio: update in the background and restart when ready by @NilayYadav in #9890
- Serve every MiniMax H3 asset from unsloth rather than a community repack by @danielhanchen in #8832
- fix(studio): gate external tool nudges and preserve retry context by @Biotrioo in #9125
- Chat: let the LoRA compare rehydrate a pair the generalized compare saved by @lonexreb in #9908
- fix: expose codex apply_patch for local models (#9114) by @Biotrioo in #9121
- Fix duplicate GGUF rows in custom model folders by @Imagineer99 in #9975
- Revert "fix(studio): gate external tool nudges and preserve retry context" by @danielhanchen in #9990
- studio: isolate mcp browser test state by @mahiatlinux in #9951
- Fix three CI regressions: code-span anchor, load-dispatch anchor, recordless pip install by @danielhanchen in #9959
- studio: fix audio ci tests by @mahiatlinux in #9953
- studio: fix openai route ci tests by @mahiatlinux in #9952
- Skip the inline-code mask when every backtick is inside a fence by @danielhanchen in #9991
- stop the planner withholding a split reserve from one card, and price physical cores by @danielhanchen in #9863
- Parse the downloaded model mapper instead of exec'ing it by @danielhanchen in #9777
- Recapture the control leg reference against the fixed loss normalisation by @danielhanchen in #9569
- Stop os.dup2 alone being a reverse shell, and allowlist the zoo URL guard by @danielhanchen in #9994
- Give the in-venv CLI tests a writable STUDIO_HOME by @danielhanchen in #9993
- Settle the compact layout before measuring the permission pill by @danielhanchen in #9992
- Fail CI on a new exec/eval/compile of a value that is not written out by @danielhanchen in #9999
- Advertise a backend version a released AppImage will accept by @danielhanchen in #10001
- Budget the dyld classifier in CPU time, not wall clock by @danielhanchen in #10003
- Stop one slow SQLite writer from becoming a stream of Studio log errors by @danielhanchen in #9996
- studio: cache the servability scan behind GET /v1/models by @danielhanchen in #9998
- Make the multi-turn smoke actually assert that history reached the model by @danielhanchen in #10009
- Share the fixture backend version with the model-download E2E by @danielhanchen in #10002
- Give the cancel drain a budget sized for a loaded runner by @danielhanchen in #10008
- Size the model picker's row metadata to the ink it holds by @shimmyshimmer in #10006
- Studio: fix unscrollable model dropdowns on the export page by @Lyxot in #10020
- Ground the multi-turn smoke on the turn that survives a 270M model by @danielhanchen in #10025
- Studio: honor the effort level Claude Code sends on /v1/messages by @NilayYadav in #9941
- Studio: archive audio clips by @NilayYadav in #9637
- Pre-flight whisper pairing before the chained install by @danielhanchen in #10027
- Dim an over budget model row instead of pilling every line by @shimmyshimmer in #10007
- studio: reap durable chat generation runs that stop making progress by @danielhanchen in #9997
- Stop three Backend CI tests measuring the runner instead of the code by @danielhanchen in #10035
- Let the AppImage E2E use the Retry the failed quant row offers by @danielhanchen in #10032
- Keep a modules_to_save copy on the card it was loaded onto by @danielhanchen in #10034
- Train a model the planner split across cards, instead of dying in index_select by @danielhanchen in #9995
- Name the encoding when the offload test reads llama.py by @danielhanchen in #10039
- Answer llama-server discovery probes instead of serving them the app shell by @danielhanchen in #10037
- Ask one formula whether a GGUF fits by @shimmyshimmer in #10029
- Stop the llama-server probe deny-list answering 405 by @danielhanchen in #10049
- Stop the subagent tool pre-approval swallowing the forwarded prompt by @NilayYadav in #9939
- Use the plain download icon in the Hub On Device views by @shimmyshimmer in #10055
- Tag the compat endpoint's Ollama rows with their real source by @lonexreb in #9988
- Stop the GGUF header and the chat detail polls from filling the log by @danielhanchen in #10040
- feat(export): GGUF shard size control, save directory override, fix private Hub push by @LeoBorcherding in #6107
- Studio: set
GGML_CUDA_ENABLE_UNIFIED_MEMORYonly where it gains memory by @oobabooga in #9884 - Wait for the idle batch flush instead of racing a fixed sleep by @danielhanchen in #10063
- Use the head-aware planner for Studio's multi-GPU device map by @danielhanchen in #10042
- Let tool chats decode in parallel instead of one at a time by @danielhanchen in #10046
- Fix excessive studio.db writes during chat inference by @Imagineer99 in #9945
- Stop shipping test suites in the wheel and the sdist by @danielhanchen in #10060
- Studio: keep a Windows update from leaving a CPU-only PyTorch by @danielhanchen in #9857
- Read the chat storage keys on call, not at module scope by @danielhanchen in #9844
- Studio: install torch from an index that has kernels for the user's AMD GPU by @oobabooga in #9829
- fix(studio): normalize Muse Glimmer's recipient-addressed protocol by @Lyxot in #8422
- fix(studio): read tool-call arguments as the types their schema declares by @Lyxot in #10019
- Studio: notice a quarantined payload before trusting the update fast path by @danielhanchen in #10053
- Say why Studio could not enumerate a GPU, instead of just logging [] by @danielhanchen in #10056
- CI: fix llama.cpp seed caching, Diffusers wheel installs, and isolated test coverage by @oobabooga in #9979
- Studio: resume HTTP after Xet stall without a transport-conflict banner by @Souravrajvi0 in #10045
- Fix GLM-5.3 chats breaking after a tool runs by @NilayYadav in #9938
- Studio: fix clipped settings scrollbar on Windows WebView2 by @NilayYadav in #10074
- Bump dompurify from 3.4.2 to 3.4.14 in /studio/frontend in the npm-frontend-security group across 1 directory by @dependabot[bot] in #6753
- Studio: show progress during audio generation by @Etherll in #10081
- Show activity on a 0-byte Xet download and keep finished cards visible longer by @NilayYadav in #9303
- Fix Hub On Device Selection Across Refresh and Download Changes by @Sneakr in #9922
- Patch Accelerator.distributed_type as a property, not a bare function by @vineethsaivs in #10028
- Stop charging a chat the whole cache because Max Tokens says "Max" by @danielhanchen in #10070
- Stop two installer tests answering about the runner instead of the code by @danielhanchen in #10079
- Studio: split parallel tool-call arguments at JSON object boundaries by @danielhanchen in #10059
- Move the studiobench attribution config in with the harness by @danielhanchen in #10100
- Fix Accelerator.distributed_type bound-method bug on single-GPU patch by @mayuriphad in #10072
- Wrap Accelerator.distributed_type patch in property() (Closes #10016) by @mihiii1337 in #10087
- Add configurable LAN access port by @wasimysaid in #10082
- Add GGUF fit-target control and wire to llama-server --fit-target by @aiSynergy37 in #4882
- Use the public fastmcp call_tool so the MCP guard test survives fastmcp 4 by @danielhanchen in #10110
- Scope the llama.cpp update test's Popen patch to the installer by @danielhanchen in #10105
- Run the llama.cpp keep-install back-compat tests on Windows by @danielhanchen in #10106
- Stop the torchao ROCm test from depending on the host's GPU by @danielhanchen in #10099
- fix(studio): show the confirmation card the argument text the tool is run with by @Lyxot in #10023
- Reduce the comments added by PR #9979 by @danielhanchen in #10107
- Give the unsloth_zoo pytest step a per-test timeout by @danielhanchen in #10108
- Studio: report a context size for models loaded through MLX by @NilayYadav in #10098
- Studio: tell the browser about the bootstrap shutdown deadline by @danielhanchen in #10104
- AMD: Fix BF16 detection on gfx10 ROCm GPUs by @sunjingwen21 in #7682
- fix(amd): gate training GPU selection on the installed torch build's arch coverage by @LeoBorcherding in #8791
- Linux: fix ROCm detection on split Debian stacks by @TaskPuppyNatani in #8886
- Studio: send tool results to the model in the right order by @NilayYadav in #10091
- studio: keep MTP on for GLM-5.3-Flash by @danielhanchen in #10119
- Studio: report the GPUs the OS sees, not just the ones PyTorch opened by @danielhanchen in #9858
- Apply the context length and quant settings when attaching to a running server by @NilayYadav in #10093
- Reuse the MLX prompt cache on hybrid recurrent models by @Lyxot in #10062
- Report a trainer kwarg that neither the trainer nor the config takes by @vineethsaivs in #9944
- Studio: keep a Downloads entry when the list is empty by @Souravrajvi0 in #9849
- Kaggle T4: Latest_compile and Vision_FLA_compile legs, plus gpt-oss completions and GGUF by @danielhanchen in #9700
- Kaggle CI: use both accounts, weighted by their own weekly quota by @danielhanchen in #10121
- Kaggle T4: split the load phase into fetch and weight load by @danielhanchen in #9692
- fix(amd): don't enable torch.compile when Triton's C toolchain can't compile it (Windows) by @LeoBorcherding in #7704
- fix(AMD): route Fedora/Bazzite to per-arch ROCm wheels when no version is readable by @LeoBorcherding in #9152
- Studio: use plain arrow icons for up, down, left and right by @shimmyshimmer in #10129
- Prune an open PR's caches once nothing has read them by @danielhanchen in #10123
- Cache the same Playwright engines under the same key by @danielhanchen in #10122
- Make the notebooks smoke job reach the check it exists for by @danielhanchen in #10125
- Remove OpenSSF Scorecard workflow by @danielhanchen in #10133
- feat(studio): give MLX models a real context length, from the model config to the KV cache by @Lyxot in #8125
- Bump the actions group with 3 updates by @dependabot[bot] in #9797
- Bump the cargo-tauri group across 1 directory with 6 updates by @dependabot[bot] in #9798
- Stop
unsloth start claudefrom opening with a model it cannot use by @NilayYadav in #10089 - studio: fall back to the MTP/ folder when a repo publishes no root drafter by @danielhanchen in #10124
- Studio: auto-generate an admin password for headless public launches by @danielhanchen in #7392
- Studio: keep one MCP connection per chat instead of reconnecting every call by @NilayYadav in #10095
- Studio: restore Deep Research plan approval by @wasimysaid in #10134
- Studio: line up On Device rows, and list partial downloads by @shimmyshimmer in #10128
- Widen model picker panel and header controls by @shimmyshimmer in #10132
- Studio: keep download restart toasts job-scoped by @wasimysaid in #10136
- MLX: drain GPU work before clearing the cache by @Lyxot in #9921
- Fix stale Qwen sampling defaults after Studio upgrades by @Imagineer99 in #9643
- fix(studio): enforce Hub token caller boundary by @Imagineer99 in #10076
- Studio: keep tools available when a picture is attached by @NilayYadav in #10092
- Fix pre-commit formatting drift after #10076 by @Imagineer99 in #10154
- desktop: check for updates periodically by @mahiatlinux in #9505
- studio: use generation usage for conversation search budgets by @mahiatlinux in #9438
- studio: fetch the XPU triton wheel with --dest, not pip's -d by @Sletch in #10073
- fix(studio): poll inference status while CLI model is loading by @jimdawdy-hub in #5901
- Studio: restore sticky checkpoint boundaries on tool-heavy threads by @alkinun in #9971
- Studio: surface every live provider model in the picker by @danielhanchen in #5684
- Fix llama.cpp Studio update failures on GitHub API rate limits (#9970) by @Souravrajvi0 in #9980
- Studio: dispatch on OpenAI agentic web_search action variants by @danielhanchen in #5787
- studio: tighten MTP reload guards and asymmetric spec flags for #5582 by @danielhanchen in #5696
- Studio: don't re-prompt after model produced a complete answer by @danielhanchen in #5714
- Studio: don't size attached documents by a local model on hosted chats by @NilayYadav in #10164
- Studio: keep tool cards in place when you edit a reply by @NilayYadav in #10162
- Studio: keep a reply's details when you edit its text by @NilayYadav in #10161
- Studio: keep both branches when a chat's first message is edited by @NilayYadav in #10163
- Stop the kwarg-spacing post-pass dying on Python 3.11 by @danielhanchen in #10137
- Studio: stop Deep Research from throwing away a finished report by @NilayYadav in #10166
- Studio: show what changed in llama.cpp updates by @oobabooga in #10117
- Studio: test that a chat message keeps its identity (#9984) by @umran666 in #10064
- Reflow comments in studio/backend/core/inference to 120 columns by @danielhanchen in #10115
- Trim comments in studio/backend core services and the unsloth package by @danielhanchen in #10116
- Trim comments in the studiobench harness and unsloth_cli by @danielhanchen in #10118
- Studio: fix OAuth sign-in for MCP servers like Notion by @NilayYadav in #10167
- Studio: align Run Settings and titlebar controls by @alkinun in #10175
- Trim comments in studio/backend routes, utils and installers by @danielhanchen in #10112
- Update CODEOWNERS for current maintainers and code areas by @danielhanchen in #10191
- Security audit: re-approve fastmcp-slim 4.0.x and unsloth-zoo 2026.8.17 by @danielhanchen in #10187
- Stop the research cancellation tests failing on a busy CI runner by @danielhanchen in #10190
- Fix the frontend unit tests broken by a merge skew between #10161 and #10162 by @danielhanchen in #10186
- Fix the two stale source-text contract tests blocking every PR by @danielhanchen in #10185
- Fix Studio preferring MTP sidecars over embedded heads by @wasimysaid in #10181
New Contributors
- @milewski made their first contribution in #9539
- @DhruvaMyakeri made their first contribution in #9913
- @Greninja44 made their first contribution in #9911
- @mayuriphad made their first contribution in #10072
- @mihiii1337 made their first contribution in #10087
- @aiSynergy37 made their first contribution in #4882
- @sunjingwen21 made their first contribution in #7682
- @TaskPuppyNatani made their first contribution in #8886
- @Sletch made their first contribution in #10073
Full Changelog: v0.1.804-beta...v0.1.805-beta