Skip to Content

Install Ollama

Time: about 20 minutes, most of it downloading · You’ll need: ~5 GB free disk, Docker installed

Ollama runs AI models directly on your machine — no API key, no per-token cost, nothing leaving your computer. Install Ollama, run a model, and connect it to Companion Hub.

Ollama is optional but recommended. Without it, Hub apps that use AI need a cloud provider API key or another engine (vLLM on NVIDIA, oMLX on Apple silicon, Lemonade on AMD GPU hardware) instead. You can also do both — see AI & inference.

The desktop app can install Ollama for you. In the Onboarding wizard’s Set up inference step, an Ollama not detected card offers Run this automatically. On Windows with a WSL2 Docker engine, it installs Ollama inside the WSL distribution and binds it to all interfaces for you. Use this page if you’d rather install it yourself, or you run Hub without the desktop app.

The order on this page, with the one step Linux users must not skip:

Install Ollama

Download the installer from ollama.com/download , open it, and drag Ollama to Applications. Launch it once — it runs in the background and starts automatically from then on.

Confirm it’s installed:

ollama --version

Expected:

ollama version is 0.x.y

Download and run your first model

Pull a model

llama3.2 is a good starting point — around 2 GB, and it runs acceptably on CPU alone:

ollama pull llama3.2

You’ll see progress as it downloads:

pulling manifest pulling dde5aa3fc5ff... 100% ▕████████████████▏ 2.0 GB verifying sha256 digest writing manifest success

Not sure what your hardware can handle? Hub’s Onboarding wizard detects your CPU, RAM, and GPU and recommends models that fit — you can let it choose for you instead.

Actually talk to it

This is the part worth doing before anything else — it proves local inference works end to end:

ollama run llama3.2

You’ll get a prompt. Type a question and press Enter:

>>> Explain what a Docker volume is in two sentences.

The model responds locally, on your machine. Type /bye to exit.

The first response is slower than the rest — the model has to load into memory first. Subsequent replies in the same session are faster.

Confirm what’s installed

ollama list
NAME ID SIZE MODIFIED llama3.2:latest a80c4f17acd5 2.0 GB 2 minutes ago

Let Hub’s containers reach Ollama

This is the step people miss, and it produces the single most common AI problem in Hub: apps report that no models are available even though ollama list shows several.

The reason: by default Ollama only listens on 127.0.0.1, which inside a Docker container means the container itself, not your host machine. Hub’s app containers reach your host at host.docker.internal — so Ollama has to be listening on all interfaces for them to connect.

The path a request takes from an app container to Ollama:

Usually nothing to do — Docker Desktop routes host.docker.internal to the host automatically, and Ollama is reachable as-is.

Skip to Verify the connection. If that check fails, set OLLAMA_HOST=0.0.0.0:11434 in Ollama’s settings and restart it.

Binding to 0.0.0.0 makes Ollama reachable from any machine on your network, not just Docker containers. On a trusted home LAN that’s usually fine. On a shared or public network, firewall port 11434 to Docker’s bridge interface only.

Verify the connection

Two checks. The first proves Ollama is up; the second proves containers can reach it.

curl http://localhost:11434/api/tags

Expected — a JSON list including the model you pulled:

{"models":[{"name":"llama3.2:latest","size":2019393189,...}]}

Now the check that actually matters, from inside a container. On macOS and Windows, Docker Desktop provides host.docker.internal:

docker run --rm curlimages/curl -s http://host.docker.internal:11434/api/tags

On Linux with Docker Engine, a plain docker run doesn’t map that name, so add the mapping yourself — Hub adds the same mapping to its own containers:

docker run --rm --add-host=host.docker.internal:host-gateway curlimages/curl -s http://host.docker.internal:11434/api/tags

The same JSON confirms that the connection works. If you get Connection refused, Ollama isn’t bound to all interfaces — repeat the step above. If the command hangs and times out, a host firewall is dropping the packets.

If a firewall blocks the connection

A running Ollama can still be unreachable from containers when a firewall such as ufw drops traffic from Docker’s network to the host. A stopped service refuses a connection immediately, so a silent timeout points to the firewall. Allow the Docker network to reach Ollama’s port on the host:

sudo ufw allow from <docker-network> to <docker-gateway-ip> port 11434 proto tcp

Hub works out both addresses for you: when it can’t reach Ollama, the Set up inference card in the onboarding wizard names the cause and prints a command with your real network range and gateway address filled in — for ufw, firewalld, nftables, or iptables. Run that command on the host, then select Re-check.

Connect it to Companion Hub

Once Hub is installed, it detects Ollama automatically. In the onboarding wizard’s Set up inference step, a green Ollama detected card shows the endpoint Hub found. If you see Ollama not reachable from Hub or Ollama not detected instead, work through Verify the connection and select Re-check.

Step 3, Set up inference, in the onboarding wizard: Ollama selected and marked Recommended, vLLM unselected, an Ollama detected card showing http://localhost:11434 with a Re-check refresh button, and an Or set endpoints yourself section with Decode endpoint and Encode endpoint fieldsStep 3, Set up inference, in the onboarding wizard: Ollama selected and marked Recommended, vLLM unselected, an Ollama detected card showing http://localhost:11434 with a Re-check refresh button, and an Or set endpoints yourself section with Decode endpoint and Encode endpoint fields
The Set up inference step. The Ollama detected card shows the endpoint Hub found; Re-check is the refresh button beside it.

Outside the wizard, confirm that Ollama answers and that containers can reach it:

ollama list cihub doctor

The Docker bridge line in the cihub doctor output tests the connection from inside the Hub container. Manage models with the ollama command on the host:

ollama list
ollama pull mistral

cihub models list and cihub models install work only when Ollama runs as a container in the Hub’s Compose project. On a standard install they report Ollama container not running. See Models.

In the dashboard, Settings → AI shows the detected backend and lets you choose which models Hub downloads and keeps loaded. Hub picks the best-ranked chat model among the ones you keep selected for apps to use. Apps that declare AI support receive these settings automatically at install time — see AI and inference.

Using a GPU

Ollama runs on CPU by default. If you have a discrete GPU, Ollama uses it once the drivers are in place.

NVIDIA: install the current NVIDIA driver. Ollama runs on the host, so it uses the driver directly and detects CUDA automatically. You only need the NVIDIA Container Toolkit  for engines that run inside a container, such as vLLM.

AMD: install ROCm drivers. Supported on Linux. On Ubuntu, the onboarding wizard’s System Overview can install ROCm for you when it detects an AMD GPU without a ready runtime.

Check whether it’s actually working — load a model, then while it’s resident:

ollama ps
NAME ID SIZE PROCESSOR UNTIL llama3.2:latest a80c4f17acd5 3.5 GB 100% GPU 4 minutes from now

100% GPU means acceleration is working. 100% CPU means it fell back — usually the model is too large for your VRAM, or the drivers aren’t visible to Ollama.

Common problems

Hub shows no models

Run through Verify the connection. Almost always the OLLAMA_HOST bind step.

Model runs but is very slow

You’re on CPU, or the model is larger than your available RAM and is swapping. Try a smaller model:

ollama pull phi4-mini

Out of memory

The model needs more RAM or VRAM than you have. As a rough guide, a model needs about as much memory as its download size, plus overhead. Pick a smaller one, or let the Onboarding wizard recommend based on your detected hardware.

Last updated on