Offline autonomous agent runtime for places where the system is down. llama.cpp + GGUF, CPU only, under 7 GB. Africa Deep Tech Challenge 2026.
# Ondjila
**An offline agent runtime for places where the system is down.**
`onjila` — path, road (Umbundu)
---
Ondjila runs a complete autonomous agent on a low-cost laptop with **no internet connection, no
cloud, and no GPU**, inside a **7 GB memory ceiling**. It is built for the two thirds of the world
where connectivity is intermittent, expensive, or simply absent — and where the information people
need most is locked behind a counter that is closed.
It is one engine and many modules. The engine is universal. The modules are local.
## The problem this exists to solve
Small language models are unreliable agents, and the failure is structural rather than cosmetic. A
1.7B model emits syntactically valid tool calls roughly 80% of the time but completes only about
**17% of multi-turn agentic tasks**. The arithmetic is unforgiving: with per-step accuracy *p* across
*m* steps, end-to-end success is *p^m*, and the per-step error rate *rises* as the trajectory grows
because the model conditions on its own earlier mistakes.
The usual response is a bigger model. That option does not exist under a 7 GB ceiling on a CPU.
**So Ondjila removes the decision from the model.** At every step the model can physically only emit
a legal transition for the state it is in, because the engine compiles a **GBNF grammar from that
state's schema** and constrains decoding to it. Rules, arithmetic, eligibility and deadlines are
evaluated by deterministic code that cannot hallucinate. The model does the one thing it is good at —
understanding what a person meant, and saying something back in their language.
The model proposes. Code disposes.
## Why this matters for languages nobody serves
Recent work on tool calling across Chinese, Hindi and Igbo found that multilingual degradation is
driven by **execution-interface violations rather than semantic misunderstanding**: models select the
correct tool and generate sensible arguments, then fail the strict surface form the executor dema …