Guide
Aug 24, 2026
Cursor defaults to hosted models: OpenAI, Anthropic, whichever provider you've added a key for. That means your code leaves your machine on every request, and it means paying per token for something your own hardware might already be able to run. If you've got Ollama running locally, Cursor can talk to it directly. The missing piece is an endpoint it can actually reach.
This is the full setup: Ollama running the model, Amallo turning it into an endpoint Cursor understands, and Cursor pointed at it.
Ollama needs to already be running with a model pulled before Amallo has anything to serve. Pick a model built for code (qwen2.5-coder and deepseek-coder are common choices) and pull it:
ollama pull qwen2.5-coder
Confirm it answers locally before moving on:
ollama run qwen2.5-coder "print hello world in rust"
By default this is bound to 127.0.0.1:11434, which is exactly what Amallo expects, so there's nothing to change here.
Install Amallo for macOS or Windows on the same machine as Ollama. It finds Ollama on 127.0.0.1:11434 automatically and opens with a base URL and key already generated:
base_url = https://relay.41tunnels.com/v1
api_key = 41t_9f2c…
This works whether Cursor is running on the same machine or a different one entirely: a laptop, a VPS, anywhere Relay is reachable from.
Everything you need to change lives on one screen: Cursor Settings → Models.

Cursor on Windows; the macOS panel is laid out the same. The four fields that matter are numbered to match the steps below. View full size
+ Add Custom Model. Use the exact tag ollama list prints: qwen2.5-coder, not a display name or shorthand. That's the identifier Amallo forwards straight through to Ollama. (The install in the screenshot happens to have gemma4:e4b pulled; yours will show whatever you pulled in step 1.)41t_… value from Amallo's window, not a key from OpenAI. Cursor only uses this field as "the key for whatever the base URL points at"./v1. This is the setting that sends requests to your own machine instead of OpenAI's servers.Switch Cursor's active model to it and send a test prompt. If it answers, the whole chain (Cursor, Relay, Amallo, Ollama) is working.
ollama list shows, not a friendly name.127.0.0.1:11434. If you've changed OLLAMA_HOST, point it back to loopback rather than opening it up (see exposing Ollama to the internet safely for why).The same base URL and key work unchanged for Continue or Aider, if you use either alongside or instead of Cursor. See giving Cursor, Continue, or Aider an OpenAI-compatible endpoint for the other two.