ACPpotamia
AI agent control plane

The control plane for AI agents.

Every call your agents make to OpenAI, Anthropic or your own models goes through one gateway. Budgets and rate limits per team, API key, customer and task; loops stopped in seconds; approved models only; a kill switch; and an audit trail you can export.

What it does

Control every call before it costs you.

Budgets and rate limits

Each call reserves its cost before it is sent, against the team, its API key, its customer and its task. Nothing can overspend together.

Loop stop

An agent repeating the same tool call is stopped within seconds, before it burns the budget. Only that task stops.

Kill switch

Stop one task, a whole team or every team in your organization. It applies on the very next call, everywhere.

Model access policies

Allow only approved models, or block expensive ones, per organization, team and API key. Wildcards like claude-* included.

Audit trail and export

Every call, blocked ones included, kept 365 days. Export CSV, JSONL or raw archives, or pull them into your SIEM.

Test keys

Run agents in development and CI against every limit and policy, with provider-format mock answers and no charge.

Built for

Three teams, one gateway.

How it works

Change one URL.

Keep your SDK and your provider account. Point the SDK at ACPpotamia, add your ACPpotamia key and name the agent. Your provider key is passed through and never stored.

The life of a call through ACPpotamiaYour agentOpenAI or AnthropicSDK, unchangedEdge checkACPpotamia keynearest CloudflareTeam control object1 Revoked key, suspended team2 Model policy3 Kill switch4 Rate limits: team, key, tenant, session5 Loop detection6 Budget hold: team, key, tenant, sessionAll decided in one atomic stepProviderOpenAI, Anthropicor your own serverSettlereal cost replaces the holdAudit logD1 records,R2 daily archivecallallowedanswer streams back to your agent, tokens counted liveblocked: 401 · 402 · 403 · 429, never sent
The life of a call: checked at the edge and by your team's control object, answered by the provider, metered live, settled at its real cost and logged.
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://acp.examopotamia.com/v1",
  apiKey: process.env.ACP_KEY,                       // acp_...
  defaultHeaders: {
    "X-Upstream-Key": process.env.OPENAI_API_KEY,    // passed through, never stored
    "X-ControlPlane-Agent-Id": "support-bot",
  },
});

Using Claude? The same key works with the Anthropic SDK: see the Anthropic setup. Your own model server works too on Pro and Enterprise.

Plans

Pick a plan.

FreeProEnterprise
Price$0 a month$49 a monthFrom $299 a month
Requests a minute20Up to 600Up to 10,000
Monthly spend under controlUp to $10Up to $50,000No ceiling
Loop stop and kill switchYesYesYes
Limits per API key and per sessionYesYesYes
Budgets per customer (tenant)NoYesYes
Model access policiesNoYesYes
Test keys with mock responsesYesYesYes
Compliance export (CSV, JSONL, raw archive)YesYesYes
Organizations: shared policy, kill switch, exportYesYesYes
Audit log, 365 daysYesYesYes
Request and response logsNoYesYes
Your own model endpointNoYesYes
Kill-switch webhooks, policy exportNoNoYes
Support reply2 business days1 business day4 business hours

Prices exclude what you pay your model provider; that bill stays with them. Upgrade any time from the console: pay monthly in USD with PayPal, or in Iraqi dinars with Wayl (cards, FIB, ZainCash). Custom Enterprise agreements: acp@examopotamia.com.

Questions

Common questions.

What is ACPpotamia?

ACPpotamia is a gateway that sits between your AI agents and model providers such as OpenAI and Anthropic. Every call is checked against your budget and rate limits, repeated calls from a stuck agent are stopped automatically, and everything is logged.

Do I have to change my code?

Only the base URL and two headers. You keep your OpenAI or Anthropic SDK and your provider account. Your provider key is passed through on each call and never stored.

How does the budget work?

Before each call, its cost is reserved from your monthly budget. If the budget cannot pay for the full answer, the answer is shortened to what is left; when nothing is left, calls stop with a 402 until you raise the budget or the month resets.

What is loop detection?

Agents sometimes repeat the same tool call over and over. ACPpotamia compares each call with the agent's recent calls and stops the agent when it sends the same request too many times in a short window, before it burns through your budget.

Which providers and APIs are supported?

OpenAI chat completions, the Responses API and embeddings; Anthropic messages; and your own OpenAI- or Anthropic-compatible model server on Pro and Enterprise. Streaming works everywhere.

How much does it cost?

Free costs nothing and covers up to $10 a month of model spend. Pro is $49 a month and Enterprise starts at $299 a month. Your model provider bills you separately for the models themselves.

Can I give each of my customers their own budget?

Yes, on Pro and Enterprise. Send X-ControlPlane-Tenant-Id with each call and every customer gets their own monthly budget and rate limit, so one customer's runaway agent cannot use up everyone else's. You can also cap each API key and each task.

Can I restrict which AI models my team uses?

Yes, on Pro and Enterprise. Allow only approved models such as claude-* and gpt-5*, or block expensive ones, for the whole organization, each team and each API key. Refused calls get HTTP 403 and never reach the provider.

Can I export logs for compliance?

Yes. Download every call as CSV or JSONL, or the raw daily .jsonl.gz archives, from the console, or pull them from an API into your SIEM. Records are kept for 365 days.

Can I test agents without paying for model calls?

Yes. Test keys (acp_test_) run every limit and policy but answer with mock responses in the provider's exact format, so CI and development cost nothing.

Does it work for several departments?

Yes. An organization groups teams with one model policy, one view of spend, one export and a kill switch that stops every team at once. Each team keeps its own keys and billing.

Can I pay in Iraqi dinars?

Yes. Pay monthly in US dollars with PayPal, or pay 1 or 12 months in advance in Iraqi dinars with Wayl, which accepts cards, FIB and ZainCash.

Where is my data stored?

On Cloudflare. Call records are kept for 365 days. Request and response text is stored only if you turn on payload logging. Provider API keys are never stored.