·
3 commits
to main
since this release
Qwen3.8-27B and Qwen3.8-2.4T can now be run locally in Unsloth!
Run on 17GB RAM via Unsloth Dynamic GGUFs. You can also fine-tune Qwen3.8-27B in Unsloth.
Qwen3.8-27B is by far the strongest model for its size. We also uploaded NVFP4 quants.
Guide: https://unsloth.ai/docs/models/qwen3.8
GGUF: https://huggingface.co/unsloth/Qwen3.8-27B-GGUF
See 1-bit Qwen3.8-2.4T GGUF running in Unsloth:

Highlights
- Qwen3.8-27B + extra llama-server arguments allowed + custom VRAM toggle
- External provider has tool calling + tool support + login with Codex
- Fast FP8 10x faster MiniMax-H3 inference (3 minutes vs 30)
- 10% faster inference for GGUFs + Bypass permissions fixed
Chat + tools
- Connected AI providers can use their own Search or Unsloth Desktop's built-in Search and tools. Tool results are passed back to the model so it can continue multi-step tasks.
- Sign in with a Codex subscription and use Codex tools inside Chat.
- Chat shows live prompt and generation speeds, while long streaming replies use much less CPU.
- Chat settings stay with the conversation across remote sessions.
- Paste a YouTube link to attach its transcript, including the title, channel, duration, link, and caption language.
- Save a full chat or reply into your project's sources while keeping its reasoning, tool calls, and citations.
MiniMax-H3
- MiniMax-H3 can run on smaller supported GPUs by splitting large model parts into pieces that fit.
- The model picker now hides H3 options that the current hardware cannot run instead of letting them fail after selection.
- H3 options are labelled Fast FP8 or Slow, making the large speed difference clear before downloading.
Performance + hardware
- Inference is up to 10% faster in supported cases, with lower VRAM use and a tunable memory limit.
- Idle image and video models can optionally unload to free VRAM for Chat or Training.
- Added better support for AMD RDNA 3, RDNA 4, and Strix Halo systems. VRAM checks no longer reserve extra GPU memory.
- Multi-GPU ROCm device matching is safer.
- Macs now choose context size from the memory that is actually free.
- RAG document indexing uses the CPU by default, so it no longer leaves a large GPU memory block reserved.
- Fixed GGUF image detection when choosing a model for the API.
Custom llama.cpp arguments
- Model settings now include an Extra Arguments box for custom
llama-serverflags. - Unsloth checks flags against the installed build and saves valid ones per model for normal, startup, and API loads. Flags that could break model loading or app security are rejected with a clear message.
Training + exports
- Training checks whether a model needs a newer Transformers version and asks before installing it. The preview also tells you when the model must use 16-bit instead of 4-bit.
- GGUF exports check disk space before starting a long merge, with clearer errors showing how much space is needed.
- On Kaggle, large saves can use the bigger temporary drive when the working folder is too small.
- Fixed LoRA being ignored by vLLM GRPO rollouts on newer TRL versions.
Debugging + reliability
- Settings > Debugging now shows the main server and model-runner logs, with live, 3-second, and manual refresh modes.
- Copy the visible log or its full path for a bug report. Passwords, tokens, and API keys are hidden in the viewer, while files on disk stay unchanged.
- Cached RAG models load first, avoiding long stalls when Hugging Face is unreachable.
- Slow installs can keep running during large downloads and show what they are waiting for.
- Fixed Hugging Face dataset links and linked folders on Windows.
- Pinned models can be reordered by dragging them in the model list.
Download Unsloth Desktop
Unsloth Desktop is free and open source. Download it for:
- Windows
- macOS
- Linux
What's Changed
- Bump install.sh / install.ps1 pin to unsloth>=2026.8.14 by @shimmyshimmer in #8455
- Point the Images rail contract at the in-flow footer padding by @danielhanchen in #8446
- GRPO: dispatch on width at the remaining lm_head matmul call sites by @danielhanchen in #8204
- Studio: let repair proceed past a backend that is not ours by @danielhanchen in #8459
- Studio: keep the download rail in the corner under the welcome composer by @danielhanchen in #8462
- Studio: keep prose that documents call:NAME{...} in the answer by @danielhanchen in #8437
- Studio: name the checkpoint on MiniMax H3 quant chips by @danielhanchen in #8466
- Stop the PowerShell progress bar throttling installer downloads to 0.65 MB/s by @danielhanchen in #8476
- Windows installer: fix single-AMD-GPU detection and the unrecoverable "needs repair" loop by @danielhanchen in #8398
- Studio: ask macOS for zombie status with the flavor that answers by @danielhanchen in #8484
- Auto mode: ask before PyYAML deserialization that can run code by @danielhanchen in #8432
- Drop the inert capacity-sweeper dispatch from the desktop release by @danielhanchen in #8477
- Windows: fix single-AMD-GPU hosts reading as "gpu none" and looping the installer by @danielhanchen in #8461
- Installer: suppress macOS uv developer tools dialog by @wasimysaid in #8479
- Bump install.sh / install.ps1 pin to unsloth>=2026.8.15 by @danielhanchen in #8491
- Read macOS zombie status from sysctl, the call that answers by @danielhanchen in #8493
- Studio: remove obsolete onboarding and model code by @wasimysaid in #8453
- Studio: stop building test scratch paths inside a macOS sensitive root by @danielhanchen in #8485
- CI: run the Studio desktop unit tests on macOS by @danielhanchen in #8487
- Studio: keep the compiled cache when a sibling backend is live by @danielhanchen in #8457
- Drop socket reads that arrive after an h11 connection is closed by @danielhanchen in #8469
- Studio: name a connected model the provider dropped instead of its raw id by @danielhanchen in #8470
- Studio: classify a moved or mixed model folder from the checkpoint, not from directory order by @danielhanchen in #8475
- Route spoofed Strix Halo GPUs to the AMD per-gfx index by @danielhanchen in #8480
- Studio: report host VRAM usage when no single GPU's usage can be attributed by @danielhanchen in #8481
- Studio: stop the memory guards trusting an over-reported free VRAM on Windows ROCm by @danielhanchen in #8482
- Studio: give the tool-call strip one owner and one scan order by @danielhanchen in #8427
- Studio: stop rescanning the whole answer on every streamed token by @danielhanchen in #8538
- Studio: cut backend start time and stop blocking the event loop by @danielhanchen in #8498
- Studio backend performance: five superlinear paths in the routes and data layer by @danielhanchen in #8499
- Studio: read ?model= from the diffusion page's own route match by @NilayYadav in #8260
- Install torchao in Backend CI, and stop one test's allowlist answer leaking into the rest by @danielhanchen in #8486
- Clear the four main CI reds blocking every open PR by @danielhanchen in #8506
- Studio: drop the duplicated HubModelPicker import in model-selector by @danielhanchen in #8534
- Studio: drop a duplicate import that breaks the frontend build by @danielhanchen in #8553
- Unsloth Studio: add ChatGPT subscription chat with Codex tools by @wasimysaid in #8511
- Pin sha256 hashes for triton-xpu 3.6.0 wheels in intelgputorch210 by @danielhanchen in #8543
- security: lockfile audit must block non-registry sources and missing integrity by default by @danielhanchen in #8541
- Studio: verify the flash-attn import after installing it by @danielhanchen in #8465
- Studio: finish the backend CI cleanup #8506 started by @danielhanchen in #8554
- Studio: linear-time tool signal scanning in the safetensors and healer paths by @danielhanchen in #8494
- Studio: only a UI session may define a local (stdio) MCP command by @danielhanchen in #8550
- studio: fail closed on HF commit-operation uploads in the sandbox gate by @danielhanchen in #8544
- tests: drop --single-process from the Chromium launch args by @danielhanchen in #8563
- Studio: honor a request's enable_tools: false instead of overriding it by @danielhanchen in #8547
- Pin the ROCm-on-WSL bootstrap to immutable refs by @danielhanchen in #8540
- security: the network check could not see httpx2 by @danielhanchen in #8565
- Studio: validate external provider base URLs before proxying by @danielhanchen in #8549
- Studio: drop the speculative drafter under Auto when only the model fits in VRAM by @danielhanchen in #8435
- Studio: two ways past the stdio MCP UI-session gate by @danielhanchen in #8551
- Fix broken Cloudflare documentation link by @EleventhLucas in #8572
- Studio: keep the extras install working under a hardened uv.toml / pip.conf by @danielhanchen in #8579
- Harden the workflow-trigger lint: scan .yaml, and host it outside the workflow it audits by @danielhanchen in #8545
- Studio: require managed backend for linked folders by @alkinun in #8536
- Studio: defer optional GPU startup work by @wasimysaid in #8564
- Studio: stop telling the model it is sandboxed under Full access by @danielhanchen in #8562
- Fix Apple Silicon M4+ CPU frequency reported as MHz instead of GHz by @danielhanchen in #8571
- launch embedding ggufs with --embedding by @mahiatlinux in #8524
- studio: stop two per-frame main-thread loops stalling the ui on linux by @mahiatlinux in #8525
- studio: stop the MiniMax-H3 refusal telling users to delete /usr/bin by @danielhanchen in #8569
- Images: fix the img2img VAE dtype crash and make the Resolution control bound Transform by @danielhanchen in #8583
- Write a readable traceback under each JSON log record by @danielhanchen in #8585
- Refuse an image / video GGUF before launching llama-server, and open it on its own page by @danielhanchen in #8584
- Studio: confirm before clearing the video gallery by @oobabooga in #8354
- Detect the Radeon AI PRO R9700 (gfx1201): it carries neither 9070 nor 9080, so name inference found nothing by @danielhanchen in #8573
- Fix the desktop-auth routes stub so the health test runs again by @danielhanchen in #8590
- fix delayed studio tool approval cards by @mahiatlinux in #8628
- Studio: contain RAG embedder torch allocation crashes by @oobabooga in #8609
- Studio: validate legacy sd binary discovery by @Lyxot in #8560
- Let a remote GGUF estimate be priced without its compute reserve by @danielhanchen in #8641
- tests: do not read a host refusal as an H3 reference-load regression by @danielhanchen in #8638
- Read the Responses event type from the SSE event field by @danielhanchen in #8608
- Surface an untyped Responses error frame instead of skipping it by @danielhanchen in #8650
- Studio: switch llama.cpp backends from the UI by @oobabooga in #8520
- Studio: detect real GGUF imatrix support, and give the local export its credential by @Lyxot in #8603
- tests: pin the remote GGUF compute reserve by @danielhanchen in #8660
- Stop the APU unified-memory tests inheriting the shell's GPU mask by @danielhanchen in #8662
- fix(amd): gate ROCm GPU selection and crash recovery on the build's arch coverage by @LeoBorcherding in #7670
- Studio: allow max output overrides for custom providers by @omjha3125-ctrl in #8512
- fix(audio): do not read an unreadable tokenizer_config.json as "not an audio model" by @LeoBorcherding in #8625
- fix(audio): install the audio decode shim before the training worker loads a dataset by @LeoBorcherding in #8436
- Ask whether a device is present before asking what it can do by @danielhanchen in #8653
- Keep the drafterless retry intact when the arch gate narrows the argv by @danielhanchen in #8667
- studio: close the delete-vs-load races around the H3 companion repos by @danielhanchen in #8657
- Free the intermediate 16-bit merge when the GGUF quants will not fit by @danielhanchen in #8500
- Studio: optimize startup by deferring fine-tuning actions by @oobabooga in #8624
- tests: follow the remote-connection contract through its refactor by @danielhanchen in #8467
- Make the VRAM budget fraction tunable by @danielhanchen in #8589
- Match the export pin test to the widened exception handler by @danielhanchen in #8673
- Studio: stop a streaming research run re-rendering the whole chat by @danielhanchen in #8634
- Stop the idle-unload tests racing a fixed wall-clock window by @danielhanchen in #8674
- Do not let a CUDA-mismatched torchaudio take the whole import with it by @danielhanchen in #8496
- Stop the GRPO hidden-states wrapper paying for logits it discards by @danielhanchen in #8576
- Say ROCm does not cover RDNA 1 instead of advising a fix that cannot work by @danielhanchen in #8577
- Studio: square off the MiniMax H3 mode dialog by @shimmyshimmer in #8659
- Attach long pastes as a text file in Chat by @shimmyshimmer in #8472
- Studio: three follow-ups to the Deep Research main-thread work by @danielhanchen in #8633
- Studio: add image and video generation presets by @oobabooga in #8390
- Studio: run the transformer-quant smoke probe in a child so planning a download costs no VRAM by @danielhanchen in #8671
- tests: require the export pin fallback to cover a half-built unsloth_zoo by @danielhanchen in #8685
- Restore the #8335 WMI guard anchor broken by the RDNA 1 wrapper by @danielhanchen in #8684
- Studio: give GGML_CUDA_ENABLE_UNIFIED_MEMORY a real off switch (#8651) by @danielhanchen in #8680
- Studio: import Open WebUI chat exports by @oobabooga in #8643
- studio: harden the launcher-refresh installer fetch by @danielhanchen in #8542
- Studio: keep running when the main window closes by @wasimysaid in #8675
- Studio: set DYLD_LIBRARY_PATH for llama-server on macOS, and classify macOS startup failures by @danielhanchen in #8574
- Windows: start the backend from a usable folder on login autostart by @danielhanchen in #8575
- Studio: stop the /api/system poll from pinning a CUDA/HIP primary context by @danielhanchen in #8677
- ci: stop asserting torch on the Intel Mac clean-machine leg by @danielhanchen in #8693
- Windows: stop the oversize guard tests from emptying os.environ by @danielhanchen in #8696
- Reduce antivirus false positives in the desktop installers by @danielhanchen in #8586
- Keep the #8577 AMD peer guards message-only, and fix the table drift they exposed by @danielhanchen in #8689
- Model hub: show the Meta mark for Meta's own orgs by @shimmyshimmer in #8691
- Apply the kwarg-spacing formatter to the #8677 system poll test by @danielhanchen in #8699
- Fix three frontend contract tests that main is red on by @danielhanchen in #8703
- Studio: run the local tool loop against every capable external provider by @danielhanchen in #8665
- studio: honour the gpu selection for image and video loads by @mahiatlinux in #8645
- Windows: stop depending on the generated unsloth.exe console script by @danielhanchen in #8592
- Desktop: keep "Run Unsloth at login" when something deletes the Run value by @danielhanchen in #8707
- Fix gallery and sidebar menu interactions by @Imagineer99 in #8582
- Studio: read a model picker row at a glance by @shimmyshimmer in #8658
- Bump install.sh / install.ps1 pin to unsloth>=2026.8.16 by @danielhanchen in #8714
- Fix the Core sanity step collecting the zoo suite against this repo's tests package by @danielhanchen in #8737
- Fix Audio layout and responsive media headers by @Imagineer99 in #8445
- add a way to open a chat's sandbox folder from the ui by @mahiatlinux in #8661
- Let the uv signal handler exit without going through setup_fail by @danielhanchen in #8744
- Stub the trainer's heavy imports in the audio-probe test so Backend CI collects again by @danielhanchen in #8740
- studio: carry chat settings across browsers and remote sessions by @mahiatlinux in #8656
- Studio: idle auto-unload for the image and video backends by @danielhanchen in #8672
- Correct what the dead MCP patch was actually hiding in the backend tests by @danielhanchen in #8758
- Use Kaggle's large overlay for saves, and refuse a GGUF export that cannot fit by @danielhanchen in #8439
- Studio: read the logs from inside the app, in Settings > Debugging by @danielhanchen in #8690
- Studio: tighten the Settings > Logs comments by @danielhanchen in #8769
- Fix Windows HF dataset symlink fallback by @Imagineer99 in #8741
- Studio: keep the RAG embedder off the GPU unless asked by @danielhanchen in #8654
- Fix Studio CPU saturation on long streaming replies by @oobabooga in #8750
- Let a request say whether Search runs locally or at the provider by @danielhanchen in #8711
- Studio: share one torch classification probe across the repair paths by @danielhanchen in #8779
- Credit the contributor PRs behind the external-provider tool loop by @danielhanchen in #8704
- Studio tests: do not dump core when a probe child is crashed on purpose by @danielhanchen in #8783
- Studio: never signal pid 0 or pid 1 from the lifetime reaper by @danielhanchen in #8797
- Studio: show live prompt and generation speed by @wasimysaid in #8700
- Desktop: ship a complete Linux AppImage by @wasimysaid in #8695
- Studio: close seven detection gaps in the deliberate-crash guard by @danielhanchen in #8788
- Windows: stop compiling C# for colour on hosts that already render it by @danielhanchen in #8767
- Studio tests: pin the torch probe invalidation contract to both installers by @danielhanchen in #8795
- Run deterministic notebook smoke tests on real Kaggle T4s by @danielhanchen in #8440
- Studio: run the LoRA scan off the event loop by @danielhanchen in #8392
- Make two backend test guards able to fail by @danielhanchen in #8760
- Studio: budget the Metal context fit from free memory, not total by @danielhanchen in #8706
- Read the descender guard's class list wherever it is written by @danielhanchen in #8765
- Ask for the transformers a training model needs, before the run starts by @danielhanchen in #8721
- Studio tests: pin the empty-version torch probe distinction at the repair paths by @danielhanchen in #8803
- Studio: optimize startup with on-demand language catalogs by @oobabooga in #8623
- Studio: run the Transformers dictation engine in a spawn child by @danielhanchen in #8668
- Carry a provider-run tool's result into the next turn by @danielhanchen in #8713
- fix grouped_gemm crash on the documented gather_indices=None default by @mahiatlinux in #8629
- studio: give minimax-h3 the sd.cpp graph-cut flags so it renders on a smaller card by @mahiatlinux in #8644
- Studio: gate --flash-attn, --no-context-shift and --jinja on the binary by @danielhanchen in #8710
- Exclude studio/backend/tests from the wheel by @NilayYadav in #8501
- Tighten the comments on the versionless torch probe tests by @danielhanchen in #8811
- Wheel the voice model picker once its rows are on screen by @danielhanchen in #8743
- Studio: split the Full access rewrite claims per API, and drop the local-desktop promise by @danielhanchen in #8605
- studio: open linked-folder sources in binary mode on windows by @mahiatlinux in #8621
- studio: report prompt speed in tokens per second for safetensors chat by @mahiatlinux in #8647
- fix(amd): read ROCm VRAM through amd-smi so the backend keeps no HIP context by @danielhanchen in #8669
- Desktop: Keep server stopped across webview reloads by @NilayYadav in #8567
- Studio: drag to reorder pinned models in the hub by @NilayYadav in #8591
- Studio: self-repair sidecars whose extensions were built for another Python by @NilayYadav in #8705
- Desktop: fix unresponsive audio model selector on macOS by @NilayYadav in #8718
- Round the aggregate GPU VRAM total so it stops printing float residue by @danielhanchen in #8820
- Give Unsloth Studio its first CUDA coverage, on a Kaggle T4 by @danielhanchen in #8489
- Studio: fix GGUF image-capability detection for API auto-switch and audio-only projectors by @Lyxot in #8807
- studio: attach youtube transcripts from pasted chat links by @mahiatlinux in #8648
- Studio: save a chat or reply to project sources by @NilayYadav in #8588
- fix(studio): keep a slow install alive and name what it is downloading by @Lyxot in #8805
- Studio: never start llama-server at native context on Metal by @danielhanchen in #8709
- Studio: stop an unreachable Hugging Face endpoint from stalling the backend by @Lyxot in #8799
- Studio: enforce the research browser regression harnesses by @alkinun in #8736
- Hand the LoRA to vLLM on TRL 1.x GRPO rollouts by @danielhanchen in #8701
- Add an extra llama-server arguments box to the model settings by @danielhanchen in #8702
- Studio: apply the provider metadata block to DNS aliases as well by @danielhanchen in #8782
- Revert "Desktop: ship a complete Linux AppImage (#8695)" by @wasimysaid in #8823
- Studio: verify the installed version after the update pass by @NilayYadav in #8505
- Revert "Studio: verify the installed version after the update pass" by @danielhanchen in #8824
- Offer the media pickers only what the host can run, and name the H3 speed gap by @danielhanchen in #8822
Full Changelog: v0.1.70-beta...v0.1.71-beta