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.
Three teams, one gateway.
Engineering teams
Problem: one bug in an agent loop can run up a large bill on a shared API key.
You get: cost caps per API key, rate limits per task, loop stop and test keys for CI.
SaaS and agent platforms
Problem: one customer or a malicious prompt can use up resources every customer shares.
You get: a budget and rate limit per customer, set from your code, so one customer cannot hurt the rest.
Security and FinOps
Problem: no central view, policy or evidence across departments running agents.
You get: organizations, approved-model policies, exportable audit logs and a global kill switch.
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.
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.
Pick a plan.
| Free | Pro | Enterprise | |
|---|---|---|---|
| Price | $0 a month | $49 a month | From $299 a month |
| Requests a minute | 20 | Up to 600 | Up to 10,000 |
| Monthly spend under control | Up to $10 | Up to $50,000 | No ceiling |
| Loop stop and kill switch | Yes | Yes | Yes |
| Limits per API key and per session | Yes | Yes | Yes |
| Budgets per customer (tenant) | No | Yes | Yes |
| Model access policies | No | Yes | Yes |
| Test keys with mock responses | Yes | Yes | Yes |
| Compliance export (CSV, JSONL, raw archive) | Yes | Yes | Yes |
| Organizations: shared policy, kill switch, export | Yes | Yes | Yes |
| Audit log, 365 days | Yes | Yes | Yes |
| Request and response logs | No | Yes | Yes |
| Your own model endpoint | No | Yes | Yes |
| Kill-switch webhooks, policy export | No | No | Yes |
| Support reply | 2 business days | 1 business day | 4 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.
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.