Open-source AI toolingDocker deep dive
Unsloth · run, tune, deploy

Make local models less painful.

A beginner-friendly tour of Unsloth, its model-running and fine-tuning surfaces, and the Docker path that turns a GPU machine into a private AI workstation.

Repository + installation guideSeptember 2026 source snapshot
01 · Plain-English summary

Think of Unsloth as a shortcut from “I have a model idea” to “I can run, adapt, and serve it.”

Run locally

Chat with supported models on your own machine, with model files and workflows kept close to your data.

Train with less friction

Use fine-tuning and reinforcement-learning workflows without hand-assembling the whole Python stack.

Connect your agents

Expose a local model through compatible APIs, MCP, and integrations for tools such as Codex and Claude Code.

The useful idea is not “one more model UI”. It is a local model workbench that covers the loop: load → adapt → evaluate → export → serve.
Sources: README features · “Run and train LLMs…”; Unsloth Start · “connects Claude Code, Codex and other agents to local models”.
02 · Why it matters

Local model work is usually blocked by setup, not imagination.

3surfaces

Desktop for the easiest entry point, Studio for a browser UI, and Core for code-first control.

1container

The Docker image can bundle the training stack, Studio, JupyterLab, notebooks, and prebuilt llama.cpp.

Shorter feedback loops

Try a model, a quantisation, a dataset, or a prompt without rebuilding your environment each time.

More control over data

Mounted folders and local caches can keep project files and model downloads in an environment you control.

More pathways to production

Export formats and an OpenAI-compatible API create a bridge from experiment to application.

Source: README installation section · “Unsloth can be used in three ways…”; Docker image README · “Every image carries the training stack… JupyterLab… and prebuilt llama.cpp”.
03 · Where it fits

Useful when your bottleneck is iteration, privacy, or a specialised model behaviour.

01 / LOCAL RAG

Private research assistant

Index local papers, product documents, or lab notes, then query them without pushing every file to a hosted API.

02 / FINE-TUNE

Domain voice

Adapt a small open model to a consistent style, schema, or workflow with LoRA or QLoRA.

03 / AGENTS

Local coding copilot

Give Codex, Claude Code, Hermes, or another agent a local model endpoint for lower-cost experiments.

04 / EVALUATION

Repeatable model tests

Run the same prompts, datasets, and checks across quantised or fine-tuned variants.

A practical test

If you can describe the task as “I want to run this model repeatedly against my own files, prompts, or eval set”, Unsloth is worth investigating.

Sources: README features · “Search & RAG”, “Agents & Tools”, “Export & Deploy”; use-case examples are recommendations derived from those capabilities.
02
Deep dive

The stack is a set of surfaces around one model workflow.

Start with the surface that matches your tolerance for configuration.

04 · Product shape

Three ways in. One underlying ecosystem.

Desktop

The “just let me try it” path

Native app downloads for Windows, macOS, and Linux. The repository calls Desktop the recommended install surface.

Studio

The browser workbench

Run chat, fine-tuning, image generation, notebooks, and model workflows through a web UI.

Core

The code-first layer

Install the Python package into an environment you control when notebooks, scripts, or application code are the centre of gravity.

Inputs
ModelsDatasetsPromptsTools / MCP
Work
RunFine-tuneEvaluateExport
Outputs
GGUFFP8 / NVFP4API endpointAgent connection
Source: README install section · Desktop, Studio, and Core descriptions; README features · supported workflows and export formats.
05 · Mental model

Docker gives the workbench a repeatable home.

Your hostGPU, project files, Docker
→
ContainerCUDA / PyTorch / Unsloth
→
SurfacesStudio · Jupyter · API

Mounts are the boundary

$PWD maps to /workspace/host. The Hugging Face cache avoids repeated model downloads. A named Studio volume retains accounts, chats, outputs, exports, and runs.

GPU access is explicit

The NVIDIA quickstart uses --gpus all. On Linux, Docker and NVIDIA Container Toolkit are prerequisites; the guide lists NVIDIA driver 570.26 or newer.

Sources: Docker guide · “the three -v flags keep your files, models and Unsloth Studio data”; “Requirement: NVIDIA driver 570.26 or newer”; Docker image README · volume semantics.
06 · What it optimises

Unsloth’s value proposition is efficient experimentation.

2×faster

The README claims fine-tuning can be 2× faster with 70% less VRAM and “no accuracy loss”. Treat this as a project claim, not a universal guarantee.

70%less VRAM

Actual gains depend on model, hardware, sequence length, quantisation, batch size, kernels, and the evaluation you run.

Parameter-efficient

LoRA and QLoRA update a smaller set of parameters, which can make adaptation cheaper and easier to iterate.

Reinforcement learning

The repository lists RL methods including GRPO and DPO alongside supervised fine-tuning.

Deployment-minded

Export pathways include GGUF, NVFP4, FP8, and other formats listed by the project.

Source: README Train & Deploy · “2× faster with 70% less VRAM with no accuracy loss”; the caveat about workload dependence is an interpretation and recommendation.
07 · Agents and serving

A local model becomes more useful when other tools can call it.

One-command agent connection

Unsloth Start provides a guided path for connecting local models to several coding agents.

terminal
# example from the repository README
unsloth start claude \
  --model unsloth/Qwen3.8-27B-GGUF:UD-Q4_K_XL

OpenAI-compatible endpoint

Serve a local model behind an API shape that many existing clients already understand. That can reduce application-side rewiring while you compare local and hosted models.

CodexClaude CodeMCPOpenAI-compatible API

Important boundary

Tool calling changes the risk profile. A local model can still run code or access mounted files if you give the surrounding system those capabilities. Keep tool permissions and mounts narrow, especially on shared or remote machines.

Sources: README Unsloth Start · agent commands; Docker security notes · “Studio’s server-side tools are on by default” and mounted-folder caution.
08 · Docker mental model

Ports expose services. Volumes preserve state. GPU flags unlock acceleration.

8000Studio

Browser-based Unsloth Studio.

8888JupyterLab

Notebook environment and a full shell when logged in.

22SSH

Off by default; key-only when explicitly enabled and mapped.

State that should survive

  • Project folder → /workspace/host
  • HF cache → /workspace/.cache/huggingface
  • Studio named volume → /opt/unsloth-studio

State you should not assume

  • Published ports are private by default
  • A generated Studio password is permanent
  • A stopped container means data is deleted
Sources: Docker guide · ports, passwords, mounts, and SSH; Docker image README · service and volume table.
03
Implementation guide

Get from zero to a working local Studio without losing the plot.

The happy path is short. The safety checks are part of the path.

09 · Step 1

Choose the surface and hardware path first.

Easy start

Desktop

Use the native app when you want the smallest setup surface and don’t need a containerised workflow.

Best for: first experiments, local chat, quick demos.

Recommended here

NVIDIA Docker

Use unsloth/unsloth when you want Studio, JupyterLab, notebooks, caches, and a reproducible GPU environment.

Best for: repeatable workstations, remote GPU boxes, agent experiments.

Code-first

Core

Use the Python package when your notebooks, scripts, or application code are the product.

Best for: pipelines, CI, custom training loops.

Hardware reality check

The Docker guide’s main quickstart is NVIDIA. AMD uses a separate ROCm image and native Linux device-node flags. CPU mode can cover Jupyter, GGUF tooling, and llama.cpp GGUF Studio chat, but not loading Unsloth models or training.

Sources: README install options; Docker guide · AMD and CPU notes.
10 · Step 2 · NVIDIA Linux / WSL

Start the container from the project folder.

bash · quickstart
docker run -d --name unsloth --gpus all --ipc=host \
  --ulimit memlock=-1 --ulimit stack=67108864 \
  -p 8000:8000 -p 8888:8888 \
  -e JUPYTER_PASSWORD="choose-a-jupyter-password" \
  -v "$PWD":/workspace/host \
  -v "$HOME/.cache/huggingface":/workspace/.cache/huggingface \
  -v unsloth-studio:/opt/unsloth-studio \
  unsloth/unsloth

Run it from

Your project directory. That is what becomes /workspace/host.

Keep the volume

Do not replace the named Studio volume with a macOS or Windows host folder.

Read the logs

They include readiness links and first-run password details.

Source: Docker quickstart · command, project-folder mapping, flags, password and volume guidance. The password value above is intentionally a placeholder.
11 · Step 3

Start, inspect, sign in.

Start the container

For a stopped container, run docker start unsloth.

Follow the startup logs

Run docker logs -f unsloth. Ctrl-C stops log following, not the container.

Open Studio

Visit http://localhost:8000 and sign in as unsloth. On first setup, change the generated Studio password.

Choose a model

Use Select model, search the Hugging Face Hub, and choose a quantisation that fits available RAM and VRAM. Avoid variants marked OOM.

Why the password change matters

The guide says Studio shuts down after an hour if the generated first-run password isn’t changed. A reused Studio volume keeps the password already stored on it.

Source: Studio Setup and Chat with a model · start, logs, sign-in, model selection, and password behaviour.
12 · Step 4

Make the environment recoverable before you rely on it.

Persistence recipe

  • Keep the named unsloth-studio volume.
  • Keep your host Hugging Face cache mounted.
  • Keep project files in a versioned host folder.
  • Use explicit passwords for unattended or remote starts.

Password recovery

docker exec unsloth unsloth studio reset-password \
  --username unsloth

The guide says this signs out existing sessions and revokes API keys. No restart is needed.

Update

Pull a new image tag to update the bundled stack, or use the in-container Studio update command where appropriate.

Stop cleanly

Give training time to save a checkpoint on stop. The guide documents a longer Docker stop timeout for this.

Delete intentionally

docker rm -f unsloth deletes the container, but named volumes and mounted caches can survive it.

Sources: Docker guide · password reset, persistence, checkpoint and container lifecycle notes; Docker image README · update and volume details.
13 · Step 5 · Remote access

Remote access is powerful because it is also an exposure decision.

Local-only

Bind ports to 127.0.0.1 and use an SSH tunnel. Good default for a private GPU host.

Cloudflare HTTPS

Use UNSLOTH_STUDIO_SECURE=1 for a public HTTPS link, then protect it with a strong password.

Raw published ports

The guide warns that -p 8000:8000 and -p 8888:8888 publish on every interface. JupyterLab is a full shell.

ssh tunnel pattern
ssh -L 8000:localhost:8000 \
    -L 8888:localhost:8888 user@your-server

Tool and mount boundary

Studio tools are on by default and can run commands inside the container. Mount only folders you’re comfortable granting to the container, and avoid exposing plain HTTP directly to the internet.

Source: Docker Security Notes · published ports, JupyterLab shell, server-side tools, and mounted-folder guidance.
14 · Step 6 · Platform branches

The command changes with the hardware. Don’t cargo-cult the NVIDIA path.

Windows

Docker Desktop + WSL 2

Install Docker Desktop and a current NVIDIA Windows driver, update WSL, and enable the WSL 2 based engine.

No separate NVIDIA Container Toolkit install is required on Windows according to the guide.

AMD

ROCm image

Use unsloth/unsloth-rocm with Linux device nodes such as /dev/kfd and /dev/dri.

The image carries the training stack only, with no Studio or JupyterLab.

CPU

Limited mode

Set UNSLOTH_ALLOW_CPU=1 when you need Jupyter, GGUF tooling, or llama.cpp GGUF Studio chat without a GPU.

Training and loading Unsloth models still require a GPU.

Validation habit

After launch, verify the container can see the expected accelerator before debugging model code. For NVIDIA, the guide suggests checking with docker exec unsloth nvidia-smi.

Source: Docker guide · Windows, AMD, CPU, and GPU troubleshooting branches.
15 · Step 7 · Validation

Declare “done” with a small proof, not a feeling.

Service check

Studio loads at the expected host port and you can sign in.

GPU check

The container sees the intended GPU, and the runtime reports the expected CUDA availability.

Persistence check

Download a small model, restart the container, and confirm the model and Studio account remain available.

Workflow check

Run one prompt, one notebook cell, and one tiny evaluation or export. Record the model, quantisation, hardware, and result.

Port collision

Change the host side, for example -p 8001:8000, then open the matching host URL.

OOM

Unload the Studio model or stop the notebook kernel. Studio and JupyterLab share the same GPU.

Source: Docker guide troubleshooting and usage · GPU checks, port allocation, OOM guidance, and shared-GPU note; validation checklist is a recommendation.
16 · Applying it to real work

Use Unsloth as a component inside a larger product loop.

FlavourMind

Use local models for document extraction, research-note synthesis, or a deliberately offline prototype. Keep provenance and evaluation outside the model.

RAGstructured outputgolden set

VAI Santé showcase

Use Unsloth to demonstrate a local model path, while keeping the showcase explicit about limitations, provenance, and non-clinical status.

privacy-firsttraceabilityevals

Kingdom of Hype

Prototype NPC dialogue, narrative variants, or crisis responses locally, then compare model behaviour with a small, curated test set.

NPCsbranching narrativelatency

The product lesson

Unsloth can lower the cost of trying model ideas. It doesn’t replace the product decisions: what to measure, what data is allowed, which failures matter, and when a local model is good enough.

Sources: README features · local models, RAG, agents, and deployment; project examples are recommendations tailored to the user’s stated projects.
17 · Limitations and evidence

Fast setup doesn’t remove the hard parts.

Hardware still matters

GPU memory, driver versions, CUDA/ROCm compatibility, quantisation choice, and model size determine what “local” means in practice.

Performance claims need a baseline

Measure your own workload. Report hardware, model, batch size, sequence length, quantisation, wall-clock time, VRAM, and quality metrics.

Security is configuration-dependent

Published ports, JupyterLab access, server-side tools, root execution, and broad mounts can turn a convenient box into a high-impact target.

Licensing is layered

The Core project metadata identifies Apache-2.0, while the Studio code in the repository is separately marked AGPL-3.0. Review the relevant licence before redistributing or embedding.

Use the deck to understand the system. Use the repository, current docs, and your own measurements to make the final engineering decision.
Sources: pyproject.toml · Core metadata licence; Studio licence; Docker security notes.
18 · Takeaways

Start small. Keep the boundary visible.

01Choose a surface

Desktop for speed, Studio for a workbench, Core for code.

02Prove the loop

Run one model, one prompt, one notebook, and one evaluation before scaling up.

03Protect the box

Use narrow mounts, deliberate ports, strong passwords, and a remote-access pattern you understand.

Recommended first experiment

Launch the NVIDIA Docker path on a disposable project folder, run a small local model, connect one agent or API client, and write down the quality/latency/VRAM trade-off. That gives you a real baseline in one session.

Sources: Unsloth repository · Docker installation guide. The recommended experiment is a practical recommendation.
19 · Source notes

Read the current source before you run the command.

Primary sources

Repository snapshot

Inspected from the repository’s main branch on 17 September 2026. The local checkout reported commit 9ace1ed, “Stop the denied llama.cpp cache recovery littering, and say what Windows allows”.

Web documentation and repository content can change. Re-check the live source, especially driver floors, image tags, model names, and security defaults.

What this deck does not claim

It doesn’t claim to have run Unsloth, validated a GPU path, benchmarked a model, or verified a particular model’s quality. It is a source-grounded explainer and implementation guide.

Prepared from the linked primary sources. All quoted or consequential claims in this deck carry a source note on the relevant slide.
That’s the loop

Run it. Measure it. Keep the boundary honest.

Unsloth is most interesting when it turns local model work into a repeatable product habit.

Unsloth deep diveShareable HTML deck