You hold
Model keys. Model invoices. The repo. The agent config.
Architecture
Every call crosses three controls in one hop: PreFlight checks your declared policy before the vendor sees the call (a refused call costs $0). LoopGuard stops runaway and repeated code loops. TraceGuard writes a receipt for calls that use tools, without message content. All three are included in every tier, including the free Trial.
REA sits in front of your vendor’s API. It does not live inside the model and it does not rewrite the answer.
Incoming code is parsed into an abstract syntax tree and reduced to a 64-bit structural hash. Comments and whitespace do not create a new key. Two infinite loops that differ only in wording still match. A cache hit replays the stored stop and sets cache_hit to true.
| Layer | Job | State |
|---|---|---|
| FastAPI gateway | OpenAI-compatible listener, including stream | Live |
| PreFlight | Declared deny rules, checked before the vendor call; a refused call costs $0 | Live |
| TraceGuard | Class-only receipt for calls that use tools (tool names, class, response label); no message content | Rolling out (observe) |
| TraceGuard Direct, Contain | Responses beyond observe: refuse one tool call, contain a session | Rolling out |
| TraceGuard Kill | End a session | Planned |
| Tenant ledger | Key, tier, loop pool, active flag | Live |
| LoopGuard (AST + time-boxed subprocess) | Structural fingerprint and a fixed probe time box | Live |
| Shared cache | Shared trap memory: a stored stop is matched by code structure alone, across vendors, models and tenants | Live |
| Token firewall (logit bias) | GPT path only; discourages the trapped pattern on the next generate | Live |
| BYOK forward | OpenAI, Anthropic, xAI, Gemini | Live |
| Time-boxed subprocess | Default probe on the public host | Live |
| Firecracker overlay | Same time-box contract when the host has KVM | Planned |
| Public self-serve mint | POST /v1/signup · Trial 2,000 loops, all three controls · name + work email + company (phone optional) | Live |
api.reacontrolplane.com currently uses a time-boxed subprocess probe. Health stays 1.4.8-prod.Repeats of the same failing structure are fast because the model is not called. First-seen runaways pay the probe time box but the model is not called; repeats are answered from cache without the probe. Local models do not infer faster because of REA — they get the same timeout and cache contract.
Model keys. Model invoices. The repo. The agent config.
The REA key, loop budget, cache, timeout policy, your declared PreFlight rules, and class-only TraceGuard receipts. Not message text. Not card numbers. Not a fallback vendor key for your traffic.