← All extensions
Ollama Runtime banner

Ollama Runtime

ivyx

Run embedding models on your own machine through Ollama, with nothing leaving the machine

Ollama Runtime

Runs embedding models on your own machine through Ollama. Install it if you want retrieval that works with the network switched off. It has no panel; once installed, an on-machine embedding model becomes something the rest of the app can use.

What you can do

  • Embed your text locally, so an index can be built with nothing leaving the machine
  • Get set up in two commands — Ollama supervises its own daemon and fetches its own models, so there is no server binary to build and no path to configure
  • Pull a model from inside the app, with the download visible in a terminal
  • Bring the daemon up or down from an assistant or a flow

The other two local runtimes here, GGUF and ONNX, both assume you already have a model server binary and can point a setting at it. This one does not.

Requirements

  • Desktop (Electron) app. Starting a daemon needs the host process surface.
  • Ollama installed on the machine. This extension manages it. It never installs it.

What it serves, and what it does not

Embeddings. Reached through runtime.inference.infer({ task: 'embeddings' }), which is how the Vectors extension builds an index that never leaves the machine.

Not chat. The desktop app's local chat route sends no model name, which llama.cpp ignores and ollama rejects, so a chat path wired up here would be configured and broken at the same time. Closing that needs a host change and it is tracked as one. In the meantime ollama can serve chat today by adding it as a remote model with the address http://127.0.0.1:11434/v1 and vendor ollama; the label says Remote, the traffic still never leaves the machine.

Not rerank, not transcription. Ollama exposes no such route. Asking for one fails with the reason instead of guessing.

Managing it from an agent

The lifecycle is available as four capabilities, so an assistant or a flow can get a local model ready without anyone opening a settings tab.

Capability What it does
llms.ollama.server.start Makes sure the daemon is answering, starting one only when none is. Starting a process is high risk, so this one asks for approval every time.
llms.ollama.server.stop Stops a daemon this extension started. One you started yourself is left alone and reported as such.
llms.ollama.server.status Says whether the daemon is up, which models are on this machine, and what to do next. Reads only.
llms.ollama.model.pull Downloads a model into the local store. It fetches several hundred megabytes, so it asks every time.

Starting a model never downloads one. A missing model is refused with the command that fixes it, because a start that quietly pulls half a gigabyte is a surprise, not a convenience.

Settings

Setting Default Description
llm.ollama.binary ollama The ollama command. Use a full path when it is installed somewhere the app cannot see.
llm.ollama.host 127.0.0.1 Host the daemon listens on.
llm.ollama.port 11434 Port the daemon listens on.
llm.ollama.embedModel nomic-embed-text Model used when the caller names none. Returns 768 numbers per text.
llm.ollama.autoStart true Start the daemon when nothing is answering. Turn it off to be told instead.
llm.ollama.readyTimeoutMs 60000 How long to wait for a daemon started here to answer.
llm.ollama.pullTimeoutMs 1800000 How long to wait for a pull before reporting it unfinished. The download itself keeps going.

Getting started

  1. Install ollama from ollama.com/download.
  2. Pull an embedding model: ollama pull nomic-embed-text.
  3. In the Vectors settings choose the on-machine embedder, model nomic-embed-text, dimension 768.

That is it. Nothing else is downloaded, and after step 2 nothing needs the network.