Model or dataset
unslothai/unsloth avatar
unslothai/unsloth

Unsloth: a desktop app for local training and inference, and how to install it

Unsloth is a local UI for training and running Gemma 4, Qwen3.6, DeepSeek, Kimi, GLM and other models.

77,025 stars7,083 forksPythonApache-2.0

At a glance

What is it?
Unsloth packages local model training and running into a desktop app, a web UI, and a Python core. It is Apache-2.0 and ships prebuilt installers, so the main decision is which of the three surfaces fits your machine.
Who is it for?
Adopt Unsloth if you want to fine-tune or run models on your own hardware and prefer a desktop app over assembling a Python stack, and if your GPU is NVIDIA, AMD, Intel or Vulkan-capable. Skip it if you need a stable version number; the current releases are beta builds such as v0.1.804-beta, and the README documents no rollback path.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Unsloth is for, and who it is aimed at

Unsloth is a local UI for training and running models. The README describes it as "the first desktop app to run and train models," and lists Gemma 4, Qwen3.8, Kimi K3, DeepSeek-V4, MiniMax-H3 and Muse Glimmer among the models it covers. The audience is anyone with a GPU who wants to fine-tune or serve a model without building the training stack by hand: the README claims fine-tuning runs 2x faster with 70% less VRAM and "no accuracy loss," a claim it links to a blog post rather than a reproducible benchmark. Treat that as a vendor claim, not a measured result.

The scope is wider than fine-tuning. The feature list covers running and training LLMs, diffusion, embedding and audio models; connecting local models to Claude Code, Codex and MCP; web search, deep research, auto-compaction and RAG; image and video diffusion; LAN and remote access; and an OpenAI compatible API. That breadth is the project's main selling point and also the reason a first-time user should pick one surface and ignore the rest until it works.

The repository is not archived, and the last push was on 2026-08-27, which is recent enough that the codebase is moving. The three most recent releases are all tagged beta: v0.1.804-beta on 2026-08-27, and v0.1.803-beta and v0.1.802-beta on 2026-08-25. Anyone who needs a frozen dependency set should account for that cadence before adopting.

Desktop, Studio and Core: three surfaces over one codebase

The README splits Unsloth into three ways to use it. Unsloth Desktop is the native app and is marked recommended. Unsloth Studio is the web UI, launched with a CLI command. Unsloth Core is the code-based version. The same repository holds all three: the top level contains cli.py, unsloth-cli.py, the unsloth/ package, an unsloth_cli/ directory and a studio/ directory, with a docker/ folder alongside them.

pyproject.toml shows how the Python side is assembled. The distribution is named unsloth, requires Python >=3.9 and <3.15, and declares a console script entry point: unsloth = "unsloth_cli:app". The base dependencies are deliberately thin: typer, rich, pydantic, pyyaml, nest-asyncio, huggingface-hub and structlog, plus click. Two comments in the file explain why, and they are worth reading because they describe a real packaging constraint. Every CLI command imports studio.backend.*, which reaches structlog at module level, so structlog is a required base dependency even for commands that have nothing to do with the server. Similarly, unsloth_cli/__init__.py reaches click through commands/start.py, so click is required after typer 0.27 dropped it as a transitive dependency. The rest of the server stack lives in the studio extra.

That split matters when you install from source rather than using an installer. Installing the bare package gets you the CLI and its dependencies, not the full Studio server, because the heavier pieces are gated behind the studio extra. The README does not spell this out; pyproject.toml does.

How to install Unsloth and run a first model

The README offers prebuilt downloads before anything else. Windows gets an .exe, macOS a .dmg, and Linux either a .deb or an AppImage, all linked from the latest GitHub release or from unsloth.ai/download. If you would rather not use the installers, the README gives a one-line script for macOS, Linux and WSL, which fetches and runs install.sh:

bash
curl -fsSL https://unsloth.ai/install.sh | sh

On Windows the equivalent is a PowerShell one-liner that downloads and executes install.ps1:

powershell
irm https://unsloth.ai/install.ps1 | iex

Both scripts live at the top level of the repository as install.sh and install.ps1, so you can read them before running them, which is the sensible thing to do with any curl-to-shell installer.

After installing, the web UI is started with the studio subcommand. Running it with no arguments brings up Studio locally:

bash
unsloth studio

If you need HTTPS, the README documents a --secure flag that creates a free Cloudflare link, which it says can be reached globally, including from a phone:

bash
unsloth studio --secure

There is also a Docker route. The README points at the unsloth/unsloth image on Docker Hub and gives this invocation, which maps Jupyter on 8888, the API on 8000 and SSH on 2222, mounts a work directory, and requests all GPUs:

bash
docker run -d -e JUPYTER_PASSWORD="mypassword" \
  -p 8888:8888 -p 8000:8000 -p 2222:22 \
  -v $(pwd)/work:/workspace/work \
  --gpus all \
  unsloth/unsloth

Once something is running, the shortest path to a real result is Unsloth Start, which connects an agent to a local model in one command. The README's example pulls a Qwen3.8 GGUF build:

bash
unsloth start claude --model unsloth/Qwen3.8-27B-GGUF:UD-Q4_K_XL

The same pattern covers other agents: unsloth start codex, unsloth start hermes, unsloth start openclaw and unsloth start opencode. The README does not document what output the command prints on success, so the first thing to check is that your agent connects and that the model identifier resolves.

Remote access defaults that deserve a second look

The LAN and remote access section is the one place where the README raises its own warning. It states that server-side tools are on by default, tells you to keep your password safe, and suggests --disable-tools when exposing Unsloth. That is an unusual thing for a project to flag so plainly, and it should shape how you deploy. If you run unsloth studio --secure to get a public Cloudflare link, you are exposing a server whose tool execution is enabled unless you turn it off.

The README also notes that -H 0.0.0.0 and different ports work with the studio command, which is the standard way to bind a local service to every interface. Binding to 0.0.0.0 on a laptop that joins untrusted networks is a different risk profile from binding to localhost, and the README does not walk through that distinction. The Docker example compounds this: it publishes three ports and sets a Jupyter password through the JUPYTER_PASSWORD environment variable, so the container's security depends on a password you choose at run time.

None of this is a defect in the software. It is a deployment decision the documentation leaves to you, and the README's own warning is the clearest signal in the project's documentation that you should make it deliberately rather than by default.

Where Unsloth is the wrong tool

The clearest limitation is version stability. Every release in the recent list carries a -beta suffix, and two of the three were published on the same day, 2026-08-25, an hour and a half apart. That is a fast patch cadence, which is good for bug fixes and bad for anyone pinning a version in a reproducible pipeline. The README does not document a rollback procedure, and it does not describe a long-term support channel. If your team needs a version that stays put for a quarter, this project's release pattern works against you.

The second limitation is hardware. The README says Unsloth works on Windows, Linux, WSL and macOS, and supports multi-GPU setups with NVIDIA, AMD, Intel GPUs, CPUs and the Vulkan backend. That is broad, but it is a list of supported targets, not a guarantee for a specific card or driver combination. The README does not publish a minimum VRAM figure per model, and the 70% VRAM reduction claim is relative to whatever baseline the linked blog post used. If you are choosing a machine for this, the documentation does not give you a number to size against.

The third is scope. If all you want is to chat with a quantized model on a laptop, the training, dataset-building, export and RAG machinery is weight you are not using, and the tool-execution defaults described above are surface area you would have to close off. A project whose README warns you to disable tools before exposing it is not the obvious pick for a single-purpose local chat endpoint.

Unsloth compared with Ollama

The most common comparison for Unsloth is Ollama, and the difference is in what the two are built around. Ollama's focus is running models locally behind a simple interface. Unsloth's README is organized around both running and training, with fine-tuning described as the headline capability: LoRA, QLoRA, full fine tuning, pretraining, RL, GRPO, DPO and FP8 are all listed, along with export to GGUF, NVFP4 and FP8. Unsloth also documents an OpenAI compatible API, which is the feature that makes it substitutable for a running-only tool in an existing client.

The practical consequence is that Unsloth carries training dependencies that a running-only tool does not need, and its interface is a desktop app plus a web UI rather than a single daemon. The README even shows the two worlds touching: one of the search questions people ask is how to use Unsloth models in Ollama, and Unsloth's export path to GGUF is what makes that possible. If your goal is to fine-tune a model and then serve the result through Ollama, the split is reasonable. If your goal is only the second half, the first half is overhead.

Licence, upgrades and what to check before adopting

Unsloth is Apache-2.0, declared both in the repository and in pyproject.toml as license = "Apache-2.0". That is a permissive licence, and the repository carries a LICENSE file and a COPYING file at the top level. Apache-2.0 includes an explicit patent grant, which matters if you are embedding the code in a commercial product. This is a description of what the repository states, not legal advice; if the licence terms affect a product decision, have counsel read them.

The upgrade cost is the beta cadence. Three releases in the last days of August 2026, all labelled beta, with the newest adding model support for Qwen3.8-Flash-Next and GLM-5.3-Flash and the two before it adding auto compaction, LAN remote access and bug fixes. Following that pace means reading release notes before upgrading, and the README does not describe a downgrade path if an upgrade breaks your setup. The Python requirement is >=3.9 and <3.15, so an environment pinned to an older or newer interpreter will not install the package.

Before adopting, verify three things against your own machine rather than the README: that your GPU appears in the supported list, which of Desktop, Studio or Core you actually need, and whether server-side tools should be disabled for your network. The README answers the first two only in general terms and answers the third with an explicit warning.

Editorial conclusion

Adopt Unsloth if you want to fine-tune or run models on your own hardware and prefer a desktop app over assembling a Python stack, and if your GPU is NVIDIA, AMD, Intel or Vulkan-capable. Skip it if you need a stable version number; the current releases are beta builds such as v0.1.804-beta, and the README documents no rollback path. Before committing, check that your hardware appears in the supported list, decide between Desktop, Studio and Core, and read the tool-calling defaults under Remote HTTPS and LAN Access, because the README warns that server-side tools are on by default.

Frequently asked questions

What is Unsloth for?

It is a local UI for training and running models, covering LLMs, diffusion, embedding and audio models. The README also lists agents and tools, search and RAG, and export to formats such as GGUF, NVFP4 and FP8.

How do I install Unsloth?

The README points first at prebuilt desktop downloads for Windows, macOS and Linux, available from unsloth.ai/download or the latest GitHub release. Alternatively, macOS, Linux and WSL can run curl -fsSL https://unsloth.ai/install.sh | sh, and Windows can run irm https://unsloth.ai/install.ps1 | iex.

Is Unsloth AI free?

The repository is licensed Apache-2.0, and the README offers desktop downloads and install scripts without mentioning a paid tier. The README does not describe pricing for any hosted service, so cost beyond the licence and your own hardware is not documented.

How do I use Unsloth Studio?

After installing, the README starts the web UI with unsloth studio, and adds --secure for an HTTPS link through Cloudflare. It also documents -H 0.0.0.0 and alternate ports for binding.

How do I use Unsloth for fine tuning?

The README lists LoRA, QLoRA, full fine tuning, pretraining, RL, GRPO, DPO and FP8 as supported training modes, and claims 2x faster training with 70% less VRAM. It does not give a step-by-step fine-tuning walkthrough in the README itself; the documentation site is where those guides live.

How do I use Unsloth on Windows?

The README lists a Windows desktop .exe download and a PowerShell installer, irm https://unsloth.ai/install.ps1 | iex. Windows is named as a supported platform alongside Linux, WSL and macOS.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
For maintainers

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/unslothai-unsloth.svg)](https://hysenlabs.com/projects/unslothai-unsloth)
Community notes

Community notes