What a Local 9B Model Can Actually Build โ When You Give It an Agent
๐ฌ Four live pages are linked below โ every one built by a local model through its own agent, no cloud and no API bill. Click any of them.
Everyone benchmarks the frontier models. Almost nobody asks the question that actually matters for a creator on a budget: what can a small model โ one you run yourself, for free, on hardware you already own โ actually get done once you stop chatting with it and give it an agent?
So I ran the experiment, and I kept the receipts.
The setup
The model: ornith-1.5:9b โ a 9-billion-parameter open reasoning model, about 6.6GB, running locally on a Mac Mini through Ollama. No cloud, no API key, no per-token bill. On that Mac it generates at roughly 17 tokens a second โ glacial next to a frontier model's instant reply, but it costs nothing to run and never leaves the building.
The agent: Echo, a self-hosted Hermes agent that wraps the model in real tools โ write files, run shell commands โ and logs every run as a session. That wrapper is the whole point. It's the difference between a model that talks and a model that does. Every build below ran through the agent loop as a genuine session: the model chose to call a write_file tool, or a terminal tool to execute code, and I watched it happen.
One speed bump worth knowing if you try this yourself: Ollama hands local models a tiny ~4K-token context window by default, and an agent's system prompt sails right past it. I had to build a 64K-context variant of the model โ which, on this one, only costs 7.4GB of memory loaded. After that it cleared the agent's gate and got to work.
The scorecard
Here's every build, with an honest result on each. The links open the actual pages the model produced.
| Build | Result |
|---|---|
| Hello World page | โ clean |
| Sum of all primes below 10,000 | โ correct โ 5,736,396. It wrote the Python and ran it through its shell tool |
| Animated quote card | โ clean, first try |
| Northern Lights scene | โ โ but it first hid the title behind the glow, then fixed that itself |
| Generative spiral | โ โ it first escaped its own SVG so nothing rendered, then repaired its own code and re-ran it |
| Interactive doc (accordion + JavaScript) | โ ๏ธ broke on a JS syntax error โ and couldn't repair this one |
| Coffee landing page | โ 8 sections, zero bugs, one pass |
What it's actually good at
The pattern gets clear once you stop cheering or groaning at any single result.
It shines on conventional, well-trodden builds. The eight-section landing page โ sticky nav, hero, feature cards, three pricing tiers, a testimonial, a call-to-action, a footer โ came out in a single pass, fully styled, with a coherent warm palette and hover states, and not one bug. A landing page is a pattern this model has seen ten thousand times in training. Ask it for the thing it knows cold, and it hands you something you'd actually ship.
It leaves small bugs on the offbeat stuff. The aurora scene painted its title behind a glowing layer (a missing z-index). The generative-art page escaped its own SVG markup so the browser showed code instead of art. Each bug was tiny โ and each one left the page broken until someone caught it.
Here's the surprise: it can debug itself โ if you're specific. Told exactly what was wrong ("the title renders behind the aurora; give the text a higher z-index"), the model read its own file, found the spot, and fixed it. It did that twice. What it couldn't do was a big, open-ended fix: handed a 12KB file and a vague "the JavaScript is broken, fix it," it churned for 28 minutes and produced nothing. Small and precise, yes. Large and fuzzy, no.
The lesson that was on me, not the model
Half a dozen of my early runs looked like the model stalling โ sitting there for ten minutes producing nothing. I nearly wrote "unreliable, hangs constantly" in my notes.
It was a bug in my launcher. A shell-quoting mistake was feeding the agent an empty prompt โ and the model was doing exactly what you'd expect when handed nothing to do: nothing. The second I fixed the harness, every one of those "stalls" completed cleanly.
The receipt-checking instinct we bring to frontier-lab announcements applies to your own tools too: before you blame the model, prove it actually received the input.
The takeaway for creators
A small local model behind an agent isn't a toy, and it isn't a frontier replacement. It's a specific, useful tool. For standard, self-contained builds โ landing pages, components, simple pages, small scripts it can write and run โ it's slow but reliable and clean, it costs nothing per run, and your work never leaves your machine. Point it at fiddly, unusual, or debug-heavy work and you'll be babysitting.
If "bring your own model" is going to mean anything for working creators, this is the shape of it today: the question isn't can the small model do everything โ it plainly can't โ it's do you know which jobs to hand it. Four working pages up there suggest the honest answer is more than you'd guess.