Skip to content

What Is Ollama? Running Large Language Models Locally

Ollama is an open-source local model runner and REST API that lets developers download and execute large language models on their own hardware.

Tuan Tran Van
7 min read
Contents (7 sections)
  1. What problem does Ollama solve?
  2. What is Ollama built on?
  3. What do you actually do with Ollama?
  4. Local models or Ollama's cloud?
  5. Where Ollama stops working
  6. Where to start
  7. References

Ollama is an open-source local model runner and REST API that lets you download and execute large language models (LLMs) directly on your own hardware. It removes the cloud dependency and the environment configuration that used to sit between a set of model weights and a working prompt.

The project's technical lineage runs through Docker. Its founders, Jeff Morgan and Michael Chiang, met in college and built Kitematic, which made Docker simple to run; Docker acquired it in 2015, and their work became Docker Desktop, now used by over ten million developers. That heritage shows in the design: Ollama treats a model as a portable, versioned unit you pull and run with one command.

A large language model running directly on a personal computer, with the data staying on the machine instead of going to the cloud

What problem does Ollama solve?

Running an LLM locally used to be a high-friction process that assumed familiarity with AI research environments. You managed multi-gigabyte weight files by hand, worked through the NVIDIA CUDA toolkit to get GPU acceleration, and debugged fragile Python dependency chains. That barrier kept local AI out of reach for engineers who were not already specialists.

Ollama collapses all of that into a single tool that automates the hard parts of the hardware and software stack. It detects whether you are on NVIDIA, AMD, or Apple Silicon and tunes the execution environment to match. It also handles quantization — reducing numerical precision so a model fits into consumer-grade VRAM — so large models stay usable on a normal desktop.

Three properties follow from running the model on your own machine. Sensitive data never leaves it, which is why 85% of the Fortune 500 run Ollama in areas like government, healthcare, and finance. Per-token billing disappears, so you can iterate or run continuous RAG workloads without watching an invoice. And once the weights are on disk, the model works offline.

What is Ollama built on?

Ollama is a Go wrapper that orchestrates two inference engines underneath. On x86 systems with NVIDIA or AMD hardware it drives llama.cpp. On Apple Silicon it uses the MLX framework to take advantage of unified memory and the M-series accelerators. Recent releases have concentrated on MLX reliability, including a fix for a recurrent model cache leak that grew memory use across requests.

Ollama's architecture: a Go orchestration layer sitting on the llama.cpp and MLX inference engines, with three parts — the model registry, the local runtime, and the CLI plus REST API

The local library is built on the GGUF format, which is what makes aggressive quantization practical. What your machine can actually run follows from parameter count and VRAM:

Model sizeRecommended VRAMCPU-only usable?Tokens/sec (GPU)
1B–3B4 GBYes80–120
7B–8B8 GBSlow (~5–8 t/s)40–55
13B–14B12–16 GBNo25–35
30B–34B24 GBNo15–22
70B+48 GB+No8–15

Plan on 16 GB of system RAM as the floor and 32 GB if you want to keep working while a model is loaded. For the reasoning behind quantization levels and how to size a machine, the local AI guide covers that ground in depth.

What do you actually do with Ollama?

You reach Ollama two ways: a CLI for direct control, and an OpenAI-compatible REST API on localhost:11434. That compatibility makes Ollama a drop-in replacement for a proprietary provider across tools like Open WebUI, Continue.dev, and AnythingLLM, usually by changing a base URL.

Day to day, you pull a model and run it:

Working with Ollama in practice: pull a model from the command line, package its configuration in a Modelfile, then call it through the OpenAI-compatible API

bash
ollama pull gemma4
ollama run gemma4

For behavior you want to reuse, Ollama has the Modelfile. It packages a model configuration the way a Dockerfile packages an environment: you set a persona and tune parameters without touching weights or paying to fine-tune.

dockerfile
FROM gemma4
 
SYSTEM """
You are a senior technical writer.
Write clear, concise explanations using a professional tone.
Use Markdown headings and bullet points for structure.
"""
 
PARAMETER temperature 0.2
PARAMETER num_ctx 4096

Register it with ollama create tech-writer -f Modelfile. The num_ctx value matters more than it looks: it governs the KV cache footprint, which is what keeps a long context window from exhausting the VRAM you have left.

Local models or Ollama's cloud?

Ollama's 2026 expansion added Ollama Cloud, backed by a $65 million Series B that brought total capital raised to $88 million. The design goal is that the CLI and API stay the same whether the model runs on your laptop or on someone else's GPU. Cloud token volume has more than doubled every month on average.

Local models compared with Ollama Cloud: the same command and the same API on both sides, local giving privacy and zero cost, cloud giving larger models

Choosing between them is a question of scale and sensitivity. Local is the right default for maximum privacy, offline reliability, and zero-cost prototyping; Ollama loads only the weights and the active context into VRAM, so you keep room for other GPU work. Cloud earns its place when the token volume is large or the model is bigger than your hardware.

The hybrid path is the point. Keep sensitive development local, push heavy inference to the cloud when it is worth paying for, and avoid rewriting your integration to move between them.

Where Ollama stops working

Ollama has a concurrency ceiling, and it is architectural rather than a tuning problem. By default it queues requests and serves one prompt at a time. Single-user throughput is competitive — roughly 62 tokens/sec against vLLM's 71 — but most of that gap traces to quantization rather than the engine, so it understates the real difference. Push past a handful of simultaneous users and the picture inverts: vLLM keeps scaling with batch size, on the order of 15–20x, while Ollama serializes. You can raise OLLAMA_NUM_PARALLEL above its default of 1, but the throughput stays modest.

The concurrency ceiling: Ollama queues and serves one request at a time, while vLLM batches many requests in parallel

Memory management differs for the same reason. Ollama allocates KV cache contiguously per request, and that fragmentation is what limits concurrent capacity; vLLM's PagedAttention stores the cache in fixed-size blocks and assumes the GPU is dedicated, pre-allocating most of the VRAM it can see. Wrapping llama.cpp also costs something — measurements put the overhead somewhere between 5% and 25% depending on configuration.

The format story is narrower too. Ollama's focus on GGUF is a hurdle if you need GPTQ, AWQ, exl2, or FP8 weights. None of this makes Ollama a bad tool; it makes it a development tool. For serving a public API to hundreds of concurrent users, it is the wrong layer of the stack.

Where to start

Install it in one command:

bash
curl -fsSL https://ollama.com/install.sh | sh

On Windows, use irm https://ollama.com/install.ps1 | iex. Then ollama run gemma4 gives you a first session running entirely on your own machine.

Reach for Ollama when you are developing solo, running local agents, or prototyping for a single user — it is the shortest path from nothing to a working local model. When your system starts serving several people at once and latency climbs, that is the signal to move to vLLM. The two tools were built for different problems, and the switch is a sign you outgrew the first one, not that you picked wrong.

References

Share this article