Quackerr started as a simple idea: two cartoon ducks having random AI-generated conversations by a pond. It turned into something more interesting — a hands-on way to learn what it actually takes to run AI locally, warts and all.
What's actually running here
Every conversation is generated live by a small language model on a private server via Ollama, not a big hosted API. The dropdown in the controls lets you swap between three different local models — Llama 3.2, TinyLlama, and IBM Granite — each with its own personality and its own way of occasionally falling apart.
The debugging saga
Small local models don't always follow instructions perfectly. Getting reliable JSON dialogue out of a 1-billion-parameter model meant building a whole cascade of recovery logic: repairing missing brackets, untangling stacked responses, sanitizing bare speaker tokens, and more — each one added after tracing a real failure straight from the browser console. When every recovery attempt fails, the app quietly switches to a library of hand-written backup conversations instead of ever showing broken text.
Why build this
This project exists to practice building software collaboratively with Claude, one small feature and one bug at a time — and to get real, hands-on experience with a lightweight AI use case: reverse proxies, CORS, JSON parsing, rate limits, and comparing small local models side by side.
Built with Claude, Ollama, and a healthy amount of trial and error.