Stop paying for the same failed loop twice.

REA sits between your coding agent and the model. It stops runaway code in about 150 milliseconds, fingerprints the shape of the failure, and answers repeats from cache so the model is not called again. You bring your own key. We never bill OpenAI or Anthropic tokens.

API live · 1.4.8-prod Bring your own key Structural memory ~150 ms stop Firecracker when the host allows it

In plain language

Your agent retries

Coding tools send broken code, get an answer, try again. Each try can be another paid model call — even when the mistake is the same infinite loop with different comments.

REA watches the shape

It looks at the structure of the code, not the wording of the prompt. The same trap hashes to the same fingerprint.

Repeats skip the model

The first time, the model still answers. The next time that structure appears, REA returns the stored answer. That is the savings. Unique work still pays the vendor.

What is on today

A public API

HTTPS at api.reacontrolplane.com. Same shape as OpenAI chat completions. Health reports INTEGRATED.

Two keys, always

A REA key opens the plane. Your model key rides in X-Upstream-Api-Key. REA does not keep a backup vendor key for customer traffic.

A hard stop

Runaway snippets are killed at about 150 ms. An empty monthly loop pool returns 402. A burst over your tier returns 429.

A receipt on every call

Responses include rea_meta: cache hit or miss, the fingerprint, and whether the sandbox blocked, crashed, or saw no code.

Where it sits

Your agent (Continue, Cline, or an SDK) | | POST /v1/chat/completions | Authorization: Bearer <REA key> | X-Upstream-Api-Key: <your model key> v https://api.reacontrolplane.com | v REA ControlPlane checks your REA key and monthly loop budget fingerprints code structure returns cache on a known trap otherwise probes the snippet (~150 ms) | v OpenAI or Anthropic — your key, your bill | v Vendor answer, plus a small rea_meta receipt

You do not change models. You change the base URL and add one header.

What it is not

Not a model

No training. No rewritten answers. The first answer you see is the vendor’s.

Not a single savings number

Cache helps when the same failure repeats. New failures still call the model. We do not publish a universal percentage.

Not Cursor-first

The supported path is Continue, Cline, or any client that can set a custom base URL and header.