Ollama's stock defaults were sabotaging my small models A developer building Qwellar, a desktop app that gives local AI models persistent memory via Ollama, reports that Ollama's stock API defaults — temperature 0.8 and num_ctx 2048 — degrade the output of small local models such as Meta's Llama 3.2 3B. The writeup shows that passing an explicit options object (for example temperature 0.15 and num_ctx 16384) in the /api/chat request overrides those defaults, and argues that most users never realize the options field exists. If you've tried running local LLMs and felt like they were dumber than they should be... welcome. This blog is about what breaks when you build with local AI, Claude Code, and Ollama — and what I do to try and fix it. Any advice is more than appreciated. Please feel free to leave any questions, comments, or any issues that you may be currently facing. I come from finance, not CS. I've been shipping software with Claude Code and Ollama for the past 9 months, mostly by learning the hard way, noting what breaks, and working with Claude Code to fix it. This is my first blog post, so please bear with me. The point of my blog is to turn those lessons into something useful for other people in the field — and maybe get some help along the way. It's called Qwellar. It's a desktop app I've been building that treats a local AI as a long-term presence — persistent memory, chat with local models via Ollama, a workspace designed for working with AI over time. It's genuinely a learning exercise and a side project. It shows up in the debug stories because I keep running into these problems while building it, and I figure other people doing similar things will hit the same ones. No hot takes. No LinkedIn-style motivation posts. No AI-generated listicles about "The 10 Best Prompts for ChatGPT." No clickbait. Just information, observations, and hypotheses I wish someone had written when I started. If you catch me wrong — tell me. If you've figured out something I haven't — please share. I'm building this as a learning space, not a broadcast channel. The comments are where the real value happens half the time. Ollama is a program that runs AI models on your own computer, on your own hardware. Not in the cloud. If you were like me and downloaded a model like llama3.2:3b that's Meta's Llama 3.2, 3 billion parameters , Ollama gives it an API on localhost:11434. The number is just the port Ollama listens on by default. My project sends prompts to that API and gets responses back. No OpenAI. No Anthropic. No internet needed. That's the whole promise of "local AI" — the model lives on your machine, so your chats never leave. What I refer to as a "small model" is really just a model small enough to run on a normal laptop. Llama 3.2 3B fits in ~2GB of RAM. Frontier cloud models like GPT-4 or the Opus 4 series Anthropic are reportedly in the hundreds of billions to over a trillion parameters. Llama 3.2 3B is tiny compared to them. Tiny brains are more sensitive to how you talk to them. The Ollama API is just HTTP. When my project talks to Ollama, it's just sending a POST request to http://localhost:11434/api/chat http://localhost:11434/api/chat with a JSON body. Same as calling any web API. Here's the minimal version — just a prompt, no options: POST http://localhost:11434/api/chat { "model": "llama3.2:3b", "messages": { "role": "user", "content": "hey what's up" } } Ollama receives this, runs the model, streams back the response. Done. But Ollama lets you add an options object to that same JSON body. This is called "passing options." Same request, but now you're telling Ollama HOW to run the model: POST http://localhost:11434/api/chat { "model": "llama3.2:3b", "messages": { "role": "user", "content": "hey what's up" } , "options": { "temperature": 0.15, "num ctx": 16384 } } Three fields total: model, messages, and options. Each entry inside options is one dial — temperature, num ctx, top p, top k, repeat penalty, seed, num predict, stop. I'll focus on the two that mattered most. Now, Ollama runs the same model, on the same prompt, but with my dials instead of its defaults. If you leave options out entirely, Ollama falls back to its defaults temperature 0.8, num ctx 2048 . That's the trap. Silence equals defaults. Most people never even know the field exists. Temperature controls how "creative" the model is when picking each next word. Ollama ships with temperature = 0.8 by default. Why does that matter? Because users want their AI to do things, not just reply. For my project, I want it to pop up a confirmation card, trigger a search, start a new chat context, and so on. The problem: the model only knows how to output text. It can't press buttons. So I taught the model code words. In my system prompt, I tell it: "if the user asks to start over or wipe the chat, don't just say 'okay' — output this exact text: