Vibeleaderboard
Index / tool
Visit ollama.com
Category
AI Tools
Rank
Listed in
#1 Run models locally
Pricing
Open Source
Type
TOOL
Builder
ollama
Latest release
v0.34.0-rc3
Date

About

An open-source tool that lets you run and manage large language models locally on your machine. It supports popular models like Llama, Gemma, DeepSeek, and Qwen, providing both command-line interface and REST API for easy integration.

What it does

Ollama is a single Go program that runs large language models on your own machine. A command-line client talks to a long-running local server over HTTP, and that server hands the actual inference work to a separate open-source engine running as a subprocess. A customised model variant is just a short text file naming the base model, its parameters, and its prompt template, so tailoring a model takes one file and one command rather than a fork. A newer built-in agent runtime adds tool calling, a skills catalog, approval prompts, and automatic context compaction.

Why it's ranked here

Ollama owns the unglamorous part of local models: fetching weights, fitting them to your hardware, keeping a process warm, and exposing one stable local HTTP interface that every other tool can target. It does that across macOS, Windows, Linux, and Docker with seven named GPU build targets, and its dependencies track current versions rather than drifting. The public client library is the same one the product itself consumes, which keeps it honest, and the agent runtime shows the project extending upward into tool orchestration instead of standing still.

What's good

The API is shaped by people who actually consume it. Thinking can be unset, off, or set to a level, and those states are distinguishable. When a conversation outgrows the context window you choose between two named behaviours, truncating or shifting, instead of hitting a single error. Token probabilities are first class, and tool-call arguments keep the exact field order the model produced when written back out. Before logging, the server blanks any environment value whose name looks like a secret, and the agent loop caps tool output and retries a failing model twice by feeding the error back as a turn.

Tradeoffs

Generation quality and kernel speed belong to the underlying inference engine, so a whole class of bugs is inherited rather than fixable here. Building from source is not a plain Go build: it needs CMake, a C and C++ compiler, and explicit flags per GPU family, and the server only runs against an already-built native payload. The default client applies no request timeout, so cancelling a hung call is entirely your responsibility, and it reads whole response bodies into memory. The in-repo API reference is a partial mirror; the canonical version now lives on the hosted documentation site.

How to use it well

Program against the official Go, Python, or JavaScript client libraries rather than raw HTTP, and always pass a deadline, because the client will never time out on its own. Set the context window deliberately: the default is a small 2048 tokens, and a request above the model's trained length is silently lowered. Prefer the named shift or truncate overflow behaviours before letting long conversations fail. For tool-using apps, use the chat endpoint with tools declared, and tune the keep-alive setting so the model is not reloaded on every request. When building from source, list your GPU backends explicitly instead of relying on autodetection.

Technical notes+

main.go is a four-line handoff to a cobra CLI that talks to a daemon on port 11434. api/client.go is the same client the CLI consumes: unary calls go through do(), streaming calls through stream(), which scans NDJSON with an 8 MB per-line ceiling and surfaces mid-stream errors as StatusError or AuthorizationError. ClientFromEnvironment returns a client backed by http.DefaultClient, which sets no request timeout, and do() reads whole bodies with io.ReadAll. When the target host is ollama.com or auth is enabled, the client builds a challenge of the form METHOD,path?ts=unix, signs it via auth.Sign, and sends it as an Authorization header with a ts query parameter. llm/server.go declares the LlamaServer interface; NewLlamaServer serves all GGML models through an upstream llama-server subprocess, clamps a requested num_ctx above the model's trained context length with a warning, and redacts environment values whose key contains KEY, TOKEN, SECRET, PASSWORD or CREDENTIAL before logging. agent/session.go implements the agent runtime: tool registry, skills catalog, approval prompting, context compaction, a default of 100 consecutive model/tool cycles, a 60,000-rune tool-output cap reduced to 6,000 and 3,200 for small and tiny context windows, and up to two retries on consecutive 5xx model errors fed back as user turns. Modelfile directives are FROM, PARAMETER, TEMPLATE, SYSTEM, ADAPTER, MESSAGE and REQUIRES, with a default num_ctx of 2048 per docs/modelfile.mdx; docs/development.md requires CMake 3.24 or newer and tests run with go test.

Observed

Language and packaging
Go; one binary providing the CLI, the local HTTP server, and the client library
Interfaces
CLI, streaming HTTP API on localhost port 11434, Go client, published Python and JavaScript libraries
Inference backend
llama.cpp; GGML models run in an external llama-server subprocess
Platform support
macOS, Windows, Linux, and Docker, with seven named GPU build targets
Build surface
Building from source requires CMake and a C/C++ compiler in addition to Go

Read from README.md, go.mod, main.go, api/client.go, api/types.go, llm/server.go, docs/api.md, docs/quickstart.mdx, docs/modelfile.mdx, docs/development.md, agent/session.go.

What it can do

  • Run large language models locally

    Model name and user promptsAI-generated text responses

  • Download and install language models

    Model name (e.g., Llama, Gemma, DeepSeek, Qwen)Locally installed model files

  • Manage multiple language models

    Model management commandsUpdated model registry and storage

  • Process API requests for text generation

    HTTP requests with prompts via REST APIJSON responses with generated text

  • Execute models via command line

    Command line instructions and text promptsText responses in terminal

  • Deploy models in Docker containers

    Docker configuration and model specificationsContainerized model instances

Intel on Ollama

More in Intel

Tags

llmlocal-aimodelscliapiopen-sourceself-hosted

Tech Stack

GoDocker

Media

Ollama

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.