AI 101

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.

By the end of this page, you'll have LM Studio running: a model downloaded through its built-in Hub, a conversation in the app, a local API on port 1234 that any OpenAI-compatible app can talk to, and the 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:

  1. A model Hub — browse, compare quantizations, and download models (GGUF files) without leaving the app.
  2. A chat interface — load any model you have and talk to it, with presets that control sampling.
  3. 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.
  4. The lms CLI — 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 →

Think mode: Qwen 3 models "think" before answering, and by default they can spend your whole token budget on that. You'll see an empty answer with all tokens in 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:

CommandWhat it does
lms lsList models on disk, with sizes
lms psWhat’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 / statusControl 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

ModelDownloadRoughly loaded in RAM/VRAMGood on
0.5–4B (Q4)0.4–2.6 GB2–8 GBAnything from a 2019 laptop
7–9B (Q4)4.7–6.6 GB8–12 GB16 GB RAM / 8 GB VRAM
27B (Q4)~17 GB20+ GB32 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:

Ollamallama.cppLM Studio
Install1 commanddownload binaries / builddesktop app + CLI
Get modelsollama pullmanual GGUFHub (GUI) or lms get
Chat UInone (terminal)optional web UIbuilt-in, polished
Server:11434:8080 (llama-server):1234
Best forscripts, servers, minimalismmaximum control, benchmarkspeople 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.

Next in the local track: [Hermes Agent — a local AI agent that actually works on your machine →](/tutorials/local/hermes/)