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
- Install ollama from ollama.com/download.
- Pull an embedding model:
ollama pull nomic-embed-text. - In the Vectors settings choose the on-machine embedder, model
nomic-embed-text, dimension768.
That is it. Nothing else is downloaded, and after step 2 nothing needs the network.