LM Studio: the full local AI workstation — hub, chat, server, CLI
Install LM Studio, download a model from the Hub, chat in the app, and serve it with the local OpenAI-compatible API on port 1234. Plus the lms CLI that does it all from the terminal.
lms command line for doing all of it without touching a mouse.What LM Studio actually is
LM Studio is the most complete “local AI workstation” out there. One app, four tools:
- A model Hub — browse, compare quantizations, and download models (GGUF files) without leaving the app.
- A chat interface — load any model you have and talk to it, with presets that control sampling.
- A local server — an OpenAI-compatible API on
http://127.0.0.1:1234, so the same apps that point at OpenAI can point at your machine. - The
lmsCLI — every one of those actions available as a command, for scripts and pipelines.
If Ollama is the “3-command” option, LM Studio is the one that also gives you a window to click in — which is exactly what a lot of people actually want.
Step 1 — Install
Windows (installer or winget):
winget install --id ElementLabs.LMStudio
macOS (Homebrew or direct download):
brew install --cask lm-studio
The publisher is Element Labs (the team behind the LLaMA-Factory ecosystem tooling). Launch the app — it’s a normal desktop program, and the first time it opens it asks for basic settings (theme, model folder).
Heads-up: recent versions ship under the app name Bionic (you may see Bionic.exe in your process list or the folder %LOCALAPPDATA%\Programs\Bionic). Same app, same lms CLI, same port. If you're searching for "LM Studio" in the task manager, search for "Bionic".Step 2 — Get a model (the Hub)
Left sidebar → Hub → search for a model — e.g. Qwen3 4B. Each model card shows the available quantizations with their file sizes. Pick Q4_K_M: it’s the sweet spot between quality and size for a first run (~2.5 GB for a 4B model).
Two things worth knowing:
- The Hub downloads GGUF files — the same format Ollama and llama.cpp use, so models are portable between all three. What a GGUF is →
- If a model isn’t in the Hub, the CLI accepts a Hugging Face link directly (below). The Hub and Hugging Face are two doors into the same room.
Step 3 — Chat with it
Left sidebar → My Models → click the model → Chat. Load it in memory (a few seconds for a 4B) and type. The preset selector at the top controls sampling — temperature, top-p, max tokens. You don’t need to touch it to have a conversation.
That’s the GUI part. Now the part that makes it infrastructure.
Step 4 — The local server (port 1234)
LM Studio exposes an OpenAI-compatible API. Two ways to start the server:
- In the app: the Server tab — pick the model and quantization, click Start Server.
- From the terminal:
$ lms server start
$ lms server status
The server is running.
Check it’s alive and see what it serves:
$ curl http://127.0.0.1:1234/v1/models
{
"data": [
{ "id": "qwen3-4b", "object": "model" }
],
"object": "list"
}
And a real completion, OpenAI format:
$ curl http://127.0.0.1:1234/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"qwen3-4b","messages":[{"role":"user","content":"Say hi"}]}'
Point any OpenAI SDK at base_url = "http://127.0.0.1:1234/v1" and your code runs on the model in your machine instead of in a datacenter. Why that matters →
reasoning_tokens. Turn thinking off per-request with "chat_template_kwargs": {"enable_thinking": false} — or raise max_tokens if you want the reasoning kept (it comes back in a reasoning field).The lms CLI (the part developers love)
The lms binary ships with the app and is the fastest way to script anything:
| Command | What it does |
|---|---|
lms ls | List models on disk, with sizes |
lms ps | What’s loaded in memory right now |
lms get <name> | Download a model — lms get qwen/qwen3-4b, a quantization with @ (...@q8_0), or a full Hugging Face URL |
lms chat <model> | Chat from the terminal |
lms import <file.gguf> | Import a GGUF you already have on disk (-y to skip the prompt, --hard-link for a zero-copy import when on the same drive) |
lms server start / stop / status | Control the local API server |
A realistic workflow:
$ lms get qwen/qwen3-4b@q4_k_m # 1. download (or: lms import path\to\file.gguf)
$ lms chat qwen3-4b # 2. talk to it
$ lms server start # 3. expose it on :1234
The import flag worth memorizing is --hard-link: on the same volume it makes the existing file available to LM Studio without copying a single byte — a 2.5 GB model import takes under a second.
What to expect from your hardware
| Model | Download | Roughly loaded in RAM/VRAM | Good on |
|---|---|---|---|
| 0.5–4B (Q4) | 0.4–2.6 GB | 2–8 GB | Anything from a 2019 laptop |
| 7–9B (Q4) | 4.7–6.6 GB | 8–12 GB | 16 GB RAM / 8 GB VRAM |
| 27B (Q4) | ~17 GB | 20+ GB | 32 GB RAM or a big GPU |
Rule of thumb: file size × ~1.5–2 ≈ what you need in RAM/VRAM, context included. Quantization is why this fits at all →
Ollama, llama.cpp or LM Studio?
All three run the same GGUF files on the same llama.cpp engine under the hood. The difference is the surface:
| Ollama | llama.cpp | LM Studio | |
|---|---|---|---|
| Install | 1 command | download binaries / build | desktop app + CLI |
| Get models | ollama pull | manual GGUF | Hub (GUI) or lms get |
| Chat UI | none (terminal) | optional web UI | built-in, polished |
| Server | :11434 | :8080 (llama-server) | :1234 |
| Best for | scripts, servers, minimalism | maximum control, benchmarks | people who want it all in one |
If you’re still choosing, the short answer: LM Studio to explore, Ollama to automate.
Where this leaves you
You have models, a chat, a server, and a CLI. The natural next step is the thing local AI is really for: letting an agent do things on your machine with a local model behind it.