← Blog
· OLAV Team

Building Agent Systems on Small Local Models

Inside an enterprise network you often can't send data to a hosted model, and a local frontier model is too expensive to run. A ~30B model is the practical sweet spot — but it hallucinates, its knowledge is thin, and its usable context is short. Here's how to build a real agent on top of it anyway.

Architecture Small Models Agents Local LLM NetOps

The constraint comes first

Start with where the data lives. Inside an enterprise network — device configs, topology, routing state, audit trails, customer environments — the most valuable data is also the most sensitive. In many of these environments you simply cannot send that data to a hosted model. Not for cost reasons, for security and compliance ones: the data isn’t allowed to leave the building.

So the model has to run locally. And that’s where the second constraint bites.

A local frontier-class model is expensive — not per token, but in hardware. Running a 100B+ model at usable latency means a serious GPU footprint that most teams can’t justify per-workstation or per-site. Walk down from there and you land, in practice, on models in the ~30B range. That’s the sweet spot for local deployment today: it fits on hardware people actually have, and it runs at a latency you can build an interactive agent around.

The catch is that a 30B model is not a frontier model, and it will remind you constantly.

What a 30B model gets wrong

Three limits show up immediately when you try to build an agent on one:

  1. Hallucination. Ask it to do multi-step work and it will happily invent a plausible-looking answer instead of doing the work — fabricate a summary, guess a value, loop on “let me just do X” without ever doing X.
  2. Thin and stale knowledge. It doesn’t know your environment, your conventions, or the specifics of the task domain, and its general knowledge is both smaller and older than a frontier model’s.
  3. Short usable context. The advertised context window is not the usable one. In practice you’re working with something closer to 8K tokens on the small end, 32K in the middle. Fill it with tool schemas and raw data and the model stops reasoning.

You don’t fix these by swapping the model — that door is closed. You fix them in the harness around it. Here’s how each one maps to a concrete technique.

Fixing hallucination: give it less rope, and less to invent

A small model hallucinates most when it’s asked to produce something it should be computing, or to plan something it should be following.

Fixing thin knowledge: retrieve it, don’t expect it

The model doesn’t know your world, so you feed the relevant slice of it in at call time.

Fixing short context: spend the budget deliberately

Treat context as a hard budget and account for every token.

The pattern

None of this is a model trick. It’s harness engineering: push work into deterministic code, ground answers in retrieved data, steer behavior through injected memory, and spend a tight context budget on purpose. Do that, and a model you can run on your own hardware — inside your own network, with nothing leaving the building — does work that “obviously needs a frontier model.”

Where we put this into practice

This is exactly the design philosophy behind OLAV — an open-source agent platform for network operations, built from the ground up to run on local small models. Every principle above is a load-bearing rule in it: the tiered context budget, the thin-router orchestrator, the tool caps, WHAT-not-HOW prompting, fat tools, and memory-based steering are all enforced in the architecture, not left to good intentions.

If you’re trying to build a serious agent on hardware you control, OLAV is a working reference for how the pieces fit together. It’s open source under BSL-1.1 — explore it at github.com/james-olavai/olav.