Local LLM Tools Comparison 2026: Ollama vs LM Studio vs llama.cpp vs vLLM vs Jan

As of August 2026, running a large language model on your own laptop or your own server is no longer a hobbyist’s weekend experiment. The company that can’t upload internal documents to a third-party API, the solo developer trying to shave hundreds of thousands of won — a few hundred dollars — off a monthly API bill, the engineer who wants a coding assistant that still works at 35,000 feet: they all end up at the same question. “So what do I actually run it with?” This is a local LLM tools comparison written to answer exactly that, using only data verified directly from each project’s official release and pricing pages on 2 August 2026.
Five tools realistically make the shortlist in this category: Ollama, LM Studio, llama.cpp, vLLM, and Jan. Even the GitHub star counts show how neatly these five have carved up the market. Queried straight from the GitHub API on 2 August 2026: Ollama 177,543, llama.cpp 122,385, vLLM 87,913, and Jan 43,808. (LM Studio shouldn’t be compared on stars at all — the app itself is closed source. All that’s public is the lms CLI and the SDK, at 5,138 stars.)
Three big things changed in this market in the first half of 2026. First, the “local-only means completely free” equation broke. Ollama now runs paid Pro/Max/Team subscriptions, and LM Studio sells metered cloud credits by the token. Second, MLX has effectively become the standard backend on Apple Silicon — Ollama (since 0.19), LM Studio, and Jan (since 0.7.7) have all adopted it. Third, everything is turning into an agent. Type nothing but ollama in 0.32.0 and an agent launches; LM Studio shipped a separate agent product called Bionic.
This guide covers all five tools across latest versions and licensing, measured benchmarks, pricing, hardware constraints, and final recommendations by user type — at length, without cutting corners. Chapter 6 in particular corrects six widely repeated claims that a lot of the material still circulating gets flatly wrong. The short version: 80% of this decision comes down to one question — are you the only user, or will several people hit it at once?
1. Executive Summary: The Five Big Local LLM Tools at a Glance, August 2026
For readers short on time, here are the core specs of all five compressed into a single table. Every version, price, and license below was verified directly against official sources on 2 August 2026.
📊 Head-to-Head Comparison of the Top 5 Local LLM Runners, August 2026
| Category | Ollama | LM Studio | llama.cpp | vLLM | Jan |
|---|---|---|---|---|---|
| Core design philosophy | #1 one-line CLI model launcher | #1 all-in-one GUI desktop, no terminal | #1 pure inference engine everything else is built on | #1 throughput for multi-user production serving | #1 open-source GUI + MCP agent |
| Latest version (2026-08-02) | v0.32.5 (27 July) | 0.4.20 | b10226 (2 August build) | v0.26.0 (25 July) | v0.8.4 (July) |
| License | MIT | App itself closed source / CLI & SDK MIT | MIT | Apache-2.0 | Apache 2.0 |
| GitHub stars | 177,543 (#1) | 5,138 (CLI only, not comparable) | 122,385 | 87,913 | 43,808 |
| Cost to run locally | Free, unlimited | Free (including at work) | Completely free | Completely free | Completely free |
| Paid tier? | Pro $20/mo plus other cloud plans | Cloud, metered per token | None | None | None |
| Interface | CLI-first (+ agent) | GUI-first (+ lms CLI) | Direct control of builds and flags | Server / Python API | GUI-first (+ Jan CLI) |
| OpenAI-compatible API | ✅ Default port 11434 | ✅ Built-in server | ✅ Default port 8080 | ✅ Standard | ✅ Port 1337 |
| Supported model formats | Own registry (GGUF lineage) + MLX | GGUF + MLX | GGUF (the original) | HF safetensors · FP8 · AWQ · GPTQ (GGUF is an experimental out-of-tree plugin) | GGUF + MLX |
| Concurrent serving | Parallel slots via OLLAMA_NUM_PARALLEL (default 1), no PagedAttention | Continuous batching (since 0.4.0) | Parallel decoding via -np | Strongest (PagedAttention) | Weak |
| Apple Silicon / MLX | ✅ (the MLX preview backend requires more than 32GB unified memory; below that it runs the existing Metal path) | ✅ (dual llama.cpp + MLX backends) | ✅ (Metal) | ❌ Separate vLLM-Metal project | ✅ (native MLX since 0.7.7) |
| Windows support | ✅ (including ARM64 CUDA) | ✅ | ✅ | ❌ Not on the official support list | ✅ |
| Biggest strength | Unmatched ecosystem and model registry | Visual quantization picker, usable on install | Widest backend coverage, densest feature set | Crushes everything on concurrent throughput | Fully open-source GUI + MCP |
| Biggest weakness | Paid cloud tiers blur the story | The app isn’t open source | Steep learning curve, you build it yourself | Mac and Windows effectively excluded | Smaller ecosystem |
| Best fit | Individual developers, rapid prototyping | Non-developers, GUI-preferring professionals | Engineers, squeezing low-spec hardware | Internal services, multi-user APIs | Open-source purists, agent experimenters |
The three rows to read first in this table are concurrent serving, Apple Silicon / MLX, and supported model formats. Nearly every tooling disaster I’ve seen in the wild starts with someone skipping those three lines: burning a day trying to install vLLM on a MacBook, or standing up an internal chatbot on stock Ollama settings and then asking why it’s so slow once concurrent requests climb into the dozens.
The supported model formats row deserves special attention, because it’s the single biggest lock-in factor in this category and almost every comparison leaves it out. Ollama, LM Studio, llama.cpp, and Jan all share the GGUF (+MLX) ecosystem — but vLLM is built around HF safetensors and friends (FP8, AWQ, GPTQ), and its GGUF support has been pulled out of the main codebase into the out-of-tree vllm-gguf-plugin. vLLM’s own documentation calls it “highly experimental and under-optimized,” and recommends taking the tokenizer from the base model rather than from the GGUF file. In practice that means the first four tools can pass model files back and forth freely, while a move to vLLM requires re-acquiring your entire model library.
2. Local LLM Runners Compared: A Deep Dive on Core Capabilities
Once you understand what each tool was built to be good at, the choice gets much easier. These five aren’t really competitors so much as different layers of the same stack. LM Studio and Jan both use llama.cpp as an internal engine, and Ollama itself started out on llama.cpp-lineage technology.
🦙 1) Ollama — #1 One-Line CLI Model Launcher
- Unbeatable distribution ergonomics:
ollama pullandollama runtake you from download to conversation in two commands. Ollama runs its own model registry, so you pull models by name the way you’d pull a Docker image, and it supports the GGUF format. At 177,543 GitHub stars it’s #1 of the five, and that ecosystem is its single biggest asset — most third-party tools ship Ollama integration by default. - Conversational agent (v0.32.0, 11 July 2026): Run the bare
ollamacommand now and you get an agent that can chat, code, search the web, and delegate tasks. One thing you must know, though: the default model isglm-5.2:cloud— a cloud model. This is the exact point where the “local-only tool” image and the actual default behaviour started to diverge. - MLX backend for Apple Silicon (v0.19, 30 March 2026): A large jump in Apple Silicon performance. But the official blog spells out the condition for the MLX preview release: “Please make sure you have a Mac with more than 32GB of unified memory.” This is easy to garble, so be precise: Ollama does not stop working on an 8GB or 16GB MacBook — you simply don’t get MLX acceleration. Below that threshold it runs the existing Metal (llama.cpp) path normally. Treat any write-up that restates this as “Ollama requires a 32GB+ Mac” as unreliable.
- Concurrency settings: Per the official FAQ,
OLLAMA_NUM_PARALLELis “the maximum number of parallel requests each model will process at the same time, default 1,” andOLLAMA_MAX_LOADED_MODELSdefaults to “3 × the number of GPUs.” So Ollama does expose llama.cpp’s parallel slot decoding — but the default of 1 means an untouched install effectively serializes requests. If your internal chatbot feels slow, the first move is this environment variable, not a different tool. - Deprecation warnings for older models (11 July 2026): Running the default tags for CodeLlama, Qwen2.5 and Qwen2.5-coder, Llama 3.x, Mistral, StarCoder, or DeepSeek-R1 now prints a deprecation warning. In other words, follow a 2024–2025 tutorial verbatim and you’ll get warnings, so if you’re starting today, look up the current model tags yourself.
- Steady engine work: Ollama supports speculative decoding with draft models and has optimized Qwen3 MoE decoding. Prompt caching was decoupled from context shifting, fixing a class of response-consistency bugs. v0.32.3 added CUDA support for Windows on ARM64, and v0.32.5 fixed an MLX Metal bug that was degrading output quality on NVFP4 models (Laguna in particular).
💠 2) LM Studio — #1 All-in-One GUI Desktop, No Terminal Required
- Two engines in one app: LM Studio bundles both the llama.cpp and MLX runtimes, and a model loads into whichever engine matches the format you downloaded (GGUF or MLX). Importantly, it does not sniff your hardware and switch engines for you. On a Mac you have to download an MLX-format model to end up on the MLX engine; pull a GGUF on that same Mac and it runs the llama.cpp path. Since the format you pick is the performance you get, it’s worth one deliberate thought at download time.
- Visual quantization picker: The GUI model browser lets you see and select quantization levels like Q4_K_M or Q8 with your eyes. For a beginner with no instinct for which build fits their RAM or VRAM, that one piece of UI is decisive. Every other tool makes you decode filenames to figure it out.
- Parallel requests via continuous batching (0.4.0, 28 January 2026): A major release that landed server deployment mode, parallel request handling, new REST endpoints, and a UI overhaul all at once. Among desktop GUI tools it’s now the furthest ahead on concurrency, which opens the door to using it as a small team server.
- The llmster headless daemon: A daemon component that runs as a server with no GUI, with install commands for Mac, Linux, and Windows. That makes a “set it up in the GUI, deploy it as a server” workflow possible.
- Bionic, the agent product (announced 16 July 2026): An AI agent built exclusively for open models, released as an early preview on macOS and Windows; on 27 July, Bionic added support for running Kimi K3. Note, though, that Bionic Pass pricing is still unannounced — the official page says only “coming soon.”
- Free for work use (8 July 2025): Before that date, using it at a company required a separate commercial license. Now you can use it at work for free with no form to fill out and no sales conversation. This is one of the least-known facts about the product.
⚙️ 3) llama.cpp — #1 Pure Inference Engine That Everything Else Is Built On
- The origin of GGUF: The whole ecosystem of quantizing 16-bit weights down to 8, 6, 5, 4, 3, and 2 bits started here. Some reports put quantization as low as roughly 1-bit territory, continuing to widen what ultra-low-spec devices can run. LM Studio, Jan, and Ollama all descend from this lineage.
- A project with no version numbers: Instead of semantic versioning it uses build tags (bXXXXX). As of 08:15 UTC on 2 August 2026 the latest build was b10226, but builds refresh several times a day (b10218, b10219, b10221, b10223, and b10224 all shipped on 1–2 August alone). Notation like “llama.cpp version 1.x” has never existed.
- The feature density of
llama-server: It serves an OpenAI-compatible API on port 8080 by default, with/v1/chat/completions,/v1/completions,/v1/embeddings, and/v1/modelsendpoints. Change the base URL and your existing OpenAI SDK code runs unmodified. The 2026 server also includes parallel decoding (-np), dual OpenAI + Anthropic-compatible chat routes, function calling, speculative decoding, experimental multimodal input, embedding and reranking endpoints, a router mode that handles LRU eviction across multiple models, and MCP hooks built into the web UI. - Unmatched backend coverage: CUDA, Metal, Vulkan, ROCm, SYCL, and WebGPU, running on macOS, Linux, Android, and Windows. On hardware coverage, llama.cpp is the clear #1 of the five. In April 2026, Linux support for Qualcomm’s Hexagon NPU reportedly landed, bringing Snapdragon laptops and edge devices into range.
- The
--tools allflag: Turn this on and the LLM gets direct access to your local file system from the web UI. It’s as dangerous as it is powerful — never enable it in any environment that handles untrusted prompts.
🚀 4) vLLM — #1 Throughput for Multi-User Production Serving
- PagedAttention: Rather than allocating the KV cache as one contiguous block of memory, it allocates fixed-size blocks on demand, the way an operating system pages memory. Materials in the original paper’s lineage report up to a 4× reduction in memory waste, which translates directly into fitting far larger batches on the GPU. If you ever wonder where vLLM’s performance comes from, this is the answer.
- Continuous batching: The moment one sequence in a batch finishes, a new request is slotted straight into its place. Contrast that with traditional static batching, where the GPU idles until the longest request in the batch completes. Chunked prefill and Flash Attention are layered on top.
- A brutal release cadence: Releases land every two to four weeks. Since v0.22.0 on 29 May 2026 there was 0.22.1 on 5 June, 0.23.0 on 13 June, 0.24.0 on 30 June, 0.25.0 on 11 July, 0.25.1 on 14 July, and v0.26.0 on 25 July — more than five minor releases in barely two months. Worth noting: as of August 2026 it is still on 0.x. There is no such thing as “vLLM 1.0.”
- Hard boundaries on hardware support: On GPUs it supports NVIDIA CUDA, AMD ROCm, and Intel XPU; on CPUs it covers x86, ARM AArch64, Apple Silicon, and even IBM Z (S390X). But Apple Silicon GPU acceleration is only available through a separate project called
vLLM-Metal, not through the main codebase. More importantly, Windows is not on the official support list. Community forks are said to exist, but they aren’t official. - Evidence of enterprise adoption: NVIDIA publishes its own release notes for an internally optimized vLLM build (RN-11517-001_v26.06, July 2026). Its container-friendly architecture fits Kubernetes cluster deployment well. If that’s the part you care about, reading it alongside our Docker vs Kubernetes vs Podman container tools comparison will make the deployment picture much clearer.
🟣 5) Jan — #1 Open-Source GUI + MCP Agent
- A genuinely open-source desktop app: Windows, macOS, and Linux, licensed Apache 2.0. Several review sites have it wrong as AGPLv3 or MIT; checking the repository README directly confirms Apache 2.0. It’s built by Menlo Research and sits at 43,808 stars. That license question — is the app itself open source? — is the single biggest difference between Jan and LM Studio.
- The unusual port 1337: Jan serves its OpenAI-compatible API on
localhost:1337. It’s easy to confuse with Ollama’s 11434 and llama.cpp’s 8080, so commit it to memory before you wire anything up. - MCP (Model Context Protocol) support: Jan provides an inline MCP tool-approval UI, so you approve each tool the agent wants to use, when it wants to use it. It’s among the cleanest GUI implementations of agent capabilities anywhere in the open-source camp.
- Six months of fast evolution: v0.8.0 (22 May) brought multi-token prediction (MTP) and llama.cpp router process integration; v0.8.1 (29 May) added an Anthropic-compatible custom provider and OS-native TLS trust; v0.8.2 (1 June) added an AMD ROCm/HIP Linux backend plus pause/resume on downloads; v0.8.3 (24 June) added message version branching and HTML/SVG artifact previews plus video input; and v0.8.4 (July) shipped native
web_searchandweb_fetchtools along with a migration to backend credential storage. - Freedom in where models come from: You pull GGUF models straight from HuggingFace (Llama, Gemma, Qwen, GPT-oss, and so on). If you need them, you can also connect cloud APIs from OpenAI, Anthropic, Mistral, Groq, or MiniMax — in which case the provider bills you directly, and Jan takes no cut in the middle.
3. Benchmark Showdown: Throughput, Latency, and Apple Silicon
Now the numbers. What matters here isn’t “who’s fastest” — it’s “fastest under which conditions.” The moment you strip the conditions out and publish a ranking, the benchmark becomes a lie.
Which is why the star ratings below are not measurements. They’re a qualitative assessment based on architecture — whether a tool has PagedAttention, continuous batching, and parallel slots — and they are a different kind of claim from the measured tables that follow. Don’t convert star counts into tok/s multipliers.
[Total throughput under concurrent load — qualitative, architecture-based]
vLLM : ⭐⭐⭐⭐⭐ (has both PagedAttention and continuous batching)
llama.cpp : ⭐⭐⭐⭐☆ (-np parallel slots + router mode; no PagedAttention)
LM Studio : ⭐⭐⭐☆☆ (continuous batching since 0.4.0; #1 among GUI tools)
Ollama : ⭐⭐⭐☆☆ (parallel slots via OLLAMA_NUM_PARALLEL, but default is 1)
Jan : ⭐⭐☆☆☆ (optimized for one person, one request at a time)
※ The gap between Ollama and llama.cpp is not "has the feature vs. doesn't."
It comes from the default (Ollama ships 1 slot) and from the absence of
PagedAttention. Ollama can enable parallel slots with one env var, but with
no paged KV cache, adding slots wastes cache and the curve flattens earlier.
[Perceived responsiveness when you're the only user (batch size 1) — qualitative]
Ollama : ⭐⭐⭐⭐⭐ (no scheduler queuing overhead, so first token arrives fast)
llama.cpp : ⭐⭐⭐⭐⭐ (highest ceiling once you tune it yourself)
LM Studio : ⭐⭐⭐⭐☆ (especially strong on Mac when running MLX-format models)
Jan : ⭐⭐⭐⭐☆ (gap narrowed considerably since native MLX support)
vLLM : ⭐⭐⭐☆☆ (no advantage on single requests; TTFT is actually worse)
📈 3-1. Apple Silicon: Measured Ollama MLX Numbers (Official First-Party Data)
The most trustworthy figures available are the MLX benchmarks Ollama published on its official blog. The conditions: Apple M5-class chips (M5 / M5 Pro / M5 Max, with GPU Neural Accelerators), running Qwen3.5-35B-A3B.
| Metric | Ollama 0.18 (Q4_K_M) | Ollama 0.19 (NVFP4) | Ollama 0.19 (int4) |
|---|---|---|---|
| Prefill (prompt processing) | 1,154 tok/s | 1,810 tok/s | 1,851 tok/s |
| Decode (token generation) | 58 tok/s | 112 tok/s | 134 tok/s |
That’s roughly a 1.9× to 2.3× improvement on decode. But do not read this table as “just update Ollama and get 2×.” Look at the column headers again: the 0.18 column is Q4_K_M while both 0.19 columns are NVFP4 and int4. These figures reflect a version bump plus a switch to NVFP4/int4 quantized models, and if you keep running your existing Q4_K_M GGUF and only upgrade Ollama, you will not see this. The official blog states the conditions plainly — Qwen3.5-35B-A3B quantized to NVFP4, compared against the previous implementation quantized to Q4_K_M on 0.18. To actually see this gain on a Mac you need the Ollama update and the quantization format change together, and the honest range is roughly 1.9×–2.3×. Separately, this MLX path only opens on Macs with more than 32GB of unified memory. A 16GB MacBook Air isn’t excluded from running Ollama — it runs the existing Metal path; it just doesn’t get the gains in this table.
📈 3-2. vLLM vs Ollama: The Gap That Concurrency Creates
Several benchmark write-ups report that on an NVIDIA A100 under 128 concurrent requests, vLLM hit roughly 793 tok/s against Ollama’s roughly 41 tok/s, with P99 latency of 80ms for vLLM versus 673ms for Ollama. At 8 concurrent requests the reported figures were 187 tok/s for vLLM against 82 tok/s for Ollama (about 2.3×), and at 64 concurrent users total throughput reportedly differed by roughly 8–9×.
Do not put these numbers in the same class as the Ollama MLX table above. They’re second-hand figures whose original benchmark documents I could not verify, and not one of them states the model, quantization, context length, or Ollama’s parallel slot setting (OLLAMA_NUM_PARALLEL). This chapter opened by saying that a ranking stripped of its conditions becomes a lie, so the same yardstick has to apply here. In particular, if the Ollama side was measured at its default of 1 slot, a meaningful share of that 8–9× gap may be configuration, not architecture. Don’t quote the exact multipliers; take the direction only. If you need real numbers for your own environment, running vllm bench serve alongside an identically configured Ollama measurement will beat any figure cited in this article.
The direction itself is consistent across sources and technically sound. It comes down to three sentences.
- At batch size 1 — that is, when you’re the only user — Ollama and vLLM produce essentially the same tok/s. The difference is somewhere between single digits and 20%, and Ollama, having no scheduler queuing overhead, often delivers a faster time to first token (TTFT).
- As concurrency climbs, vLLM’s throughput curve keeps sloping smoothly upward while Ollama’s flattens comparatively early. But “Ollama has no parallelism” is simply false. Raising
OLLAMA_NUM_PARALLELturns on parallel slots, and moving off the default of 1 alone changes the curve substantially. What remains after that comes from the absence of PagedAttention (a paged KV cache) and continuous batching — and that part no environment variable can close. - So the conclusion is: “there’s no reason to use vLLM if you’re alone, and no alternative to vLLM once concurrent requests climb into the dozens.” In between, Ollama’s parallel slots, llama.cpp’s
-np, or LM Studio 0.4.0+ continuous batching will carry you comfortably. The concrete thresholds are laid out in tip ⑧ of chapter 6.
📈 3-3. MLX vs llama.cpp, and the Gap Between Mac Generations
For Mac users, choosing the backend is choosing the performance. Second-hand benchmarks put MLX 20–87% ahead of llama.cpp, with sustained short-context throughput reported at roughly 230 tok/s for MLX versus roughly 150 tok/s for llama.cpp.
There’s one more frequently quoted data point. Running Qwen3-Coder-30B-A3B on a Mac mini M4 Pro (64GB), MLX reportedly hit roughly 130 tok/s against 43 tok/s for Ollama on the llama.cpp backend — about a 3× difference. That 3× is not measuring the same thing as the 20–87% band above. The band compares MLX against llama.cpp directly; the 3× case compares MLX against “llama.cpp as reached through the Ollama runtime,” so it’s a single data point combining the backend difference with Ollama’s runtime overhead. Splicing the two together into “MLX is 3× faster” overstates it.
Hardware generation matters too. According to llmcheck.net’s aggregated data, the M5 Max delivers roughly +28% tok/s over the M4 Max: 82 tok/s versus 64 tok/s on Llama 3 8B Q4, and 58 tok/s versus 45 tok/s on Qwen 3.5 30B-A3B Q4. Mid-size models (14–35B) land around 35–55 tok/s on an M4 Pro with 24GB, and the M5 Max with 128GB has roughly 600GB/s of memory bandwidth. These numbers make one fact plain: what determines local LLM performance is memory bandwidth and capacity, not GPU core count.
The practical takeaway is straightforward. If you’re on a Mac, pick a tool with MLX support (Ollama 0.19+, LM Studio, or Jan 0.7.7+) and download MLX-format models. Changing nothing but the backend on identical hardware is worth 20–87% (most reported cases land in the 30–50% range). Larger gaps like the 3× case above do occur, but that one bundles in runtime overhead, so set your expectations by the band rather than the outlier. On an NVIDIA GPU server, conversely, MLX is irrelevant — there you simply choose between Ollama and vLLM based on how much concurrency you need.
4. Pricing Compared in Full: Where Exactly Does “Free” End?
This is the most misunderstood corner of the category in 2026. The short answer: running any of the five locally is free, and the paid parts are strictly cloud inference add-ons.
[Pricing structure of local LLM tools, August 2026]
- llama.cpp : $0 (no paid tier, no cloud, no subscription. Pure OSS)
- vLLM : $0 (software is free; the cost is entirely your own GPU infrastructure)
- Jan : $0 (desktop free, no subscription; external APIs billed by that provider)
- LM Studio : $0 (free locally and at work / cloud is metered per token)
- Ollama : $0 (unlimited free locally / cloud Pro from $20 per month)
💰 4-1. Ollama’s Official Pricing
| Plan | Price | What you get |
|---|---|---|
| Free | $0 | Unlimited local models. Cloud models capped at “light usage,” 1 concurrent request |
| Pro | $20/mo ($200/yr) | Access to large cloud models, 3 concurrent, 50× the cloud usage of Free, private model upload and sharing |
| Max | $100/mo | New signups paused. Existing subscribers retained, 10 concurrent, 5× the usage of Pro |
| Team | $25 per seat/mo (5-seat minimum) | Consolidated billing, zero data retention and no logging, priority support |
| Enterprise | Contact sales | Volume discounts, security and procurement support |
The eye-catching detail is that the Max plan has signups closed. It reads as a signal that demand is outrunning capacity, which means the practical choices for anyone starting today are Free, Pro, and Team. Note also that Ollama publishes prices in USD only — there is no official local-currency price list. Figures like “about ₩20,000-something a month” floating around Korean blogs are just someone’s conversion of the $20 number, so if you’re billed in another currency, check what your card issuer’s FX rate actually charges before you commit.
💰 4-2. LM Studio’s Pricing Structure
| Tier | Price | What you get |
|---|---|---|
| Free (local) | $0 | Local LLM execution, offline voice transcription, the Bionic agent, llama.cpp and MLX backends, web search (ZDR when signed in), LM Link on up to 5 devices |
| Pay-as-you-go | Metered per token | US-based inference, zero data retention by default |
| Bionic Pass | Unannounced | Official wording: “Pricing and plan details coming soon” |
Cloud pay-as-you-go rates (per 1M tokens, USD)
| Model | Input | Cached | Output |
|---|---|---|---|
| Kimi K3 | $3.00 | $0.30 | $15.00 |
| GLM 5.2 | $1.50 | $0.30 | $4.50 |
| Kimi Code K2.7 | $0.95 | $0.16 | $4.00 |
| DeepSeek V4 Pro | $1.74 | $0.15 | $3.48 |
| Kimi K2.6 | $0.95 | $0.16 | $4.00 |
Cached rates drop to as little as a tenth of the input price, so for any workload that reuses the same system prompt over and over, the effective cost changes dramatically. If you want to go deeper on cloud model pricing, our ChatGPT vs Claude vs Gemini vs DeepSeek AI model comparison covers the frontier-model side of the pricing picture.
💰 4-3. The Real Cost Isn’t on Any Price List
Here’s the crux. The real cost of a local LLM isn’t software — it’s hardware, electricity, and human time.
First, hardware. Two separate things routinely get conflated here, so let’s split them. Ollama’s MLX acceleration requires more than 32GB of unified memory — but that’s a gating condition on Ollama’s MLX backend, not a hardware requirement for 30B-class models. A 30B-class model itself runs at 35–55 tok/s on an M4 Pro with 24GB (see 3-3). A sub-32GB machine isn’t excluded from this performance conversation; it just falls back to the existing Metal path instead of Ollama’s MLX route. That said, since local LLM performance is governed by memory bandwidth and capacity, running big models comfortably still costs money — a Mac with generous unified memory or an NVIDIA GPU with enough VRAM. Whether it makes sense to buy a machine costing several thousand dollars to avoid a $20 monthly subscription depends entirely on how often you’ll use it.
There’s one more cost that rarely shows up on anyone’s spreadsheet: model format migration. Ollama, LM Studio, llama.cpp, and Jan can all reuse the same GGUF files, but the moment you move to vLLM, your GGUF library does not come with you. vLLM’s GGUF support has been pulled out of the main codebase into an out-of-tree plugin and remains experimental, so in practice you re-download HF safetensors (FP8/AWQ/GPTQ) builds instead. With individual models running from a few GB to tens of GB, that’s fresh download time, fresh storage, and fresh validation time — and you’ll need to point the tokenizer at the base model separately. You cannot write about “costs that aren’t on the price list” and leave this one out.
Second, vLLM’s cost structure is especially easy to misread. The software is completely free under Apache-2.0, but vLLM only justifies its existence on datacenter-class GPUs. Which means vLLM’s true cost is the full hourly rate of your GPU instances. Flip that around, though: if you already own those GPUs and multiple users are hitting them, vLLM multiplies throughput on the same hardware and becomes a tool for driving down cost per GPU.
Third, operational time. llama.cpp costs nothing, but you’re handling build options and flags yourself, and on a project where build tags change several times a day you have to track “which build actually worked” on your own. LM Studio, by contrast, is usable the moment it installs. Once you price in an engineer’s hourly rate, the free tool isn’t always the cheapest tool.
5. Final Recommendations by User Type
Based on everything above, here are the optimal choices for real-world situations. Read only this chapter and you’ll still get your answer.
🎯 1) Non-developers, product managers, and researchers trying local LLMs for the first time
- Best choice: LM Studio
- Why: You never have to open a terminal once, and the GUI model browser lets you see and pick quantization levels visually. Above all, it’s been completely free for work use since 8 July 2025, so installing it on a company laptop raises no licensing issues. With both the llama.cpp and MLX runtimes built in, a model loads into whichever engine matches its format — just remember that on a Mac you have to choose an MLX-format model yourself to end up on the MLX engine.
🎯 2) Individual developers who live in the CLI and swap between models constantly
- Best choice: Ollama
- Why: One line —
ollama run— and you’re done, and as those 177,543 GitHub stars suggest, the third-party integration ecosystem is in a league of its own. At batch size 1 its throughput is effectively identical to vLLM’s while its time to first token is often actually faster. Just be aware that model tags from 2024–2025 tutorials (Llama 3.x, Qwen2.5, Mistral, and friends) now trigger deprecation warnings — use current tags.
🎯 3) Teams running an internal chatbot or RAG API above 10 concurrent requests
- Best choice: vLLM
- Why: Past this point the alternatives run out. PagedAttention cuts KV cache waste and continuous batching eliminates GPU idle time, so throughput keeps climbing as concurrent requests increase. Ollama can turn on parallel slots with
OLLAMA_NUM_PARALLEL, but with no paged KV cache, adding slots wastes cache and the curve flattens sooner. Do confirm the constraints first, though: Windows is not officially supported, Apple Silicon GPU support only comes via the separatevLLM-Metalproject, and your existing GGUF model library does not transfer. Also note that even a 10-person team rarely has 10 people issuing requests simultaneously — measure against peak concurrent requests, not headcount.
🎯 4) Engineers pushing low-spec, edge, or embedded devices to the limit
- Best choice: llama.cpp
- Why: Its backend coverage dwarfs the other four. CUDA, Metal, Vulkan, ROCm, SYCL, and WebGPU, running on macOS, Linux, Android, and Windows. You can freely choose 8/6/5/4/3/2-bit quantization, and
llama-server’s router mode lets you juggle multiple models with LRU eviction. It’s frequently the only option that runs at all on hardware nothing else will touch.
🎯 5) Users bound by open-source principles, or experimenting with MCP agents
- Best choice: Jan
- Why: It’s the only GUI tool whose app itself is open source under Apache 2.0. LM Studio’s app is closed source, which is hard to get past an organization that requires audits. Jan offers an inline MCP tool-approval UI and, as of v0.8.4, native
web_searchandweb_fetchtools. It also supports an AMD ROCm Linux backend (v0.8.2).
🎯 6) Developers who want a coding assistant that works offline
- Best choice: Ollama or LM Studio
- Why: Both have established integration paths with external coding tools. LM Studio models have been usable from Claude Code since 30 January 2026, while Ollama restored Claude Code Channels integration in v0.32.3 and offers
ollama launch chatgptfor connecting to the Codex App (renamed ChatGPT). If you’re curious how these compare to cloud-based coding agents, read it alongside our Cursor vs GitHub Copilot vs Cline AI coding agent comparison.
🎯 7) Organizations whose security policy forbids data leaving the device
- Best choice: llama.cpp or Jan (second choice: Ollama configured local-only)
- Why: All five can run fully offline, but llama.cpp is the only one with no cloud component whatsoever. Jan’s desktop app likewise has no subscription or billing and is designed local-first. If you go with Ollama, make absolutely sure you know that the v0.32.0 agent’s default model is
glm-5.2:cloud— a cloud model — and explicitly specify a local model instead. If you’re contracting as a team, the Team plan explicitly promises zero data retention and no logging.
6. Practical Tips & Common Mistakes (What Most Guides Still Get Wrong)
This is the most practically useful chapter in the guide. Below are six claims that a great deal of the material still in circulation gets wrong — Korean-language guides especially, but plenty of English ones too — plus hands-on tips, all verified during research.
① “You need a commercial license to use LM Studio at work” → Wrong. The commercial-use license requirement was abolished on 8 July 2025. You can now use it at work for free with no form to submit and no inquiry to send. Yet a lot of guides still repeat the old policy, and there are teams that struck LM Studio off their shortlist purely because of it. If you’re evaluating it for internal use, correct this item first.
② “Jan is AGPLv3” → Wrong. It’s Apache 2.0. Multiple review sites list it as AGPLv3 or MIT, but checking the repository README directly, the license is Apache 2.0. AGPL comes with source-disclosure obligations when you distribute software as a network service, which routinely trips up corporate legal review — and Jan simply isn’t subject to it. If you dropped Jan over licensing, it’s worth another look.
③ “vLLM 1.0 is out” → It isn’t yet.
As of August 2026 the latest is v0.26.0, still in the 0.x range. On a project shipping releases every two to four weeks, version pinning is effectively mandatory. Write just vllm in requirements.txt and two weeks later your environment and your teammate’s diverge. Pin an exact version, and read the release notes before you bump it.
④ “Ollama is a completely free, local-only tool” → In 2026 that’s only half true.
Local execution is still unlimited and free, but cloud subscriptions exist starting at $20/month for Pro, and the default agent model in v0.32.0 is a cloud model (glm-5.2:cloud). Meaning: absent-mindedly typing ollama and pasting in internal company data can send that data outside your network. In security-sensitive environments, build the habit of explicitly specifying a local model during first-time setup.
⑤ “The latest llama.cpp version is 1.x” → That versioning scheme doesn’t exist. llama.cpp doesn’t use semantic versioning at all — only build tags (bXXXXX). As of 2 August 2026 it’s b10226, and tomorrow it’ll be something else. The practical tip is to record the build tag you verified as working and check that tag out. Pull master every time and a flag that worked yesterday stops working today.
⑥ “Just turn on MLX and your Mac gets twice as fast” → There are two conditions. First, Ollama’s MLX preview backend presupposes a Mac with more than 32GB of unified memory. But restating that as “you can’t use Ollama on a 16GB Mac” is wrong: below the threshold Ollama runs normally on the existing Metal (llama.cpp) path — you just don’t get MLX acceleration. Second, the official blog’s 1.9×–2.3× figures are not the effect of a version bump alone; they reflect switching to NVFP4/int4 quantized models at the same time. Keep running Q4_K_M and only bump the version and you won’t see that range. On 16GB or less, plan around 7–8B-class models with Q4 quantization — and change model size and format before you change tools.
⑦ Memorize the port numbers and you halve your integration headaches.
Ollama is 11434, llama.cpp’s llama-server is 8080, and Jan is 1337. All three serve an OpenAI-compatible API, so with existing OpenAI SDK code you only change the base URL and everything works — no need to write a new client. llama.cpp goes further and also exposes an Anthropic-compatible chat route, so Anthropic SDK-based code is reusable too.
⑧ Answer “how many concurrent requests at peak?” before you pick a tool. (The single threshold used throughout this guide.)
The most common design mistake is doing this in reverse. I regularly see teams stand up Ollama for an internal service and then add GPUs when it slows down. But the first move is neither a GPU purchase nor a vLLM migration. Per Ollama’s official FAQ, OLLAMA_NUM_PARALLEL — the maximum number of parallel requests each model processes at once — defaults to 1. An untouched Ollama install is effectively serializing your requests, and that kind of slowness is a configuration problem, not a hardware problem. OLLAMA_MAX_LOADED_MODELS, defaulting to 3 × the number of GPUs, is worth checking at the same time.
So the prescription has two steps. (1) Raise OLLAMA_NUM_PARALLEL first, and (2) if the curve still won’t lift, move to vLLM. Reverse that order and you pay for an unnecessary migration plus the cost of re-acquiring every model. What remains after step 1 comes from the absence of PagedAttention and continuous batching, and slot count can’t fix that.
This guide applies the thresholds below consistently in every chapter. The metric is peak concurrent requests, not registered users.
[Single decision threshold, by concurrent request count]
1–4 concurrent requests → Ollama (tune NUM_PARALLEL) · LM Studio · Jan
5–10 concurrent requests → llama.cpp -np parallel decoding · LM Studio 0.4.0+ batching
More than 10, or any → vLLM
service with an SLA
⑨ Don’t ignore deprecation warnings on model tags. Since 11 July 2026, Ollama has printed end-of-support warnings on the default tags for CodeLlama, Qwen2.5 and Qwen2.5-coder, Llama 3.x, Mistral, StarCoder, and DeepSeek-R1. If you copy-pasted from a tutorial and you’re seeing that warning, it’s a signal that the tutorial is at least a year old — and the rest of it is probably stale too.
⑩ --tools all demolishes your trust boundary.
Enable this llama.cpp flag and the LLM gets direct file system access from the web UI. Powerful for personal experimentation, but in any pipeline that feeds externally sourced documents or web pages into the model, prompt injection turns straight into file access. Do not enable it in any environment that handles external input.
⑪ If vLLM is on your roadmap, budget for re-acquiring your models.
“They’re all OpenAI-compatible, so it’s one line of base URL” applies to client code only. Model assets don’t follow. Ollama, LM Studio, llama.cpp, and Jan share the GGUF (+MLX) ecosystem, but vLLM is built around HF safetensors (FP8/AWQ/GPTQ) and its GGUF support has moved out of the main codebase into the out-of-tree vllm-gguf-plugin. The official docs call it “highly experimental and under-optimized,” warn it may be incompatible with other features, and recommend taking the tokenizer from the base model rather than the GGUF. So put three lines in the migration plan: (1) the list of models to re-download and their total size, (2) the download and validation time, and (3) everything whose quality has to be re-verified after the quantization format changes. In practice this is the largest cost in any tool switch.
7. Frequently Asked Questions (FAQ)
Q. In a local LLM tools comparison, which one actually wins?
There’s no absolute winner — only winners per condition. Solo developers: Ollama. Need a GUI: LM Studio. Multi-user serving: vLLM. Extreme hardware coverage: llama.cpp. Open-source principles and MCP agents: Jan. If you force me to name one safe default, Ollama — combining ecosystem scale (177,543 GitHub stars) with ease of use — is a solid first pick.
Q. Which is faster, Ollama or vLLM?
The answer flips depending on the conditions. At batch size 1, when you’re the only user, the two produce effectively identical tok/s, and Ollama — with no scheduler queuing overhead — often returns the first token sooner. As concurrent requests grow, though, vLLM’s throughput keeps climbing while Ollama’s flattens comparatively early. Don’t mistake that for “Ollama has no concurrency features,” though: the official FAQ’s OLLAMA_NUM_PARALLEL sets the number of parallel slots and defaults to 1, so a good share of perceived slowness is simply that value never being raised. What remains after that comes from the absence of PagedAttention and continuous batching. Decide first whether “fast” means throughput or response latency, then compare.
Q. Can I use LM Studio at work for free?
Yes. The commercial-use license requirement was abolished on 8 July 2025, so you can use it at work for free without filling out a form or contacting anyone. The free plan covers local LLM execution, offline voice transcription, the Bionic agent, llama.cpp and MLX backends, and LM Link on up to 5 devices. If you’ve seen an article saying “work use requires a separate license,” that article is out of date.
Q. I want to run local LLMs on a MacBook. Which tool should I use?
On a Mac, the answer is a tool with MLX backend support. Ollama (0.19+), LM Studio, and Jan (0.7.7+) all support MLX. That said, Ollama’s MLX preview backend requires more than 32GB of unified memory. This is where people go wrong: on a 16GB Mac, Ollama doesn’t stop working — you just don’t get MLX acceleration, and the existing Metal (llama.cpp) path runs fine. LM Studio and Jan don’t publish a comparable memory gate on MLX, but the memory ceiling itself applies identically no matter which tool you use. On a 16GB Mac, 7–8B-class Q4 models are the realistic upper bound regardless, and anything at 14B or above is tight even with a reduced context. In other words, the real question on a 16GB Mac isn’t “Ollama or not” — it’s what size and format of model you can load. Don’t use vLLM on a Mac — Apple Silicon GPU support only exists through the separate vLLM-Metal project, not the main codebase.
Q. Can I run vLLM on Windows?
Officially, no. Windows does not appear on the supported hardware list in vLLM’s official installation documentation. Community forks are said to exist, but they aren’t officially supported, which makes them risky in production. If you need multi-user serving on Windows, apply the same thresholds from tip ⑧ in chapter 6. Above 10 concurrent requests, the realistic setup is running vLLM under WSL2 or on a Linux server. In the 5–10 range, LM Studio 0.4.0+ with continuous batching or llama.cpp’s -np parallel decoding handles it perfectly well on Windows itself. In the 1–4 range, raising Ollama’s OLLAMA_NUM_PARALLEL is often all it takes.
Q. Are local LLM tools all free? Are there hidden costs?
Local execution is free on all five. llama.cpp, vLLM, and Jan have no paid tier at all, while Ollama and LM Studio charge only for cloud inference add-ons (Ollama Pro at $20/month, LM Studio metered per token). The real costs are hardware, electricity, operational time, and re-acquiring models. The 32GB figure gets conflated constantly, so to be precise: more than 32GB of unified memory is a condition on Ollama’s MLX backend, not a requirement for 30B-class models. A 30B-class model itself runs at 35–55 tok/s on an M4 Pro with 24GB. Running big models comfortably does cost money in memory capacity and bandwidth, of course, and with vLLM the cost is essentially your datacenter GPU bill, full stop. Finally, since a move to vLLM won’t carry your GGUF model library across, budget the time and storage to re-download tens of gigabytes.
Q. What’s the difference between LM Studio and Jan?
Both are GUI-first desktop tools, but the decisive difference is whether they’re open source. LM Studio’s app itself is closed source — all that’s public on GitHub is the lms CLI and the SDK. Jan, by contrast, is Apache 2.0 end to end. On features, LM Studio leads on the visual quantization picker and on parallel requests via continuous batching, while Jan is stronger on the agent side with inline MCP tool approval and native web_search and web_fetch tools. Organizations that need audits should pick Jan; if convenience comes first, LM Studio.
Q. How do I check the llama.cpp version?
There is no semantic version. It uses build tags in the form bXXXXX instead. As of 08:15 UTC on 2 August 2026 the latest build was b10226, but updates are frequent enough that b10218, b10219, b10221, b10223, and b10224 all landed back-to-back on 1–2 August. In practice, I recommend recording the build tag you’ve verified as working and pinning to it.
Q. Can I port existing OpenAI API code straight to a local model?
Yes, in most cases. All five tools serve an OpenAI-compatible API, so you just point your SDK’s base URL at the local address. The ports are 11434 for Ollama, 8080 for llama.cpp’s llama-server, and 1337 for Jan, while LM Studio and vLLM each provide compatible servers of their own. llama.cpp supports /v1/chat/completions, /v1/completions, /v1/embeddings, and /v1/models, and adds an Anthropic-compatible chat route on top, which makes it especially portable.
8. Conclusion: The 2026 Local LLM Tools Comparison Comes Down to Two Questions
We’ve now gone through all five tools on versions, licensing, performance, pricing, and hardware constraints — and yet the actual decision is remarkably simple. The first question is “how many concurrent requests at peak?” At 1–4, pick whichever of Ollama (with OLLAMA_NUM_PARALLEL tuned), LM Studio, or Jan suits your taste. At 5–10, llama.cpp’s -np or LM Studio’s continuous batching is squarely in range. Above 10, or on any service with an SLA, it’s vLLM. In that last band the remaining gap is hard to close with environment variables, because it comes from the presence or absence of PagedAttention and continuous batching as architecture (though the exact boundaries shift with model size, context length, and SLA — measure once in your own environment). The second question is “can you open a terminal?” If yes, Ollama and llama.cpp open up. If you can’t — or won’t — LM Studio and Jan are what remain.
There are also clear signs the category matured over the first half of 2026. On Apple Silicon, MLX settled in as the standard and decode throughput rose sharply on identical hardware (per Ollama’s official benchmark, 58 tok/s on 0.18 with Q4_K_M → 134 tok/s on 0.19 with int4 — the result of a version bump and a quantization format change together), and all five tools now serve OpenAI-compatible APIs. One thing has to be stated precisely here, though. The API call code is one line of base URL, but your model assets do not follow. Among the first four, GGUF files move across freely and switching really is that cheap — but a GGUF library does not carry over to vLLM (support was pulled from the main codebase into an experimental out-of-tree plugin). If vLLM is anywhere in your plans, budget the model re-acquisition time and storage from the outset.
At the same time, a trend worth watching has emerged. “Local tool = completely free = data never leaves” no longer holds automatically. The default model for Ollama’s v0.32.0 agent is a cloud model, and LM Studio runs cloud credits too. If privacy was your reason for adopting local inference at all, verify that you explicitly specified a local model during setup — and at an organizational level, look first at llama.cpp, which has no cloud component whatsoever, or Jan, the open-source GUI.
Summary: the right pick for your situation
┌─ More than 10 concurrent requests at peak? (Or an SLA-bound service?)
│ └─ YES → vLLM (v0.26.0)
│ ※ Windows unsupported officially; Mac GPU needs separate vLLM-Metal
│ ※ Software is free; the cost is your entire GPU infrastructure
│ ※ GGUF library doesn't transfer — budget model re-acquisition
│
├─ 5–10 concurrent requests?
│ └─ YES → llama.cpp -np parallel decoding (b10226, MIT)
│ or LM Studio 0.4.0+ continuous batching (0.4.20)
│ ※ Especially realistic when you need multi-user serving on Windows
│
└─ NO (1–4 concurrent requests / effectively a single user)
│
├─ Comfortable in a terminal?
│ ├─ YES ─┬─ Safe first choice → Ollama (v0.32.5, MIT)
│ │ │ ※ If it's slow, raise OLLAMA_NUM_PARALLEL (default 1)
│ │ │ ※ Mac MLX preview needs >32GB unified memory
│ │ │ (below that the Metal path runs fine)
│ │ │ ※ Watch out: default agent model is cloud
│ │ └─ Extreme hardware tuning → llama.cpp (b10226, MIT)
│ │ ※ Most backends, zero paid components
│ │
│ └─ NO ──┬─ Convenience first → LM Studio (0.4.20)
│ │ ※ Free for work use since 2025-07-08
│ │ ※ On Mac, pick MLX-format models yourself
│ │ ※ But the app itself is closed source
│ └─ Open source / MCP a must → Jan (v0.8.4, Apache 2.0)
│ ※ API port 1337, completely free
│
└─ If data absolutely cannot leave the machine
→ llama.cpp (no cloud components at all) or Jan
→ With Ollama / LM Studio, explicitly specify a local model
[Port cheat sheet] Ollama 11434 · llama.cpp 8080 · Jan 1337
[Price cheat sheet] Local is $0 across the board / Ollama Pro $20, Team $25 (per seat)
LM Studio cloud is metered per token
[Format cheat sheet] Ollama · LM Studio · llama.cpp · Jan all share GGUF (+MLX)
vLLM = HF safetensors · FP8 · AWQ · GPTQ (GGUF experimental plugin)
Local LLMs are no longer a question of “can it be done” — they’re a question of “with what, and under which conditions.” Take the cheat sheet above, pick one today, and install it. Inside the GGUF ecosystem (Ollama, LM Studio, llama.cpp, Jan) you can switch whenever you like with one line of base URL; only a move to vLLM means sourcing your models again. 🚀