← the shad0w blog

System Zero: the reflex layer below your LLM

shad0w is the shadow of your LLM. It watches your LLM, learns to answer like it, and takes the repeat traffic, so the LLM only gets what shad0w is not sure about. What System Zero is, why a cache is not enough, and where shad0w stays silent.

shad0w is the shadow of your LLM. It watches your LLM answer, and learns to answer the same way. Most repeat traffic then goes to shad0w instead of the large LLM. Your LLM only gets what shad0w is not sure about.

That is a reflex. Pull your hand off a hot stove and you move before you feel it. The signal never reaches the part of your brain that thinks. It goes to your spinal cord and straight back out.

Your LLM stack has no reflex, so every repeat question takes over a second.

Three layers#

System 2the LLM thinks1416 ms per call
System 1a decision model picks271 ms (Kev-0.8B, local)
System 0shad0w answers what it has learned1.0 µs in C · 2.4 µs in Python

Systems 2 and 1 both compute every answer from scratch. Ask either one "which intent is my card got stolen?" a million times and you pay for a million computations of the same thing.

How much of your traffic is a repeat?#

Look at what apps send to their models. A support bot routes messages into a few dozen intents. A moderation step asks "spam or not?" An agent asks "which tool next?" between steps. These are the same few questions, about wording that repeats.

We measured three intent and topic tasks, with a hosted LLM as the model shad0w learned from. shad0w answered 61–86% of the traffic by itself, in microseconds. The other 14–39% still went to the LLM, as it should.

Why a cache is not enough#

A cache only knows exact repeats. Real users rarely type the same sentence twice. We put an exact-match cache and a semantic cache (nearest logged answer by embedding) through the same safety check as shad0w. The check uses α, the most disagreement you allow: α = 5% means the shortcut may differ from your LLM on at most 1 in 20 answers it gives. Both caches answered 0%: neither could prove it stayed within that limit.

Why a fine-tune is too much#

You could fine-tune a classifier instead. It can even answer more: a small head on an embedding model passed the check on 75% of traffic in our test, against 61% for shad0w. But it needs an embedding model at run time, takes 7.2 ms per decision, and is one more model to own, label for and retrain. A reflex should be smaller than the thing it protects. shad0w is 1.5 MB for 77 options and runs in a browser tab.

Defer by default#

A reflex that fires at the wrong time is worse than none. So System Zero follows four rules:

  1. It learns from the layer above. No labelling project. Your LLM or decision model is the teacher.
  2. It only answers what it can prove. A certificate limits how often it disagrees with your LLM. Everything else goes up.
  3. It lives where the request is. In your process, a browser, an edge worker. No network hop.
  4. Every pass upward teaches it. Each answer your LLM gives becomes training data, so the share shad0w answers grows.

The default is to defer. Serving is the exception that has to be earned.

The numbers#

The honest numbers post has every result, including the losses.

Where shad0w stays silent#

It also cannot write a reply or answer a question that needs knowledge of the world. That is what the layers above are for.

shad0w is a System Zero#

shad0w is a tiny model of hashed words and characters that it learns from your LLM's answers. It certifies itself with Learn-then-Test, and runs the same model in Python, JavaScript and C. A proxy puts it in front of chat models, the OpenAI Decisions API and System One servers with no code change.

Try the reflex. The playground runs real shad0w models in your browser. Type a message and watch the decision arrive before your finger leaves the key.
Try it on your own traffic.One line in front of the LLM you already call, or zero code with the proxy. pip install "shad0wllm[compile]"Start in 5 minutes →