Client gallery · Cline
Point Cline at the plane.
Mint a Trial key, keep your vendor key, and set Cline to OpenAI Compatible against https://api.reacontrolplane.com/v1. LoopGuard, PreFlight and TraceGuard are on the hop in every tier.
https://api.reacontrolplane.com/v1
Open Trial signup. Name, work email, and company (phone optional). No card. Key is shown once; copy it. We cannot email a recovery copy yet. You bring your own model key.
Before you open Cline
- Mint a REA key at https://api.reacontrolplane.com/signup (or use a paid hop key issued by REA).
- Keep a vendor key for the model you will call: OpenAI, Anthropic, xAI, or Google AI Studio.
- Install Cline in VS Code (or Cursor). You will use API Provider OpenAI Compatible.
Cline fields (OpenAI Compatible)
| Field | Value |
|---|---|
| API Provider | OpenAI Compatible |
| Base URL | https://api.reacontrolplane.com/v1 |
| API Key | Your REA key (rea_…) |
| Custom header name | X-Upstream-Api-Key |
| Custom header value | Your vendor model key |
| Model ID | One of the four below |
Cline sends the REA key as Authorization: Bearer. The vendor key must go in X-Upstream-Api-Key. Missing that header returns 400 and burns no loop.
Step by step in Cline
- Open Cline settings → API Configuration.
- Set API Provider to OpenAI Compatible.
- Set Base URL to
https://api.reacontrolplane.com/v1(include/v1). - Paste your REA key into API Key.
- Add a custom header: name
X-Upstream-Api-Key, value = your vendor key. - Set Model ID to a matching vendor model (table below).
- Save. Send a short prompt. You should get a normal completion when the vendor key matches the model.
For Claude, also add X-REA-Upstream: anthropic if the model id is not already claude-*. The Anthropic key still goes in X-Upstream-Api-Key. xAI and Gemini do not need X-REA-Upstream.
Model picks the vendor
model | Vendor key in X-Upstream-Api-Key | Extra header |
|---|---|---|
gpt-4o-mini (or other gpt-*) | OpenAI (sk-…) | none |
claude-haiku-4-5-20251001 (or other claude-*) | Anthropic (sk-ant-…) | X-REA-Upstream: anthropic if the model name is not claude-* |
grok-3-mini (or other grok-*) | xAI | none |
gemini-flash-latest (or other Gemini id) | Google AI Studio | none |
Wrong pairing fails upstream — the plane does not swap keys for you. REA does not host models and does not bill tokens.
What you should see on the tape
After a hop works, these LoopGuard outcomes are live on the plane. Status names are the rea_meta.sandbox_status values documented on Set up:
| You send | Expected tape |
|---|---|
| Broken snippet twice | SYNTAX_REJECT, then CACHE_HIT (mode=cache), same structural_hash, vendor not billed again |
while True: pass (raw or fenced) | BLOCKED_TIMEOUT (mode=block) on first sight; the repeat is CACHE_HIT (mode=cache) |
| Tools with BYOK header | finish_reason=tool_calls when the vendor returns tools |
The two headers (reference)
Authorization: Bearer YOUR_REA_API_KEY X-Upstream-Api-Key: YOUR_MODEL_KEY Content-Type: application/json
Optional for Claude when the model id is not claude-*:
X-REA-Upstream: anthropic
Quick checks
- Opening
/v1in a browser is Not Found. The live route isPOST /v1/chat/completions. - 400 → missing
X-Upstream-Api-Key. - 401 → bad or missing REA key.
- 402 → loop pool empty. The agent is not “logged out.”
- Health:
curl -s https://api.reacontrolplane.com/healthshould showINTEGRATED,byok: true, version1.4.8-prod.
What runs on the hop
PreFlight checks declared deny rules before the vendor sees the call; a refused call costs $0. For calls that use tools, TraceGuard records a class-only receipt (tool names, class, response label) in observe mode. No message content is stored.