My OpenAI API bill in June was $183. In July it was $11. The difference: I moved 90% of my AI workload to local models with Ollama — and honestly, I should have done it a year ago.
Here's exactly what I run, the real benchmark numbers from my machine, and the uncomfortable truth about which tasks actually need GPT-4.
The setup (30 minutes, $0)
# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Pull the models I actually use daily
ollama pull qwen2.5-coder:7b # 4.7GB — coding
ollama pull llama3.1:8b # 4.9GB — general chat/writing
ollama pull nomic-embed-text # 274MB — embeddings for RAG
Total disk: ~10GB. Total cost: $0. No API key. Works on airplanes.
Real benchmarks, my machine (RTX 4070, 12GB VRAM)
I ran the same 50 prompts through each setup. These are my actual measurements, not marketing numbers:
| Task | Model | Speed | Quality (my rating /10) | Cost per 1M tokens |
|---|---|---|---|---|
| Code completion | qwen2.5-coder:7b | 48 tok/s | 8 | $0 |
| Code completion | GPT-4o API | ~30 tok/s | 9 | $5.00 |
| Unit test generation | qwen2.5-coder:7b | 51 tok/s | 8 | $0 |
| Docstring/README writing | llama3.1:8b | 55 tok/s | 8 | $0 |
| Complex refactoring | qwen2.5-coder:7b | 45 tok/s | 6 | $0 |
| Complex refactoring | GPT-4o API | ~30 tok/s | 9 | $5.00 |
| Embeddings for RAG | nomic-embed-text | 1,200 chunks/s | 8 | $0 |
The pattern: local models handle 90% of daily work at 85-90% of GPT-4o's quality. The 10% that genuinely needs a frontier model (multi-file refactors, subtle bug hunting) costs me ~$11/month via API.
How I route tasks in practice
import subprocess, json, requests
def ask_local(prompt: str, model: str = "qwen2.5-coder:7b") -> str:
r = requests.post("http://localhost:11434/api/generate", json={
"model": model, "prompt": prompt, "stream": False
})
return r.json()["response"]
def ask_gpt4o(prompt: str) -> str:
# only for the hard 10%
...
HARD_TASK_KEYWORDS = ["refactor across", "architect", "debug race condition"]
def smart_route(prompt: str) -> str:
if any(k in prompt.lower() for k in HARD_TASK_KEYWORDS):
return ask_gpt4o(prompt)
return ask_local(prompt) # free, private, instant
The privacy angle turned out to matter more than I expected: my company's code never leaves my machine now. No DPA negotiations, no "is this snippet confidential?" anxiety.
No GPU? You still have free options
- Google Colab free tier: T4 GPU, ~15 tok/s on 7B models. I ran qwen2.5-coder there for a week while traveling — usable, not fast.
- Hugging Face Inference API (free tier): thousands of models, rate-limited but $0. Good for testing before committing disk space.
- CPU-only: llama3.1:8b quantized runs at ~8 tok/s on my M2 MacBook Air. Painful for chat, fine for batch jobs overnight.
The controversial take
Paying $20/month for ChatGPT Plus to autocomplete your code in 2026 is like paying for bottled water when you have a tap. A 7B coding model running locally is good enough for completion, tests, docs, and boilerplate — which is 90% of what most of us actually prompt for.
The API maximalists will say "but GPT-4o is smarter!" Sure — for the 10% of tasks that matter, spend $11/month like I do. But routing everything through a paid API is just laziness with extra steps.
I pair Ollama with a free open-source coding assistant (this setup) that calls my local models directly — so my entire AI coding workflow now costs less than one Starbucks visit per month.
Have you tried going local-first? What's the one task where local models still fail you?
Top comments (0)