Three months ago my API bill hit $41. Not huge, but I was just prototyping — paying per token to iterate on prompts felt like renting my own keyboard. So I moved the whole workflow to local models with Ollama. Cost since then: $0. Here's the honest version, including what got worse.
What I actually run
My machine: RTX 4070 (12GB VRAM), 32GB RAM. Nothing exotic.
ollama pull qwen2.5-coder:14b
ollama run qwen2.5-coder:14b
And since Ollama exposes an OpenAI-compatible endpoint, my existing code didn't change — just the base URL:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="not-needed",
)
resp = client.chat.completions.create(
model="qwen2.5-coder:14b",
messages=[{"role": "user", "content": "Write a pytest fixture for a FastAPI app"}],
)
print(resp.choices[0].message.content)
The numbers after 90 days
| GPT API (paid) | Ollama local | |
|---|---|---|
| Monthly cost | $28–41 | $0 |
| Requests/day (my usage) | ~200 | ~200, unlimited |
| Latency (first token) | ~0.8s | ~1.5s (14B on 12GB VRAM) |
| Works offline | no | yes |
| Data leaves my machine | yes | no |
| Refactor quality (my scorecard) | 9/10 | 7/10 |
What got worse (the part people skip)
- Long-context refactors are weaker. On a 40-file refactor, the local 14B model lost track of an interface change twice. The paid API didn't.
- You become your own ops team. Model updates, VRAM juggling, the occasional OOM at 2am.
- Cold start. First request after idle takes 20–30s to load the model into VRAM.
What got better
- I prototype recklessly now. 500-token system prompts, ten variations, no meter running.
- Client code stays on my machine. For one contract gig this wasn't optional.
- The 7B models (
qwen2.5-coder:7b) are genuinely fast for autocomplete-style tasks — sub-second responses.
My current split: local for iteration and anything sensitive, paid API for the final big refactors. I pair Ollama with this free open-source coding assistant for the editor side: https://ly.cyberserval.tech/iIETXiF
Anyone else running a hybrid setup? Where do you draw the local-vs-API line?
Top comments (0)