Turn any text or vision LLM into a Jev-style decision model in Unsloth, with decision accuracy going from 30% to 80%. Train, test, export and serve decision models directly from Unsloth. Also included: native ComfyUI models, diffusion improvements and a better Browser in Desktop.
Highlights
- Turn any model into a Jev-style decision model. Accuracy 30% to 80%
- Load ComfyUI diffusion models natively in Unsloth
- Faster + more accurate diffusion with INT8 ConvRot and more
- Better Browser in Desktop with many bug fixes
- Sandboxing with Bwrap for Linux, Seatbelt for Mac and MXC for Windows
dt-demo.mp4
Decision models
- Train any text or vision LLM as a Jev-style decision model using QLoRA.
- Test trained models directly from the Decision API settings.
- Make decisions with confidence scores for every option.
- Export Clef models with Qwen3.5 backbones and Laya models to GGUF.
- Serve supported decision models through llama.cpp, including models that understand images.
- Save and resume smaller adapter and decision-head checkpoints.
- Guide at https://unsloth.ai/docs/basics/train-your-own-decision-model-with-unsloth
Diffusion + ComfyUI
- Run supported ComfyUI image and video models directly from Hugging Face.
- Unsloth now recognises ComfyUI checkpoints and local model folders automatically.
- Use your ComfyUI text encoders and VAEs in Unsloth.
- Run Krea-2, HunyuanImage-2.1 and Wan2.2 expert pairs, plus ComfyUI NVFP4 and MXFP8 models.
- Qwen-Image-2.1 now keeps more full-precision image detail with INT8 ConvRot enabled by default.
- Faster Qwen-Image-2.1 ConvRot generation on supported NVIDIA GPUs.
Training + performance
- Train Qwen3.5-35B-A3B up to 4.1x faster and Qwen3-30B-A3B up to 3.3x faster with QLoRA on A100 and RTX PRO 6000.
- Improved sample packing for gated-delta, Mamba2 and short-convolution models.
- Train prompt and completion message lists as one conversation.
- Vision datasets now keep each row's own question.
- Chat exports and training data now include the system prompt.
Browser + Desktop
- Ask about open pages in the Desktop Browser.
- Confirm Browser downloads and choose where files are saved.
- Reorder pinned pages in the sidebar like chats.
- Search continues past unusable results and can fall back to Wikipedia.
- Reply citations such as
[1]now open as links. - Pick, pin or unload RAG embedding models directly from the RAG menu.
Sandboxing
- Bwrap on Linux, Seatbelt on Mac and MXC on Windows sandbox code the model runs.
- View sandbox status and choose protection levels in Settings.
Download Unsloth Desktop
Unsloth Desktop is free and open source. Download it for:
| Platform | Link |
| Windows | Download |
| macOS | Download |
| Linux x64 / Ubuntu (deb) | Download |
| Linux ARM64 / Ubuntu 24.04+ (deb) | Download |
| Linux x64 (AppImage) | Download |
| Windows ARM64 | Download |
What's Changed
- Bump install.sh / install.ps1 pins to unsloth>=2026.10.1, unsloth-zoo>=2026.10.1 by @danielhanchen in #12869
- Studio: list embeddinggemma-2 first in the embedding model picker by @shimmyshimmer in #12870
- Repair three checks that went red on main with the 10-06 Studio merges by @danielhanchen in #12868
- Studio: run ComfyUI-format video quants on the int8 / fp8 runtimes by @danielhanchen in #12851
- Studio: free PyAV's per-thread scalers before a fork so preexec_fn spawns still exec by @danielhanchen in #12863
- Tests: give the setup.ps1 download progress pwsh its own startup cache by @danielhanchen in #12882
- Studio: fill the Hebrew and Swedish strings that left the strict i18n check red on main by @danielhanchen in #12881
- Baseline the eight unsloth-zoo 2026.10.1 findings after review by @danielhanchen in #12884
- Support every PEFT init_lora_weights option, with fast PiSSA and MiCA init by @Suchitra-idu in #6879
- Sandbox test: wait for the cache scan workers before counting them by @danielhanchen in #12896
- Studio: keep browser panel tooltips, toasts and menus visible over desktop web pages by @oobabooga in #12895
- Studio: continue searching past unusable results and add a Wikipedia fallback by @oobabooga in #12892
- Studio: list every Transcribe ASR model in Voice settings by @Etherll in #12898
- Frontend test: give the cold Vite SSR render in reasoning-source-render room on a loaded runner by @danielhanchen in #12903
- Run shell suites and Windows browser checks in parallel by @oobabooga in #12899
- Studio: add a New badge beside Audio in the sidebar by @Etherll in #12891
- Composer settings driver: poll the submitted list instead of reading it once after the key press by @danielhanchen in #12920
- Studio: support current native builds and preserve CPU asset selection by @oobabooga in #12902
- Studio: pick the quant of a GGUF dictation model in Voice settings by @Etherll in #12900
- fix(studio): stop a managed runtime when the client drops its stream by @goodmai in #12266
- Studio: train prompt/completion message lists as one conversation by @NilayYadav in #12910
- Studio: keep each row's own question when training on a vision dataset by @NilayYadav in #12909
- Studio: train transparent PNG and WebP images on white instead of black by @NilayYadav in #12908
- Use the requested max_seq_length for encoder embedding models by @NilayYadav in #12915
- Studio: show the LAN address on the API page when LAN access is on by @NilayYadav in #12906
- Studio: hide the negative prompt on image models that ignore it by @NilayYadav in #12914
- Keep the notebook and saved model when unsloth-run runs a URL by @NilayYadav in #12907
- Studio: drag pinned pages in the sidebar like chats by @shimmyshimmer in #12927
- Studio: Ask about this page on every page, desktop included by @shimmyshimmer in #12926
- Docker: allow unsloth_root_shim.py into the build context by @danielhanchen in #12929
- Tauri transport test: start the late backend after the old ladder is spent, not at 3s by @danielhanchen in #12930
- Studio: simpler icons for the audio pages, one audio icon in the Library by @Etherll in #12890
- Desktop contract: count #12927's scaled sidebar row by @danielhanchen in #12931
- fix(studio): preserve skill mention intent and denied preload context by @wasimysaid in #12841
- Studio: embedding model picker, pins and eject in the RAG menu by @shimmyshimmer in #12875
- install-kernels: skip mamba_ssm below sm80 by @danielhanchen in #12921
- Gemma-4 26B/31B: train with the empty thought channel on non-thinking turns by @danielhanchen in #12867
- Studio: try a decision from the Decision API settings by @NilayYadav in #12916
- Studio: confirm browser downloads, choose the download folder by @shimmyshimmer in #12832
- Studio: default Qwen-Image-2.1 int8 to the hosted ConvRot file, with shared rotations by @danielhanchen in #12874
- Studio: recognise ComfyUI checkpoints by name and header, and list ComfyUI model folders by @danielhanchen in #12878
- studio: install the gstreamer recording plugins with the deb package by @mahiatlinux in #12905
- Studio: turn [1]-style citations in replies into links by @NilayYadav in #12912
- Studio: include the chat's system prompt in exports and training data by @NilayYadav in #12913
- studio: guard project submits during IME composition by @mahiatlinux in #12924
- studio: scope speech download cancellation to its attempt by @mahiatlinux in #12925
- studio: keep general settings from restoring stale tokens by @mahiatlinux in #12922
- Studio: show when Windows MXC already runs in the built-in container by @danielhanchen in #12938
- Studio: key the diffusion compile cache by the loaded quant variant by @danielhanchen in #12887
- Studio: rebuild an image / video GGUF from the cached copy when only its header changed by @danielhanchen in #12928
- Scope UNSLOTH_HIGH_PRECISION_LAYERNORM to the load that sets it by @danielhanchen in #12873
- fix(studio): honor llama.cpp update dismissal and snooze by @wasimysaid in #12934
- Keep flash attention from reading Qwen3.5 mRoPE position ids as packed sequences by @danielhanchen in #12856
- Studio: load Wan2.2-A14B expert pairs and tell LTX-2.3 distilled from dev by its weights by @danielhanchen in #12872
- Train a decision model from a plain language model by @danielhanchen in #12772
- Train any text or vision LLM as a Clef decision model from Studio, with FastDecisionModel.predict and adapter saves by @danielhanchen in #12876
- Studio: install transformers releases needing hub >= 1.31, and transformers main after consent by @danielhanchen in #12871
- Correct sample packing for hybrid models (gated-delta, Mamba2, short conv) by @kfastino in #9812
- Studio: read replies aloud without markdown symbols by @AzizMuminov in #12598
- Studio: finish an update with the setup script it installed by @Etherll in #12897
- Serve decision models through llama.cpp in Studio, and export them to GGUF by @danielhanchen in #12939
- studio: fix live monitor background in light mode by @mahiatlinux in #12904
- Studio: show the hosted text encoder download in image load progress by @Etherll in #12894
- Studio: update the audio.cpp runtime from the in-app update by @Etherll in #12893
- Settings contract: read the embedding picker's stacking classes inside cn() too by @danielhanchen in #12945
- install-kernels: install mamba_ssm on sm75 with Triton 3.4+ by @danielhanchen in #12944
- Studio: load Wan2.2 hosted FP8 / INT8 files, and hosted files under low_vram by @danielhanchen in #12888
- Studio: load a single .safetensors DiT from any Hugging Face repo by @danielhanchen in #12879
- fix(studio): remember per-GPU layer ratios by @Imagineer99 in #12774
- Studio: load ComfyUI Krea-2 and HunyuanImage-2.1 single-file DiTs by @danielhanchen in #12885
- Studio: load ComfyUI text encoder and VAE files beside a single-file DiT by @danielhanchen in #12883
- Studio: load ComfyUI nvfp4 and mxfp8 DiT single files by @danielhanchen in #12877
- Studio: keep $PATH, $HOME and other shell variables as text, not maths by @NilayYadav in #12911
- Studio: price the context meter off a tool loop's final pass, not the whole turn's completions by @sumingwang233 in #12889
- Studio: open Try a decision with the trained model after Use in Decision API by @NilayYadav in #12953
- Studio: harden browser downloads after #12832 by @danielhanchen in #12943
New Contributors
- @kfastino made their first contribution in #9812
- @sumingwang233 made their first contribution in #12889
Full Changelog: v0.1.903-beta...v0.1.904-beta