Comparison of AI gateways for mobile apps
Adding AI to a mobile app raises a few questions right away: how to keep the AI provider's key safe, how to limit how often each user can call and how much they can spend, and how to see who uses what. Here is a comparison of 17 products and patterns that answer them, from mobile AI gateways that handle all of it, through provider-managed access and backend platforms, to your own server.

The short answer
- You want everything ready, with several AI providers: a mobile AI gateway, made for exactly this, such as App AI Gateway, AIProxy or Gate/AI. It keeps the key, checks that requests come from your app, and adds limits, budgets and usage per user. Check how each one verifies requests and which platforms it supports.
- Gemini only: Firebase AI Logic. Google checks that requests come from your app, and you pay only for Gemini. Limits apply to the whole project, not to each user.
- Claude only, on Apple devices: Claude App Attest. The app calls Anthropic directly, with no server in between. It is still in beta, needs the OS 27 releases, and has no per-user limits.
- You already run a backend: keep checking requests there, and put a general LLM gateway such as Cloudflare, Vercel, OpenRouter or LiteLLM behind it for routing, budgets and logs.
- You want full control: your own server. It is cheap to run, but checks, limits, budgets and usage tracking are all code you write and maintain.
- Short, private tasks: a model on the phone. There is no key and no bill, but it runs only on recent devices, so keep a cloud option for everyone else.
Six approaches to adding AI to an app
There are several kinds of solutions for adding AI to an app. Some come with the protection a public app needs. With others, you build that protection yourself.
Mobile AI gateways
Services made for exactly this case. Your app calls the gateway instead of the AI provider, and the gateway keeps your provider key and adds the protection an app in users' hands needs.
- You get the key kept off the phone, a check that requests come from your app or a signed-in user, rate limits, budgets and usage per user or install, and several providers behind one endpoint, with little or no server work.
- You don't get the same strength everywhere. Some verify the app with Apple or Google, some only check a sign-in, and one checks nothing. Most are young products from small teams.
Examples: App AI Gateway, AIProxy, Gate/AI, Proxed.AI and Backmesh.
Provider-managed access
Some AI providers let an app call them directly, and check themselves that the request comes from your genuine app. This only works with that provider's own models.
- You get no server and no third party in between, and nothing to pay beyond the provider's own usage.
- You don't get other providers' models, or limits per user: limits apply to the whole app or project.
Examples: Firebase AI Logic, for Gemini and other Google models, and Claude App Attest, for Claude on Apple devices. OpenAI, Google and others also issue short-lived tokens for realtime voice, but your own server has to hand them out.
Backend platforms
Ready-made app backends, with a database, sign-in and server functions in one service, that now also include access to AI models, so your app can call AI through them without holding the key.
- You get the key kept off the phone, and requests only from users who signed in through the platform.
- You don't get a check that requests come from your app, or per-user limits and budgets. Your app is also tied to that platform.
Examples: Convex AI Gateway and AWS Amplify AI Kit.
Models on the phone
A model can also run on the phone itself, with no provider key and no bill per request. These models are much smaller than cloud models and run only on recent devices, so they suit simple tasks such as summarising or sorting a short text. If your app has to work for most of its users, keep a cloud approach as a fallback. They are too different to compare with the rest, so the table leaves them out.
Examples: Apple Foundation Models, Gemini Nano, and open-source runtimes such as llama.cpp.
General LLM gateways
Services made for servers, not for apps. To use one with an app, you need your own backend that checks the request and then calls the gateway.
- You get, behind your own server, one API for many providers, fallbacks, caching, budgets and detailed logs.
- You don't get protection for a public app: no check that a request comes from your app, and usually no user identity you can trust.
Examples: Cloudflare AI Gateway, Vercel AI Gateway, OpenRouter, Portkey and LiteLLM.
Your own server
You build everything yourself, usually as a small function on a cloud platform that keeps the key and calls the provider.
- You get full control, and often the lowest running cost: a few dollars a month or less.
- You don't get anything ready-made. Checking the app, knowing your users, limits, budgets and usage tracking are all code you write and maintain.
Examples: Cloudflare Workers, Firebase Functions, Supabase Edge Functions, Vercel Functions and AWS Lambda. How to protect your OpenAI API key in an iOS app walks through the checks such a server needs.
What to compare
These are the questions worth asking about any solution, and what each one means for your app.
- Which AI providers can it call? Some solutions reach one provider only, such as Firebase with Gemini or Claude App Attest with Claude. Others reach many, so you can switch models or use several without changing your app.
- Can you run it yourself? A hosted version means no server to deploy or maintain. An open-source version lets you run it on your own servers, read the code, and keep using it if the vendor stops.
- Who bills you for tokens? With your own provider key, the provider bills you directly at its normal price. Otherwise you buy tokens or credits through the vendor, sometimes with a fee on top.
- Is the key kept off the phone? Anything inside an app can be extracted, so the provider key should stay on a server. A key sent to the app while it runs is still on the phone.
- Can it tell your real app from a script? Three things help:
- Attestation from Apple or Google: App Attest and DeviceCheck on Apple devices, and Play Integrity on Android, prove that a request comes from your genuine app on a real device. Check whether the proof comes with every request, or once for a session token that can be copied and reused until it expires.
- Certificate pinning: the app accepts only your server's certificate, which makes reading or changing its traffic harder. It proves nothing to the server on its own.
- Third-party app protection: SDKs such as Approov or Talsec add their own proof, with extra checks for jailbroken devices and hooking tools. None of the solutions here checks it yet, so it needs your own server. See third-party app protection tokens in the glossary.
- Does it know your users, and who has paid? The gateway should check the user's sign-in itself, with your login provider, and check payments on the server, for example with the App Store. A user ID that the app simply sends can be faked.
- Which rate limits can you set? Limits per user, per install, per IP address or for the whole app stop one person or script from using everything. A per-user limit is only as reliable as the way the gateway knows the user.
- Can you cap spending? A budget in money or tokens stops calls when it runs out. A budget per user stops one user from running up your bill. A budget for the whole app caps the total, but blocks everyone once it's reached.
- Can you restrict what a request does? Allowing only the models you choose, fixing the instructions on the server and capping the answer length stop your endpoint from becoming a free AI service for whoever finds it. Some solutions also filter harmful content or personal data.
- Which AI features does it support? Check streaming answers, realtime voice, and audio, images and files, if your app needs them. Not every gateway passes every kind of request through.
- Can you monitor logs, usage and costs? A log of each request with its time, model, tokens and cost, and optionally the prompt and answer themselves. Usage and cost per user, and alerts when spending crosses a line you set.
- How easy is it to add to your app? A Swift, Android, Flutter or React Native library saves you writing the network and token code yourself. An API, a command line or an MCP server lets scripts and AI coding agents set it up for you.
- What does it cost? Whether there is a free plan or a free self-hosted version, and the monthly price at the number of requests you expect. The AI provider's token bill comes on top.
The Feature comparison below answers these questions for all 17 solutions side by side, in the same order.
Feature comparison
One column per solution, grouped by kind, and one row per feature, with the monthly price at three volumes at the bottom. Prices leave out what you pay the AI provider for tokens, but include any fee on those tokens. It starts with mobile AI gateways; switch to another kind of solution above the table, and App AI Gateway's column stays for reference. A feature counts whether it comes free or on a paid plan, and the note on its mark names the plan. Point at a feature's info icon to see what it means, or at an underlined mark or number for more, and open a solution's full details below for every note. The glossary explains what each technique protects against and what it doesn't.
| Feature | App AI Gateway | AIProxy | Backmesh | Gate/AI | MAIG | PicoAIProxy | Proxed.AI | ServerlessAI | Claude App Attest | Firebase AI Logic | Provider ephemeral tokens | AWS Amplify AI Kit | Convex AI Gateway | Cloudflare Workers (DIY) | Firebase Functions + App Check (DIY) | Supabase Edge Functions (DIY) | Vercel Functions or AWS Lambda (DIY) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Providers, hosting and billing | |||||||||||||||||
| Providers supported: How many AI providers, such as OpenAI or Anthropic, it can send requests to. Point at a number for the list. | 16: OpenAI, Anthropic, Google Gemini (AI Studio), xAI, Perplexity, DeepSeek, Moonshot (Kimi), Groq, Mistral, Together AI, Fireworks AI, Cerebras, Hugging Face, Baseten, BytePlus ModelArk, OpenRouter. Also Cloudflare AI Gateway, Vercel AI Gateway and any custom base URL. | 17+: OpenAI, Anthropic, Google Gemini, Azure OpenAI, Mistral, DeepSeek, Groq, Perplexity, Fireworks AI, Together AI, OpenRouter, Replicate, Stability AI, Fal, ElevenLabs, DeepL and more. | 4: OpenAI, Anthropic, Google Gemini, Cloudflare Workers AI. Other APIs on request. | 3 + custom: OpenAI, Anthropic, Google Gemini, and custom LLMs. | 3: OpenAI, Anthropic, Google Gemini. | 3: OpenAI, Anthropic (Claude 3 models, streaming only), Groq. | 3: OpenAI, Anthropic, Google Gemini. | 4: OpenAI, Anthropic, Groq, Mistral. | Claude only | Gemini only | 7, voice only: Realtime and voice APIs only: OpenAI Realtime, Gemini Live, xAI voice, Deepgram, AssemblyAI, ElevenLabs, Inworld. Each token works only with its own provider. | Bedrock only: Models on Amazon Bedrock: Anthropic Claude, Amazon Nova, Meta Llama, Mistral, Cohere, AI21. | Not listed: No provider list is published. Documentation examples use OpenAI and Anthropic models. | Any | Any | Any | Any |
| Hosted version: The vendor runs it for you. You sign up and configure it, with no server to deploy or maintain. | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Partly: Beta: run by Anthropic | Yes | Partly: The provider issues tokens, but you run the server that requests them | Yes | Yes | Build it yourself | Build it yourself | Build it yourself | Build it yourself |
| Open-source version: The code is open source, so you can run it on your own servers or cloud account and change it. | Yes | No | Yes | No | No | Yes | Partly: AGPL-3.0, but the README says non-commercial use only; needs Supabase and Redis | No | No | No | No | No | No | Not applicable | Not applicable | Not applicable | Not applicable |
| Your own AI provider key (BYOK): You use your own key from the AI provider, and the provider bills you directly. Without it, you buy tokens or credits from the vendor, sometimes with a fee. | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Not applicable | No | Yes | Yes | Yes | Yes |
| App and key security | |||||||||||||||||
| Key stays off the phone: The provider key never ships inside the app. | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| App Attest: Apple's proof that a request comes from a genuine install of your app on a real device. | Yes | No | No | Yes | No | No | No | Not documented | Partly: Beta: the Swift package is in beta, and the docs still mention the OS 27 betas | Yes | No | No | Build it yourself | Build it yourself | Yes | Build it yourself | Build it yourself |
| DeviceCheck: Apple's older proof that a request comes from a real Apple device. | No | Yes | No | Not documented | No | No | Yes | Not documented | No | Yes | No | No | Build it yourself | Build it yourself | Yes | Build it yourself | Build it yourself |
| Play Integrity: Google's proof that a request comes from your genuine app on a certified Android device. | No | No | No | Yes | No | No | No | Not documented | No | Yes | No | No | Build it yourself | Build it yourself | Yes | Build it yourself | Build it yourself |
| Every request verified: Each request carries a fresh proof, not a reusable session token that can be copied. | Yes | Yes | No | Partly: Attestation once per install; per-request DPoP proof from device key | No | No | Partly: token verified every request; no one-time/replay check found | No | No | Partly: Limited-use tokens (5 min, one-time) are opt-in; default is reusable session token | No | No | Build it yourself | Build it yourself | Partly: Single-use limited-use tokens via consumeAppCheckToken (beta, Node) | Build it yourself | Build it yourself |
| Certificate pinning: The app only trusts the gateway's own certificate, which makes intercepting traffic harder. | No | Yes | No | Not documented | Not documented | No | No | Not documented | Not documented | Not documented | No | Not documented | Not documented | No | No | No | No |
| Users and payments | |||||||||||||||||
| Checks signed-in users: The gateway checks proof from your login provider that the user signed in to your app, so it knows which user sent each request. | Yes | No | Yes | No | No | Partly: StoreKit appAccountToken only; no OIDC/Firebase | No | Yes | No | Yes | Build it yourself | Yes | Yes | Build it yourself | Yes | Yes | Build it yourself |
| Checks paying users: Verifies on the server that the user has paid before allowing paid features. | Partly: Only a claim in the ID token (e.g. RevenueCat Firebase ext); no StoreKit check | Not documented | No | No | No | Yes | No | Build it yourself | No | No | Build it yourself | Build it yourself | Build it yourself | Build it yourself | Build it yourself | Build it yourself | Build it yourself |
| Rate limits and budgets | |||||||||||||||||
| Per-user or per-install rate limits: Limits how often each user or each install of your app can call, so one person or script can't use everything. Per user needs a sign-in the server trusts; per install works without one. | Yes | Partly: per client ID; default IDFV is resettable | Yes | Yes | Partly: Pro+ per-user quotas keyed on unverified user value | Partly: Opt-in, in-memory; minute check uses hourly counter | Not documented | Partly: Quota per user group; per-user units not documented | No | Partly: 100 RPM default, one project-wide value; user identity not defined in docs | Build it yourself | Build it yourself | Build it yourself | Build it yourself | Build it yourself | Build it yourself | Build it yourself |
| Per-IP limits: Limits each network address. | No | Yes | No | No | Not documented | No | Partly: IP only as fallback when no team is resolved | Not documented | Not documented | Not documented | Build it yourself | Build it yourself | Not documented | Build it yourself | Build it yourself | Build it yourself | Partly: Vercel WAF IP/JA4 keys; AWS needs WAF; per-region counters |
| Per-app rate limits: Caps how many requests the whole app can make per minute, hour or day, across all users together. | Yes | Not documented | No | Yes | Yes | Partly: Only combined anonymous-user pool | Yes | Not documented | Yes | Yes | Partly: Provider account rate limits only | Build it yourself | Build it yourself | Build it yourself | Build it yourself | Build it yourself | Partly: Lambda reserved concurrency; Vercel WAF rule |
| Per-user budgets: A money or token budget for each user of your app, or each install when there's no sign-in. Calls stop when it runs out, so one user can't run up your bill. | Yes | Not documented | No | Yes | No | No | No | Not documented | No | No | Build it yourself | No | Build it yourself | Build it yourself | Build it yourself | Build it yourself | Build it yourself |
| Per-app budgets: One money or token budget for the whole app. Calls stop when it runs out, which caps your bill but also blocks every user. | Yes | Not documented | No | Not documented | No | No | No | Not documented | Yes | Partly: Only an experimental project spend cap for the Gemini API; Google Cloud budgets only alert | Partly: Only the provider's account or project spend limit | No | Yes | Build it yourself | Build it yourself | Build it yourself | Build it yourself |
| Request controls | |||||||||||||||||
| Model allowlist: Only the models you choose can be called. | Yes | Partly: endpoint allowlist and model override, not a model allowlist | No | Not documented | Partly: Routes pin models but literal model names bypass routing | No | No | Partly: Capabilities (chat, embedding, image) enabled per group; model-level unknown | Not documented | Partly: Template-only mode pins model via templates (Preview) | Partly: Gemini liveConnectConstraints; OpenAI mint-time session config, enforcement unclear | Yes | Build it yourself | Build it yourself | Build it yourself | Build it yourself | Build it yourself |
| Pinned prompts and output caps: The server pins instructions or parameters such as maximum output, so the app can't change them. | Partly: Param deep-merge, token cap and fallbacks on custom endpoints, for every provider | Partly: model overrides per endpoint; prompts/max tokens not documented | No | Not documented | Partly: Routes and server-managed prompt sets; no max-token enforcement documented | No | Partly: structured routes apply project model, system prompt and schema | Not documented | No | Partly: Server prompt templates (Preview); not for Live; Flutter pending | Partly: Gemini can lock config; others not documented | Yes | Build it yourself | Build it yourself | Build it yourself | Build it yourself | Build it yourself |
| Moderation and personal-data filters: Content safety or personal-data redaction before or after the model. | No | Not documented | No | Not documented | No | No | No | Yes | No | Not documented | No | Not documented | Not documented | Partly: AI Gateway Guardrails/DLP optional, billed as Workers AI | Build it yourself | Build it yourself | Build it yourself |
| AI capabilities | |||||||||||||||||
| Streaming: Answers arrive token by token. | Yes | Yes | Not documented | Not documented | Yes | Yes | Yes | Not documented | Yes | Yes | Yes | Partly: AppSync WebSocket subscriptions, not HTTP SSE | Yes | Yes | Yes | Not documented | Yes |
| Realtime and voice sessions: WebSocket or WebRTC sessions such as realtime voice. | No | Yes | No | Not documented | No | Not documented | No | No | No | Partly: Gemini Live via SDK in Preview; no ephemeral tokens mentioned | Yes | No | No | Partly: WebSockets supported; DO bills wall time while connected | No | Not documented | Partly: Vercel WebSockets beta; Lambda needs API Gateway WebSocket |
| Audio, images and files: Endpoints beyond text chat. | Partly: Text, images, speech, transcription and embeddings, as custom endpoints too; files via explicit paths | Yes | Partly: audio, images, files paths allowed; no embeddings path by default | Not documented | No | Partly: OpenAI audio/images/embeddings; Anthropic chat only | Partly: vision, PDF, image-generation routes; audio/embeddings unknown | Partly: OpenAI text-to-image and embeddings; others chat only | Partly: Images yes; Files API and audio not available via package | Yes | Partly: Audio-centred; chat/text APIs not covered | Not documented | Partly: Alpha: images, video and voice; embeddings are stable | Build it yourself | Build it yourself | Build it yourself | Build it yourself |
| Fallbacks: Switches to another model or provider when one fails. | Partly: Custom endpoints only; no generic-proxy fallback, retries or routing | Not documented | No | Not documented | Yes | No | Partly: retries and circuit breakers; no cross-provider fallback | Partly: Home page claims switch and fallback between providers; docs silent | Partly: Fallback to on-device Apple model is a documented pattern | Partly: Hybrid on-device to cloud; no multi-provider routing | No | Not documented | Not documented | Partly: AI Gateway offers it; else code | Build it yourself | Build it yourself | Build it yourself |
| Gateway caching: The gateway saves answers and replies to an identical request itself, without calling the provider, so no tokens are spent. Useful when many users trigger the same request, such as a summary of the same article. The providers' own prompt caching doesn't count: it works through almost any gateway. | No | Not documented | No | Not documented | No | No | Not documented | Not documented | No | Not documented | Not applicable | Not documented | Not documented | Build it yourself | Build it yourself | Build it yourself | Build it yourself |
| OpenAI-compatible API: Works with existing OpenAI client code by changing the base URL. | Partly: Provider-native passthrough; base-URL swap works, no cross-provider translation | Partly: SwiftOpenAI client works; generic base-URL swap not documented | Yes | Partly: Provider paths via SDK call; base-URL swap not documented | Yes | Yes | Partly: pass-through routes; client sends combined key.token as Bearer | Yes | No | No | No | No | Partly: OpenAI-compatible but only callable from Convex actions | Build it yourself | Build it yourself | Build it yourself | Build it yourself |
| Observability | |||||||||||||||||
| Request metadata logs: A record of each request and its response: when it happened, which model, tokens, cost and result, but not the prompt or the answer. | Yes | Yes | Partly: The self-hosted version stores each request; hosted logs not documented | Yes | Yes | Partly: In memory and console output only | Yes | Not documented | Not documented | Partly: Sampled AI monitoring traces | No | Partly: CloudWatch logs of the Lambda functions | Partly: Usage per project and function; per-request detail not documented | Build it yourself | Build it yourself | Build it yourself | Build it yourself |
| Request content logs: A record of the prompt the user sent and the answer the model returned. It helps with debugging, but means keeping your users' data, so each note says whether it's opt-in, on by default or always on. | No | Partly: Only for errors | Partly: The self-hosted version stores them, with no off switch; hosted not documented | No | No | No | Partly: The code stores response text, though the privacy policy says it isn't stored | Not documented | Not documented | Yes | Not documented | Not documented | Not documented | Build it yourself | Build it yourself | Build it yourself | Build it yourself |
| Usage per user: How much each of your users has used. | Yes | Yes | Yes | Yes | Partly: userId visible in logs | No | No | Not documented | No | Not documented | No | No | Build it yourself | Build it yourself | Build it yourself | Build it yourself | Build it yourself |
| Cost tracking: What the calls cost, by app, model or user. | Yes | Not documented | Yes | Yes | Partly: Token counts and usage by route; dollar cost not documented | No | Yes | Not documented | Partly: Per workspace and model via Console and Admin API; no per-integration split documented | Partly: Token usage by modality per app and model; billing in Google Cloud | Partly: Provider dashboards per key/project | No | Yes | Partly: AI Gateway analytics per gateway; per user is diy | Build it yourself | Build it yourself | Build it yourself |
| Alerts: Notifications by email, chat or webhook when usage or spend crosses a line. | No | Partly: suspicious-activity notifications; channels/triggers unknown | Not documented | Not documented | Partly: Email alert before monthly limit | No | Partly: email on high consumption via threshold; check described as simplified | Not documented | Partly: Workspace spend threshold alerts; channels not specified | Partly: Google Cloud budget alerts; AI monitoring alerts not documented | No | Not documented | Partly: Warning thresholds and email on usage limits | Not documented | Partly: GCP budget alerts; no AI-specific alerts | Not documented | Partly: Vercel spend notifications; AWS Budgets not read |
| Developer experience | |||||||||||||||||
| Swift SDK: A library for iOS and other Apple platforms. | Yes | Yes | No | Yes | Yes | No | No | No | Partly: Beta: the Foundation Models provider package | Yes | Not documented | Not documented | Yes | No | Yes | Partly: supabase-swift for auth/invoke; AI call is your function | No |
| Android SDK: A Kotlin or Java library for Android. | No | No | No | Yes | Yes | No | No | No | No | Yes | Not documented | Not documented | Yes | No | Yes | Partly: supabase-kt for auth/invoke | No |
| Flutter or React Native SDK: A library for cross-platform apps. | No | No | Partly: Flutter + Firebase tutorial; works with any SDK via base URL | Yes | No | No | Partly: Expo / React Native guide for iOS DeviceCheck; no library | No | No | Yes | Not documented | Partly: React Native page exists; Flutter not documented | Partly: React Native yes; Flutter not seen | No | Yes | Partly: Flutter and JS clients; not re-verified | No |
| API, CLI or MCP: You can set it up and change it through an API, a command line or an MCP server, so scripts and AI agents can manage it, not only a dashboard. | Yes | Not documented | Partly: HTTP CRUD API and Postman/Bruno collections; not a documented public API | Not documented | No | No | Not documented | Not documented | Partly: Admin API for workspaces/usage; app-integration API unknown | Not documented | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Compliance certifications: SOC 2, ISO 27001 or similar. | No | Not documented | Not documented | No | No | No | Not documented | No | Not documented | Not documented | Not documented | Not documented | Partly: Professional plan lists HIPAA and SOC 2 reports; whether they cover the AI Gateway is unknown | Not documented | Not documented | Not documented | Not documented |
| Monthly price beyond AI tokens | |||||||||||||||||
| Free plan: A hosted plan you can use without paying, with no time limit. Trials don't count. | Yes | Yes | No | Yes | Yes | Not applicable | No | Yes | Yes | Yes | Build it yourself | Partly: AWS free allowances, some for the first 12 months only | No | Yes | Yes | Yes | Yes |
| Free self-hosted version: You can run it on your own servers without paying the vendor. The servers themselves still cost money. | Yes | No | Yes | No | No | Yes | Partly: Free, but its README says non-commercial use only | No | No | No | Not applicable | No | No | Not applicable | Not applicable | Not applicable | Not applicable |
| At 10k requests: What the solution itself costs per month at 10k requests. The AI provider's token bill is extra, but fees on it are included. | $10 | $10 | $10 | $4.99: Priced by devices, not requests; assumes 200 requests per device a month | $9 | $5: Self-hosted: an estimate for one small server on Railway | $8.33: The Pro plan, billed yearly at $100 | Unclear: Its pricing page is offline; archived prices are set by users and requests | $0 | $0 | $0–5: The cost of your own server that requests tokens, estimated on Cloudflare Workers | $1: Pay-per-use AWS services, estimated for streamed answers | $0 | $0–5: $0 on the free plan, $5 on Workers Paid | $0 | $0–25: $0 on the free plan, $25 on Pro for production | $0–20: Vercel Pro at $20, or AWS Lambda at about $15 at a million requests |
| At 100k requests: What the solution itself costs per month at 100k requests. The AI provider's token bill is extra, but fees on it are included. | $39 | $50 | $10 | $9.99: Priced by devices, not requests; assumes 200 requests per device a month | $61: Pro plan plus $0.0008 for each request over its allowance | $5: Self-hosted: an estimate for one small server on Railway | No plan: No plan covers more than 50,000 calls a month | Unclear: Its pricing page is offline; archived prices are set by users and requests | $0 | $0 | $0–5: The cost of your own server that requests tokens, estimated on Cloudflare Workers | $11: Pay-per-use AWS services, estimated for streamed answers | $0–16: Convex usage; the range depends on how function time is metered | $0–5: $0 on the free plan, $5 on Workers Paid | $0–8: The range depends on the function's CPU size | $0–25: $0 on the free plan, $25 on Pro for production | $0–20: Vercel Pro at $20, or AWS Lambda at about $15 at a million requests |
| At 1M requests: What the solution itself costs per month at 1M requests. The AI provider's token bill is extra, but fees on it are included. | $149 | $200: Exactly at the Premium plan's allowance; the price above it isn't published | Quote: Above the Starter plan; the Pro plan's price isn't published | Quote: 5,000 devices is more than the largest published plan | $759: Business plan plus $0.0008 for each request over its allowance | $7: Self-hosted: an estimate for one small server on Railway | No plan: No plan covers more than 50,000 calls a month | Unclear: Its pricing page is offline; archived prices are set by users and requests | $0 | $0–735: Depends on how many users sign in: Firebase Authentication is free up to 50,000 a month | $0–5: The cost of your own server that requests tokens, estimated on Cloudflare Workers | $292: Pay-per-use AWS services, estimated for streamed answers | $25–227: A Convex plan plus usage; the range depends on how function time is metered | $5: Workers Paid | $18–118: The range depends on the function's CPU size | $25: The Pro plan | $15–31: Vercel Pro at $20, or AWS Lambda at about $15 at a million requests |
- Yes
- Partly
- Build it yourself
- No
- Not documented
- Not applicable
Every solution in detail
What each solution gives you and what it doesn't. Its full details add prices and a note on every feature in the table. App AI Gateway is the product we build. It comes first in its group, and it is described by the same rules as every other solution.
Mobile AI gateways
Hosted or self-hosted proxies built for apps: they hold the key and decide which app installs or users may call it.
App AI Gateway
A gateway for iOS apps that you can use hosted, or run for free on your own Cloudflare account.
- You get proof on every request that it comes from your app on a real iPhone, and checks of your users' sign-in. Rate limits, monthly budgets and usage for each user or install, and only the models you allow, across 16 AI providers on your own keys. A free plan of 1,000 requests a month, then $10 to $149.
- You don't get Android support, alerts when spending rises, or a payment check with the App Store itself.
Full details
- Website
- appaigateway.com
- Providers
- 16 types incl. OpenAI, Anthropic, Gemini (AI Studio), xAI; plus CF AI Gateway, Vercel AI Gateway, custom base URL
- Platforms
- iOS 16+ (Swift package); server apps via API key; no Android
- Pricing
- subscription by monthly request allowance; BYOK; self-host free
- Free tier
- 1,000 requests/month, no card, no expiry
- Estimates
- Hosted tiers; 10k sits exactly at the Starter cap (no headroom). Allowance is account-wide and counts every dispatched request incl. failed provider calls. Self-host: $0 to vendor, Cloudflare Workers/D1/Durable Objects costs only (rough estimate ~0 at 10k, ~0-5 at 100k, ~5-10 at 1M; Cloudflare prices not re-verified).
Providers, hosting and billing
- Hosted version: Yes (Hosted service)
- Open-source version: Yes (Apache-2.0; runs on your own Cloudflare account)
- Your own AI provider key (BYOK): Yes (Only BYOK; no token resale or markup)
App and key security
- Key stays off the phone: Yes (Encrypted vault (local AES-GCM or external KMS); never returned)
- App Attest: Yes (Full attestation + assertion + counter; receipt and fraud metric not checked)
- DeviceCheck: No (DeviceCheck framework used only for App Attest)
- Play Integrity: No (No Android support anywhere)
- Every request verified: Yes (Fresh App Attest assertion on every request, bound to the token and counter-checked; default for new apps; needs Swift package 1.4+)
- Certificate pinning: No (SDK uses URLSession.shared; custom session injectable (diy))
Users and payments
- Checks signed-in users: Yes (Verifies JWTs: Firebase, Supabase, Auth0, Clerk, Apple, any JWKS)
- Checks paying users: Partly (Only a claim in the ID token (e.g. RevenueCat Firebase ext); no StoreKit check)
Rate limits and budgets
- Per-user or per-install rate limits: Yes (Per install on iOS apps, per user on server apps; per minute and per day)
- Per-IP limits: No (IP limits only on auth endpoints (60/min), not on proxy requests)
- Per-app rate limits: Yes (Per-app requests per minute and per day)
- Per-user budgets: Yes (Monthly dollar budget per signed-in user or per install)
- Per-app budgets: Yes (Monthly dollar budget for the app)
Request controls
- Model allowlist: Yes (Per app per provider; unpriced models refused)
- Pinned prompts and output caps: Partly (Param deep-merge, token cap and fallbacks on custom endpoints, for every provider)
- Moderation and personal-data filters: No (No moderation or PII redaction)
AI capabilities
- Streaming: Yes (Unbuffered SSE passthrough)
- Realtime and voice sessions: No (No WebSocket or Realtime handling)
- Audio, images and files: Partly (Text, images, speech, transcription and embeddings, as custom endpoints too; files via explicit paths)
- Fallbacks: Partly (Custom endpoints only; no generic-proxy fallback, retries or routing)
- Gateway caching: No (No cache of its own; Cloudflare AI Gateway's cache works when you route through it)
- OpenAI-compatible API: Partly (Provider-native passthrough; base-URL swap works, no cross-provider translation)
Observability
- Request metadata logs: Yes (Each attempt, kept 90 days)
- Request content logs: No (Never stored)
- Usage per user: Yes (Users and Installs pages, by-user and by-install breakdowns, block action)
- Cost tracking: Yes (By model/provider/app/user; locally computed estimate)
- Alerts: No (No email/Slack/webhook; only in-console 80% plan-allowance banner)
Developer experience
- Swift SDK: Yes (iOS 16+; builds and signs each request and resends once on a 401; you send it with URLSession)
- Android SDK: No (None; no roadmap in repo)
- Flutter or React Native SDK: No (No RN/Flutter/Unity/Web SDK)
- API, CLI or MCP: Yes (REST admin API (OpenAPI), CLI @maxceem/agw, MCP server)
- Compliance certifications: No (No SOC 2/ISO/HIPAA found; US-only hosted region)
AIProxy
A hosted proxy for Apple apps, with a Swift SDK that covers many providers.
- You get proof on every request that it comes from a real Apple device, with certificate pinning built in. More than 17 providers, including realtime voice, audio and images, limits per device and per IP address, and your top users by usage. A free plan of 1,000 requests a month, then $10 to $200.
- You don't get Android support, checks of your users' sign-in, or documented payment checks and spending budgets. It can't be self-hosted.
Full details
- Website
- aiproxy.com
- Providers
- 17+ incl. OpenAI, Anthropic, Gemini, Mistral, Groq, ElevenLabs, OpenRouter, Replicate
- Platforms
- iOS, macOS, visionOS, watchOS (Swift only); no Android or web client library
- Pricing
- subscription by monthly request allowance
- Free tier
- 1k requests/month, no credit card
- Estimates
- 1 app request = 1 billed request; allowances treated as inclusive; overage price not published (vendor contacts you to upgrade); 1M sits exactly at Premium allowance
Providers, hosting and billing
- Hosted version: Yes (Hosted service)
- Open-source version: No (Only the Swift SDK is open source)
- Your own AI provider key (BYOK): Yes (your own provider key; subscription, not a token reseller)
App and key security
- Key stays off the phone: Yes (split key: half in app, half on AIProxy)
- App Attest: No (not mentioned in docs, README or updates)
- DeviceCheck: Yes (one-time token validated with Apple per request)
- Play Integrity: No (not mentioned; no Android client)
- Every request verified: Yes (fresh DeviceCheck token each request, accepted once)
- Certificate pinning: Yes (static P-256 key pins (1 prod + 2 backup) built into SDK)
Users and payments
- Checks signed-in users: No (no auth-provider integration; client ID is client-supplied)
- Checks paying users: Not documented (SDK has receipt service; not documented on site)
Rate limits and budgets
- Per-user or per-install rate limits: Partly (per client ID; default IDFV is resettable)
- Per-IP limits: Yes (rate-limit builder, per IP rules)
- Per-app rate limits: Not documented (service-wide rules exist; aggregate cap not documented)
- Per-user budgets: Not documented (Not documented)
- Per-app budgets: Not documented (Not documented; the vendor advises a limit at the provider)
Request controls
- Model allowlist: Partly (endpoint allowlist and model override, not a model allowlist)
- Pinned prompts and output caps: Partly (model overrides per endpoint; prompts/max tokens not documented)
- Moderation and personal-data filters: Not documented (not documented)
AI capabilities
- Streaming: Yes (SDK streaming for major providers)
- Realtime and voice sessions: Yes (OpenAI Realtime GA support (2026-05-09))
- Audio, images and files: Yes (audio, images, files, embeddings in SDK)
- Fallbacks: Not documented (not documented)
- Gateway caching: Not documented (not documented)
- OpenAI-compatible API: Partly (SwiftOpenAI client works; generic base-URL swap not documented)
Observability
- Request metadata logs: Yes (Metadata, IP and status, kept 30 days)
- Request content logs: Partly (Only for errors)
- Usage per user: Yes (top users by client ID in dashboard)
- Cost tracking: Not documented (token counts shown; cost reporting not documented)
- Alerts: Partly (suspicious-activity notifications; channels/triggers unknown)
Developer experience
- Swift SDK: Yes (AIProxySwift, MIT, iOS 15+/macOS 13+)
- Android SDK: No (FAQ: no client libraries for Android)
- Flutter or React Native SDK: No (no Flutter, React Native or web library)
- API, CLI or MCP: Not documented (dashboard only documented)
- Compliance certifications: Not documented (none listed in privacy policy)
Backmesh
A simple open-source gateway that lets only your signed-in Firebase or Supabase users call AI.
- You get requests only from users signed in with Firebase or Supabase, request limits for each user, and usage and cost per user, for four providers. Any app can use it by changing the API's address. Hosted from $10 a month, or free to run on your own Cloudflare account.
- You don't get a check that requests come from your app, spending budgets, a list of allowed models, or SDKs for iOS and Android. Its code hasn't changed since October 2025.
Full details
- Website
- backmesh.com
- Providers
- OpenAI, Gemini, Anthropic, Cloudflare Workers AI
- Platforms
- Any HTTP client; tutorials for Flutter and web JS; no native SDKs
- Pricing
- subscription with included requests and MAU
- Free tier
- none for hosted (ended 2025-01); 15-day trial
- Estimates
- MAU under 50k; 10k and 100k fit Starter's 500k. 1M exceeds Starter, Starter overage is unpublished and Pro base price is 'Contact us', so unknown. Self-host is Cloudflare infra only.
Providers, hosting and billing
- Hosted version: Yes (Hosted service)
- Open-source version: Yes (AGPL-3.0; runs on Cloudflare Workers, without the analytics dashboard)
- Your own AI provider key (BYOK): Yes (your own provider key; no token resale)
App and key security
- Key stays off the phone: Yes (provider key stored encrypted server-side)
- App Attest: No (none; docs say add Firebase App Check separately)
- DeviceCheck: No (not supported)
- Play Integrity: No (not supported)
- Every request verified: No (only the user's JWT is checked)
- Certificate pinning: No (not documented or supported)
Users and payments
- Checks signed-in users: Yes (Firebase Auth and Supabase Auth JWTs only)
- Checks paying users: No (Stripe webhook writes claims; proxy does not gate on them)
Rate limits and budgets
- Per-user or per-install rate limits: Yes (N requests per user per minute/hour/day/month; fixed window in KV)
- Per-IP limits: No (not available)
- Per-app rate limits: No (not available)
- Per-user budgets: No (Request counts per user only)
- Per-app budgets: No (Not available)
Request controls
- Model allowlist: No (path allowlist per provider only, not models)
- Pinned prompts and output caps: No (no pinned prompts or parameter caps found)
- Moderation and personal-data filters: No (not available)
AI capabilities
- Streaming: Not documented (not documented; source pipes non-JSON bodies through)
- Realtime and voice sessions: No (HTTP only in source)
- Audio, images and files: Partly (audio, images, files paths allowed; no embeddings path by default)
- Fallbacks: No (none)
- Gateway caching: No (none)
- OpenAI-compatible API: Yes (swap base URL, send user JWT in place of key)
Observability
- Request metadata logs: Partly (The self-hosted version stores each request; hosted logs not documented)
- Request content logs: Partly (The self-hosted version stores them, with no off switch; hosted not documented)
- Usage per user: Yes (per end-user requests, errors, cost; hosted SaaS only)
- Cost tracking: Yes (estimated from bundled price list; unknown models cost 0)
- Alerts: Not documented (not documented)
Developer experience
- Swift SDK: No (no Swift SDK or guide)
- Android SDK: No (no Kotlin SDK or guide)
- Flutter or React Native SDK: Partly (Flutter + Firebase tutorial; works with any SDK via base URL)
- API, CLI or MCP: Partly (HTTP CRUD API and Postman/Bruno collections; not a documented public API)
- Compliance certifications: Not documented (none documented)
Gate/AI
A hosted gateway for iOS and Android apps, priced by the number of devices rather than requests.
- You get proof from Apple or Google that requests come from your app on a real device, on iOS, Android, Flutter, React Native and Capacitor, with a signed proof from the device on every request. Request and token budgets and usage per device on the Pro plan. Low prices: a free plan for 25 devices, then $4.99 for 200 devices or $9.99 for 500.
- You don't get checks of your users' sign-in or payments, money budgets, or a self-hosted version. It calls only OpenAI, Anthropic, Gemini and custom models, and its published plans stop at 500 devices.
Full details
- Website
- gate-ai.net
- Providers
- OpenAI, Anthropic, Google Gemini, custom LLMs (per website)
- Platforms
- iOS, Android, React Native, Capacitor, Flutter (no web or desktop)
- Pricing
- subscription by unique monthly devices; no request caps on paid plans
- Free tier
- $0: 25 devices, 100 requests/day, 1 gated service
- Estimates
- 200 requests per device per month: 10k=50 devices (Core), 100k=500 devices (Pro), 1M=5,000 devices (above published 500-device max, contact sales). Cost depends on devices, not requests.
Providers, hosting and billing
- Hosted version: Yes (Hosted service)
- Open-source version: No (Only the SDKs are open source)
- Your own AI provider key (BYOK): Yes (You add your own provider keys in the portal)
App and key security
- Key stays off the phone: Yes (Encrypted vault, injected server-side, not readable back)
- App Attest: Yes (Physical devices; simulator uses dev token)
- DeviceCheck: Not documented
- Play Integrity: Yes (Verified by Gate/AI; needs Google Play Services)
- Every request verified: Partly (Attestation once per install; per-request DPoP proof from device key)
- Certificate pinning: Not documented
Users and payments
- Checks signed-in users: No (Device identity; userIdentifier is analytics only)
- Checks paying users: No (App reports userTier; no receipt verification)
Rate limits and budgets
- Per-user or per-install rate limits: Yes (Pro: request/token budgets, daily cap, tiers)
- Per-IP limits: No (IP only a fallback identifier)
- Per-app rate limits: Yes (Core and Pro: gate-wide requests/minute)
- Per-user budgets: Yes (Pro plan: token budgets per device; no money budget)
- Per-app budgets: Not documented (Pro lists global limits, but only a requests-per-minute cap is documented)
Request controls
- Model allowlist: Not documented
- Pinned prompts and output caps: Not documented
- Moderation and personal-data filters: Not documented
AI capabilities
- Streaming: Not documented (Not documented)
- Realtime and voice sessions: Not documented
- Audio, images and files: Not documented
- Fallbacks: Not documented (Multi-provider routing claimed; fallback not documented)
- Gateway caching: Not documented
- OpenAI-compatible API: Partly (Provider paths via SDK call; base-URL swap not documented)
Observability
- Request metadata logs: Yes (With CSV export; retention not documented)
- Request content logs: No (Not stored, per its privacy policy)
- Usage per user: Yes (Pro advanced analytics by userIdentifier)
- Cost tracking: Yes (Pro; estimated from list prices)
- Alerts: Not documented
Developer experience
- Swift SDK: Yes (iOS 16+, Swift 6, v1.1.0)
- Android SDK: Yes (API 24+, v1.1.0 via JitPack)
- Flutter or React Native SDK: Yes (Flutter, React Native, Capacitor 1.0.0)
- API, CLI or MCP: Not documented (Portal only documented)
- Compliance certifications: No (None listed)
MAIG
A new hosted gateway for iOS and Android apps, with routes, fallbacks and request quotas.
- You get Swift and Kotlin SDKs, named routes with prompts kept on the server, a fallback model when one fails, and request quotas per user on the Pro plan. OpenAI, Anthropic and Gemini on your own keys. A free plan of 2,500 requests a month, then from $9.
- You don't get a check that requests come from your app or a signed-in user: the app carries a fixed key, and anyone who extracts it can use it. No spending budgets, and the product and its docs are new and partly unfinished.
Full details
- Website
- maig.dev
- Providers
- OpenAI, Anthropic, Google Gemini
- Platforms
- iOS (Swift SDK), Android (Kotlin SDK); any HTTP client via OpenAI-compatible endpoint
- Pricing
- subscription with included requests plus per-request overage
- Free tier
- $0: 2,500 requests/month, hard cap
- Estimates
- Cheapest plan incl. overage, monthly billing. 10k: Starter $9 (no quotas; Pro $29 if quotas needed). 100k: Pro $29 + 40k x $0.0008. 1M: Business $199 + 700k x $0.0008.
Providers, hosting and billing
- Hosted version: Yes (Hosted service)
- Open-source version: No (Closed source)
- Your own AI provider key (BYOK): Yes (You paste your own provider keys)
App and key security
- Key stays off the phone: Yes (Provider key stored encrypted server-side; static maig_ project key ships in app)
- App Attest: No (Not documented)
- DeviceCheck: No (Not documented)
- Play Integrity: No (Not documented)
- Every request verified: No (Static bearer key)
- Certificate pinning: Not documented
Users and payments
- Checks signed-in users: No (user field is a client-supplied label)
- Checks paying users: No
Rate limits and budgets
- Per-user or per-install rate limits: Partly (Pro+ per-user quotas keyed on unverified user value)
- Per-IP limits: Not documented
- Per-app rate limits: Yes (100 req/min per key on all plans, plus monthly allowance)
- Per-user budgets: No (Request-count quotas only)
- Per-app budgets: No (Request-count quotas only)
Request controls
- Model allowlist: Partly (Routes pin models but literal model names bypass routing)
- Pinned prompts and output caps: Partly (Routes and server-managed prompt sets; no max-token enforcement documented)
- Moderation and personal-data filters: No
AI capabilities
- Streaming: Yes
- Realtime and voice sessions: No
- Audio, images and files: No (Only chat completions endpoint documented)
- Fallbacks: Yes (Fallback model Pro+; retries Starter+)
- Gateway caching: No
- OpenAI-compatible API: Yes (/v1/chat/completions only; tools planned)
Observability
- Request metadata logs: Yes (Kept 3 to 90 days by plan)
- Request content logs: No (Not logged, per its privacy policy)
- Usage per user: Partly (userId visible in logs)
- Cost tracking: Partly (Token counts and usage by route; dollar cost not documented)
- Alerts: Partly (Email alert before monthly limit)
Developer experience
- Swift SDK: Yes (AIGatewaySDK, iOS 16+)
- Android SDK: Yes (com.maig:sdk 0.1.0, not on Maven Central yet)
- Flutter or React Native SDK: No
- API, CLI or MCP: No (Dashboard only)
- Compliance certifications: No
PicoAIProxy
An open-source proxy you run yourself, which lets only users with an active App Store subscription call AI.
- You get a subscription check with the App Store itself, including expiry and refunds, for OpenAI, Anthropic and Groq. Optional request limits per user. Free under MIT, and one small server costs about $5 a month.
- You don't get a check that requests come from your genuine app, spending budgets, usage tracking, Android support or a hosted version. It keeps its counters in memory, so a restart resets them, and it runs as a single server.
Full details
- Website
- github.com
- Providers
- OpenAI, Anthropic (Claude 3, streaming only), Groq
- Platforms
- iOS, macOS, iPadOS, visionOS (StoreKit); any HTTP client after token exchange
- Pricing
- free/self-host infra only
- Free tier
- Software is free (MIT)
- Estimates
- Estimate: Railway Hobby $5/mo incl. $5 usage; one small instance (0.05 vCPU/0.2 GB low traffic, 0.2 vCPU/0.3 GB at 1M), ~4 KB response egress. Excludes engineering time and Apple Developer fee.
Providers, hosting and billing
- Hosted version: No (No hosted service; you run it yourself)
- Open-source version: Yes (MIT; Docker or a Railway template)
- Your own AI provider key (BYOK): Yes (Own provider accounts, no billing layer)
App and key security
- Key stays off the phone: Yes (Keys in server env vars; client Authorization header replaced)
- App Attest: No (README: on hold)
- DeviceCheck: No
- Play Integrity: No (Apple platforms only)
- Every request verified: No (12h HS256 JWT, not device-bound)
- Certificate pinning: No
Users and payments
- Checks signed-in users: Partly (StoreKit appAccountToken only; no OIDC/Firebase)
- Checks paying users: Yes (App Store Server Library, expiry and revocation checked)
Rate limits and budgets
- Per-user or per-install rate limits: Partly (Opt-in, in-memory; minute check uses hourly counter)
- Per-IP limits: No
- Per-app rate limits: Partly (Only combined anonymous-user pool)
- Per-user budgets: No (Request counts only)
- Per-app budgets: No (Request counts only)
Request controls
- Model allowlist: No (Model list used for routing, not enforcement)
- Pinned prompts and output caps: No (README: do it client-side)
- Moderation and personal-data filters: No
AI capabilities
- Streaming: Yes
- Realtime and voice sessions: Not documented
- Audio, images and files: Partly (OpenAI audio/images/embeddings; Anthropic chat only)
- Fallbacks: No (Routing by model name only)
- Gateway caching: No
- OpenAI-compatible API: Yes
Observability
- Request metadata logs: Partly (In memory and console output only)
- Request content logs: No (Not kept by the proxy)
- Usage per user: No (Counts only, reset on restart)
- Cost tracking: No
- Alerts: No
Developer experience
- Swift SDK: No (Use any OpenAI Swift client)
- Android SDK: No
- Flutter or React Native SDK: No
- API, CLI or MCP: No (Env vars only)
- Compliance certifications: No
Proxed.AI
An open-source proxy for iOS apps, hosted for a yearly fee or self-hosted for non-commercial use.
- You get a check with Apple on every request that it comes from a real Apple device, streaming, and ready-made routes that fix the model, instructions and answer format on the server. Cost per call. Hosted from $25 a year.
- You don't get Android support, checks of your users' sign-in, or limits per user: one shared limit covers all your users. There is no free plan, its largest plan stops at 50,000 calls a month, and the self-hosted code is for non-commercial use only.
Full details
- Website
- proxed.ai
- Providers
- OpenAI, Anthropic, Google AI (Gemini)
- Platforms
- iOS only in practice (DeviceCheck); Swift and Expo/React Native iOS guides; no Android
- Pricing
- subscription with fixed monthly call allowance, yearly billing shown
- Free tier
- 14-day trial, no card; self-host free
- Estimates
- 10k = Pro at $100/yr divided by 12, exactly at allowance; no plan above 50k calls/mo and overage not published (code returns 403), so 100k and 1M are unknown; monthly billing price not shown
Providers, hosting and billing
- Hosted version: Yes (Hosted service)
- Open-source version: Partly (AGPL-3.0, but the README says non-commercial use only; needs Supabase and Redis)
- Your own AI provider key (BYOK): Yes (your own provider key; no token resale)
App and key security
- Key stays off the phone: Yes (split key: client part in app, server part in database)
- App Attest: No (not mentioned; DeviceCheck only)
- DeviceCheck: Yes (token validated with Apple on each request)
- Play Integrity: No (not supported)
- Every request verified: Partly (token verified every request; no one-time/replay check found)
- Certificate pinning: No (no SDK)
Users and payments
- Checks signed-in users: No (end users are not identified)
- Checks paying users: No (not supported)
Rate limits and budgets
- Per-user or per-install rate limits: Not documented (claimed on site; source has team-wide limit only)
- Per-IP limits: Partly (IP only as fallback when no team is resolved)
- Per-app rate limits: Yes (fixed 5 req/10s per path per team on AI routes; shared by all users)
- Per-user budgets: No (Only the plan's call allowance per team)
- Per-app budgets: No (Only the plan's call allowance per team)
Request controls
- Model allowlist: No (pass-through forwards any model)
- Pinned prompts and output caps: Partly (structured routes apply project model, system prompt and schema)
- Moderation and personal-data filters: No (not available)
AI capabilities
- Streaming: Yes (SSE handled; usage finalised after stream)
- Realtime and voice sessions: No (no WebSocket route in source)
- Audio, images and files: Partly (vision, PDF, image-generation routes; audio/embeddings unknown)
- Fallbacks: Partly (retries and circuit breakers; no cross-provider fallback)
- Gateway caching: Not documented (not documented)
- OpenAI-compatible API: Partly (pass-through routes; client sends combined key.token as Bearer)
Observability
- Request metadata logs: Yes (Tokens, cost, IP and location per call)
- Request content logs: Partly (The code stores response text, though the privacy policy says it isn't stored)
- Usage per user: No (records keyed by team, project, key; not end user)
- Cost tracking: Yes (per-execution cost from pricing table)
- Alerts: Partly (email on high consumption via threshold; check described as simplified)
Developer experience
- Swift SDK: No (no SDK; URLSession example only)
- Android SDK: No (no Android support documented)
- Flutter or React Native SDK: Partly (Expo / React Native guide for iOS DeviceCheck; no library)
- API, CLI or MCP: Not documented (dashboard only documented)
- Compliance certifications: Not documented (none mentioned)
ServerlessAI
A hosted gateway that checks your users' sign-in and sets quotas by user group.
- You get checks of sign-in from any OpenID Connect provider, such as Google or Apple, user groups with their own quotas and features, and moderation on the Pro plan. OpenAI, Anthropic, Groq and Mistral on your own keys, through an OpenAI-compatible API.
- You don't get a check that requests come from your app, SDKs, or clear prices: its website is offline and its docs date from 2024. Check that it still runs before you rely on it.
Full details
- Website
- docs.serverlessai.dev
- Providers
- OpenAI, Anthropic, Groq, Mistral AI
- Platforms
- Any HTTP client; docs for JavaScript, Swift (MacPaw OpenAI), Python; no native SDK
- Pricing
- subscription with included MAU and requests, plus overage
- Free tier
- 100 MAU and 10K requests/month (from Wayback snapshots 2025-10-07 and 2026-06-07)
- Estimates
- 20 requests per MAU per month (10k=500 MAU, 100k=5,000, 1M=50,000); cheapest plan; monthly billing; from Wayback snapshots 2025-10-07 and 2026-06-07 (identical prices); live pricing page unreachable because the apex domain has no address records.
Providers, hosting and billing
- Hosted version: Yes (Hosted service)
- Open-source version: No (Closed source)
- Your own AI provider key (BYOK): Yes (You add provider API keys)
App and key security
- Key stays off the phone: Yes (Provider key entered in dashboard; client holds project ID plus user JWT)
- App Attest: Not documented (Attestation listed as not covered in docs)
- DeviceCheck: Not documented
- Play Integrity: Not documented
- Every request verified: No (Bearer project ID plus user JWT or guest)
- Certificate pinning: Not documented
Users and payments
- Checks signed-in users: Yes (Any OpenID Connect JWT (Google, Apple); custom claims for groups)
- Checks paying users: Build it yourself (Assign groups from JWT claims you issue; no store verification)
Rate limits and budgets
- Per-user or per-install rate limits: Partly (Quota per user group; per-user units not documented)
- Per-IP limits: Not documented
- Per-app rate limits: Not documented
- Per-user budgets: Not documented (Quotas per user group; their units aren't documented)
- Per-app budgets: Not documented (Not documented)
Request controls
- Model allowlist: Partly (Capabilities (chat, embedding, image) enabled per group; model-level unknown)
- Pinned prompts and output caps: Not documented
- Moderation and personal-data filters: Yes (Pro: moderation (10M tokens included); Grow: CAPTCHA integration)
AI capabilities
- Streaming: Not documented
- Realtime and voice sessions: No
- Audio, images and files: Partly (OpenAI text-to-image and embeddings; others chat only)
- Fallbacks: Partly (Home page claims switch and fallback between providers; docs silent)
- Gateway caching: Not documented
- OpenAI-compatible API: Yes
Observability
- Request metadata logs: Not documented (Not documented)
- Request content logs: Not documented (Not documented)
- Usage per user: Not documented (Cost visibility claimed on home page; details unknown)
- Cost tracking: Not documented
- Alerts: Not documented
Developer experience
- Swift SDK: No (Use MacPaw OpenAI client with host swap)
- Android SDK: No
- Flutter or React Native SDK: No
- API, CLI or MCP: Not documented
- Compliance certifications: No (None listed)
Provider-managed access
The AI provider itself verifies the app, or issues short-lived credentials, so no third party sits in between.
Claude App Attest
Anthropic's own way for Apple apps to call Claude directly, with no server of your own.
- You get Apple's check that requests come from your genuine app, with no server to run and no fee beyond Claude's tokens. Rate and spending limits per Anthropic workspace, and you can cut off an app at any time.
- You don't get models other than Claude, Android support, or anything per user: no sign-in check, limits or budgets. It is still in beta and needs iOS 27, macOS 27 or later.
Full details
- Website
- platform.claude.com
- Providers
- Anthropic Claude only (direct API; not Bedrock, Google Cloud or Foundry)
- Platforms
- iOS, macOS, visionOS, watchOS 27 or later (iOS 27 released 2026-09-14; Anthropic docs still call the package beta); Swift only
- Pricing
- no separate fee; standard Claude API token pricing only
- Free tier
- none for App Attest
- Estimates
- Direct Claude API from Swift app, no backend. Adding a backend for per-user limits would add your own server cost.
Providers, hosting and billing
- Hosted version: Partly (Beta: run by Anthropic)
- Open-source version: No (Only the Swift package is open source)
- Your own AI provider key (BYOK): Yes (Your Anthropic account and workspace billing)
App and key security
- Key stays off the phone: Yes (Device gets a 1-hour workspace-scoped token, no API key)
- App Attest: Partly (Beta: the Swift package is in beta, and the docs still mention the OS 27 betas)
- DeviceCheck: No (Not mentioned)
- Play Integrity: No (Apple platforms only)
- Every request verified: No (Attest once per install; token lasts one hour)
- Certificate pinning: Not documented (Not documented)
Users and payments
- Checks signed-in users: No (Tokens carry no end-user identity)
- Checks paying users: No (Not part of the product)
Rate limits and budgets
- Per-user or per-install rate limits: No (No identity; per-user logic must be in your app)
- Per-IP limits: Not documented (Not documented)
- Per-app rate limits: Yes (Org and per-workspace RPM/ITPM/OTPM limits)
- Per-user budgets: No (No user identity)
- Per-app budgets: Yes (Monthly spend limit per workspace)
Request controls
- Model allowlist: Not documented (Tokens authorize only Messages API; model restriction not documented)
- Pinned prompts and output caps: No (No server in path; client builds the request)
- Moderation and personal-data filters: No (Not part of the product)
AI capabilities
- Streaming: Yes (streamResponse snapshots)
- Realtime and voice sessions: No (Messages API only)
- Audio, images and files: Partly (Images yes; Files API and audio not available via package)
- Fallbacks: Partly (Fallback to on-device Apple model is a documented pattern)
- Gateway caching: No (Only Anthropic's own prompt caching)
- OpenAI-compatible API: No (Claude Messages API)
Observability
- Request metadata logs: Not documented (Not documented)
- Request content logs: Not documented (Not documented)
- Usage per user: No (No end-user identity)
- Cost tracking: Partly (Per workspace and model via Console and Admin API; no per-integration split documented)
- Alerts: Partly (Workspace spend threshold alerts; channels not specified)
Developer experience
- Swift SDK: Partly (Beta: the Foundation Models provider package)
- Android SDK: No (Not offered)
- Flutter or React Native SDK: No (Not offered)
- API, CLI or MCP: Partly (Admin API for workspaces/usage; app-integration API unknown)
- Compliance certifications: Not documented (Not read in this pass)
Firebase AI Logic
Google's way for apps to call Gemini directly, protected by Firebase App Check.
- You get Apple and Google checks that requests come from your app, on iOS, Android, Flutter, Unity and the web, with optional Firebase sign-in. No fee beyond Gemini, which has a free tier. Server prompt templates, in preview, fix the model and instructions.
- You don't get models other than Gemini, budgets per user, or a hard stop on spending: Google Cloud budgets only send alerts. The per-user request limit is one number for the whole project.
Full details
- Website
- firebase.google.com
- Providers
- Google Gemini only (Gemini Developer API or Agent Platform/Vertex)
- Platforms
- iOS, Android, Flutter, Unity, Web
- Pricing
- free SDK/proxy; pay Gemini usage plus Google Cloud services (Auth MAU, SMS, observability)
- Free tier
- Gemini Developer API free tier on Spark (no payment method); Auth free to 50,000 MAU; App Check free subject to provider quotas
- Estimates
- 1 MAU per 25 requests (400/4,000/40,000 MAU, all inside free 50k); no phone auth, no Remote Config, AI monitoring off. High end assumes 1 MAU per 5 requests (200k MAU at 1M requests). Play Integrity default quota is 10,000 calls/day (about 33k/day at 1M/month if one call per request); increase price not documented.
Providers, hosting and billing
- Hosted version: Yes (Run by Google)
- Open-source version: No (Closed source)
- Your own AI provider key (BYOK): Yes (Your own Google project and billing; Gemini models only)
App and key security
- Key stays off the phone: Yes (Gemini key stays in Google's proxy; app holds only a project-identifying API key)
- App Attest: Yes (App Check provider on Apple platforms)
- DeviceCheck: Yes (App Check provider; fallback for older iOS)
- Play Integrity: Yes (Default 10,000 calls/day per project; increase on request)
- Every request verified: Partly (Limited-use tokens (5 min, one-time) are opt-in; default is reusable session token)
- Certificate pinning: Not documented (Not documented)
Users and payments
- Checks signed-in users: Yes (Authenticated-users mode requires Firebase Auth credentials (project-wide))
- Checks paying users: No (Not part of the product)
Rate limits and budgets
- Per-user or per-install rate limits: Partly (100 RPM default, one project-wide value; user identity not defined in docs)
- Per-IP limits: Not documented (Not documented)
- Per-app rate limits: Yes (Project-level RPM/RPD/TPM/TPD from the Gemini provider)
- Per-user budgets: No (Requests per minute only)
- Per-app budgets: Partly (Only an experimental project spend cap for the Gemini API; Google Cloud budgets only alert)
Request controls
- Model allowlist: Partly (Template-only mode pins model via templates (Preview))
- Pinned prompts and output caps: Partly (Server prompt templates (Preview); not for Live; Flutter pending)
- Moderation and personal-data filters: Not documented (Not documented on pages read)
AI capabilities
- Streaming: Yes (Text streaming and Live API)
- Realtime and voice sessions: Partly (Gemini Live via SDK in Preview; no ephemeral tokens mentioned)
- Audio, images and files: Yes (Text, image, PDF, video, audio prompts; image generation)
- Fallbacks: Partly (Hybrid on-device to cloud; no multi-provider routing)
- Gateway caching: Not documented (Not documented on pages read)
- OpenAI-compatible API: No (Gemini SDKs only)
Observability
- Request metadata logs: Partly (Sampled AI monitoring traces)
- Request content logs: Yes (On by default in AI monitoring; a log filter can exclude them)
- Usage per user: Not documented (Dashboard breakdown by user not stated)
- Cost tracking: Partly (Token usage by modality per app and model; billing in Google Cloud)
- Alerts: Partly (Google Cloud budget alerts; AI monitoring alerts not documented)
Developer experience
- Swift SDK: Yes (Swift for Apple platforms)
- Android SDK: Yes (Kotlin and Java)
- Flutter or React Native SDK: Yes (Flutter, Unity, Web)
- API, CLI or MCP: Not documented (Only the Firebase and Google Cloud consoles are documented for AI Logic settings)
- Compliance certifications: Not documented (Governed by Google Cloud terms; certs not read)
Provider ephemeral tokens
Short-lived keys that providers such as OpenAI and Google issue for realtime voice, handed to the app by your own server.
- You get realtime voice straight from the phone to the provider, without your real key on the device, from seven providers including OpenAI, Gemini, xAI and ElevenLabs. The tokens cost nothing, and the server that hands them out can run on a free plan.
- You don't get anything without your own server: it decides who gets a token, and app checks, limits and budgets are code you write. It covers mostly voice, not regular chat.
Full details
- Website
- developers.openai.com
- Providers
- Per provider only: OpenAI Realtime, Gemini Live, xAI Voice, Deepgram, AssemblyAI, ElevenLabs, Inworld
- Platforms
- Any client that can open WebSocket/WebRTC; no vendor-supplied mobile SDK reviewed
- Pricing
- free/self-host infra only (cost of your minting server)
- Free tier
- No provider fee for minting found; Workers Free covers 100,000 requests/day
- Estimates
- One mint per session, mints equal the request count, Cloudflare Worker with 5 ms CPU per mint (assumed). Excludes your auth service, database and monitoring.
Providers, hosting and billing
- Hosted version: Partly (The provider issues tokens, but you run the server that requests them)
- Open-source version: No (Provider APIs, not code you can run)
- Your own AI provider key (BYOK): Yes (Your own provider account)
App and key security
- Key stays off the phone: Yes (If your own server mints the token and keeps the real key)
- App Attest: No (No provider ties tokens to attestation)
- DeviceCheck: No (Not part of any token API)
- Play Integrity: No (Not part of any token API)
- Every request verified: No (Bearer token after mint)
- Certificate pinning: No (Not offered)
Users and payments
- Checks signed-in users: Build it yourself (Your mint endpoint authenticates the user)
- Checks paying users: Build it yourself (Check entitlement before minting)
Rate limits and budgets
- Per-user or per-install rate limits: Build it yourself (Limit mints per user at your endpoint)
- Per-IP limits: Build it yourself (Your endpoint)
- Per-app rate limits: Partly (Provider account rate limits only)
- Per-user budgets: Build it yourself (Your token server counts each user's spend)
- Per-app budgets: Partly (Only the provider's account or project spend limit)
Request controls
- Model allowlist: Partly (Gemini liveConnectConstraints; OpenAI mint-time session config, enforcement unclear)
- Pinned prompts and output caps: Partly (Gemini can lock config; others not documented)
- Moderation and personal-data filters: No (Not offered)
AI capabilities
- Streaming: Yes (WebSocket/WebRTC audio and text streams)
- Realtime and voice sessions: Yes (Main use case; Gemini tokens are Preview)
- Audio, images and files: Partly (Audio-centred; chat/text APIs not covered)
- Fallbacks: No (Not offered)
- Gateway caching: Not applicable (Not applicable)
- OpenAI-compatible API: No (Provider-specific APIs)
Observability
- Request metadata logs: No (Only the provider's dashboards)
- Request content logs: Not documented (Up to each provider)
- Usage per user: No (Not attributed per user; OpenAI safety identifier is a partial exception)
- Cost tracking: Partly (Provider dashboards per key/project)
- Alerts: No (Not part of token APIs)
Developer experience
- Swift SDK: Not documented (Provider SDKs for iOS not checked)
- Android SDK: Not documented (Provider SDKs for Android not checked)
- Flutter or React Native SDK: Not documented (Not checked)
- API, CLI or MCP: Yes (Token APIs are plain REST)
- Compliance certifications: Not documented (Per provider; not read)
Backend platforms
App backends that include managed model access next to auth and data.
AWS Amplify AI Kit
AI chat for apps built on AWS Amplify, running Bedrock models in your own AWS account.
- You get no provider key at all, requests only from users signed in with Amazon Cognito, and conversations stored per user. The model, instructions and tools are fixed on the server. Pay-as-you-go AWS prices, about $11 a month at 100,000 requests.
- You don't get a check that requests come from your app, limits, budgets or usage per user, or models outside Amazon Bedrock. Its docs cover the web and React Native, not Swift or Android.
Full details
- Website
- docs.amplify.aws
- Providers
- Amazon Bedrock models only (Claude, Nova, Llama, Mistral, Cohere, AI21)
- Platforms
- Web, React Native documented; Swift/Android/Flutter not documented for the AI kit
- Pricing
- pay-per-use AWS services (AppSync, Lambda, DynamoDB, Cognito) plus Bedrock tokens
- Free tier
- AppSync 250k ops/250k updates (12 months), Lambda 1M req + 400k GB-s, Cognito 10k MAU
- Estimates
- Per message 1 mutation + 50 streamed updates, Lambda 512 MB x 5 s, 4 DynamoDB writes, 1 MAU per 50 requests on Cognito Essentials (about 197 on Lite); update count and Lambda memory are my assumptions
Providers, hosting and billing
- Hosted version: Yes (Run by AWS in your own AWS account)
- Open-source version: No (The service is closed source)
- Your own AI provider key (BYOK): Not applicable (No provider key; you pay Bedrock in your AWS account)
App and key security
- Key stays off the phone: Yes (Lambda calls Bedrock with IAM role)
- App Attest: No
- DeviceCheck: No
- Play Integrity: No
- Every request verified: No
- Certificate pinning: Not documented
Users and payments
- Checks signed-in users: Yes (Cognito/OIDC token; owner-based auth for conversations)
- Checks paying users: Build it yourself
Rate limits and budgets
- Per-user or per-install rate limits: Build it yourself (Not documented in kit)
- Per-IP limits: Build it yourself (Needs AWS WAF, not covered by kit docs)
- Per-app rate limits: Build it yourself
- Per-user budgets: No (Nothing documented)
- Per-app budgets: No (Nothing documented)
Request controls
- Model allowlist: Yes (Route is bound to the configured Bedrock model)
- Pinned prompts and output caps: Yes (System prompt, inference config, tools set in route)
- Moderation and personal-data filters: Not documented
AI capabilities
- Streaming: Partly (AppSync WebSocket subscriptions, not HTTP SSE)
- Realtime and voice sessions: No
- Audio, images and files: Not documented
- Fallbacks: Not documented
- Gateway caching: Not documented
- OpenAI-compatible API: No
Observability
- Request metadata logs: Partly (CloudWatch logs of the Lambda functions)
- Request content logs: Not documented (Not documented)
- Usage per user: No
- Cost tracking: No (Only generic AWS billing tools)
- Alerts: Not documented
Developer experience
- Swift SDK: Not documented (AI kit pages web only; Blocks agent prose for Swift)
- Android SDK: Not documented (AI kit pages web only; Blocks agent prose for Android)
- Flutter or React Native SDK: Partly (React Native page exists; Flutter not documented)
- API, CLI or MCP: Yes (Amplify CLI, with the backend defined in code)
- Compliance certifications: Not documented (Inherits AWS services; not stated per kit)
Convex AI Gateway
Model access built into Convex, for apps that already use it as their backend.
- You get no provider keys to manage, sign-in from Convex Auth, Clerk, Auth0 and others, dollar spending limits, and cost per project and function. Swift, Kotlin and React Native clients, with the AI call running on Convex's servers.
- You don't get a check that requests come from your app, or limits and budgets per user without writing them yourself. Reaching the spending limit stops your whole backend, not just AI. You buy tokens through Convex rather than your own provider account, and it isn't on the free plan.
Full details
- Website
- docs.convex.dev
- Providers
- Not listed in docs read; provider/model names (OpenAI, Anthropic examples) via Convex-run gateway
- Platforms
- iOS (Swift), Android (Kotlin), React Native, Web; AI calls run server-side in Convex
- Pricing
- Convex plan usage plus tokens at OpenRouter rates
- Free tier
- Free plan: gateway disabled (AiGatewayDisabled)
- Estimates
- Starter/Professional, 3 function calls and 5 s action wall time per request; action compute metering undocumented so memory limit x wall time used (Convex runtime 64 MiB low end, Node 512 MiB high end)
Providers, hosting and billing
- Hosted version: Yes (Run by Convex)
- Open-source version: No (Self-hosted Convex has no AI Gateway)
- Your own AI provider key (BYOK): No (Reseller at OpenRouter rates; BYOK only via your own action)
App and key security
- Key stays off the phone: Yes (Convex holds provider credentials; no key in app or env)
- App Attest: Build it yourself (Verify in your own action; nothing built in)
- DeviceCheck: Build it yourself
- Play Integrity: Build it yourself
- Every request verified: Build it yourself
- Certificate pinning: Not documented
Users and payments
- Checks signed-in users: Yes (Convex Auth, Clerk, Auth0, WorkOS, custom OIDC)
- Checks paying users: Build it yourself (Write your own StoreKit/RevenueCat check)
Rate limits and budgets
- Per-user or per-install rate limits: Build it yourself (Rate Limiter component, you wire it)
- Per-IP limits: Not documented
- Per-app rate limits: Build it yourself (Token bucket via Rate Limiter component)
- Per-user budgets: Build it yourself (Your Convex functions count spend per user)
- Per-app budgets: Yes (Dollar limits per team and deployment; reaching one disables the whole deployment)
Request controls
- Model allowlist: Build it yourself (Action picks the model)
- Pinned prompts and output caps: Build it yourself (Prompts and max tokens live in your action)
- Moderation and personal-data filters: Not documented
AI capabilities
- Streaming: Yes (In action; to phone via HTTP action or DB deltas)
- Realtime and voice sessions: No (No realtime API listed; speech/transcription alpha)
- Audio, images and files: Partly (Alpha: images, video and voice; embeddings are stable)
- Fallbacks: Not documented
- Gateway caching: Not documented
- OpenAI-compatible API: Partly (OpenAI-compatible but only callable from Convex actions)
Observability
- Request metadata logs: Partly (Usage per project and function; per-request detail not documented)
- Request content logs: Not documented (Not documented)
- Usage per user: Build it yourself (Spend per project/function, not per end user)
- Cost tracking: Yes (Usage page per project and function)
- Alerts: Partly (Warning thresholds and email on usage limits)
Developer experience
- Swift SDK: Yes (Convex Swift client; AI call is server-side)
- Android SDK: Yes (Convex Kotlin client)
- Flutter or React Native SDK: Partly (React Native yes; Flutter not seen)
- API, CLI or MCP: Yes (Convex CLI and Management API)
- Compliance certifications: Partly (Professional plan lists HIPAA and SOC 2 reports; whether they cover the AI Gateway is unknown)
Your own server
A function you write and host, which holds the key and runs every check you code.
Cloudflare Workers (DIY)
Your own small server on Cloudflare Workers, the cheapest place to run one for slow AI calls.
- You get full control over checks, limits and budgets at the lowest cost: Workers bill the time your code works, not the time it waits for the AI. A free plan of 100,000 requests a day, then $5 a month, and Cloudflare AI Gateway can add logs, caching and fallbacks.
- You don't get anything ready-made. App checks, sign-in, limits, budgets and usage tracking are all code you write and maintain.
Full details
- Website
- developers.cloudflare.com
- Providers
- Any provider you code; optional AI Gateway in front of many providers
- Platforms
- Any HTTP client: iOS, Android, Flutter, React Native, Web
- Pricing
- free plan or $5/month minimum plus usage; CPU-time billing, no duration charge
- Free tier
- Workers Free: 100k req/day, 10 ms CPU; KV/D1/DO daily allowances
- Estimates
- 10 ms CPU per request, 1 Durable Object call per request, pass-through streaming (no DO wall time), 5 s wall time not billed; CPU of attestation verification unmeasured
Providers, hosting and billing
- Hosted version: Build it yourself (Cloudflare runs a function you write)
- Open-source version: Not applicable (The code is your own)
- Your own AI provider key (BYOK): Yes (Your own key; AI Gateway Unified Billing optional)
App and key security
- Key stays off the phone: Yes (Worker secret)
- App Attest: Build it yourself (node-app-attest, JSR package; Workers compat unverified)
- DeviceCheck: Build it yourself
- Play Integrity: Build it yourself (Google API, 10k/day default quota)
- Every request verified: Build it yourself (Assertion per request with persisted counter)
- Certificate pinning: No
Users and payments
- Checks signed-in users: Build it yourself (Verify JWT in the Worker)
- Checks paying users: Build it yourself (RevenueCat/StoreKit check in Worker)
Rate limits and budgets
- Per-user or per-install rate limits: Build it yourself (Durable Object or D1; binding is approximate)
- Per-IP limits: Build it yourself
- Per-app rate limits: Build it yourself
- Per-user budgets: Build it yourself (Counters in Durable Objects or D1)
- Per-app budgets: Build it yourself (A counter you store)
Request controls
- Model allowlist: Build it yourself
- Pinned prompts and output caps: Build it yourself
- Moderation and personal-data filters: Partly (AI Gateway Guardrails/DLP optional, billed as Workers AI)
AI capabilities
- Streaming: Yes (No duration charge for pass-through streaming)
- Realtime and voice sessions: Partly (WebSockets supported; DO bills wall time while connected)
- Audio, images and files: Build it yourself
- Fallbacks: Partly (AI Gateway offers it; else code)
- Gateway caching: Build it yourself (Route through Cloudflare AI Gateway's cache, or build one)
- OpenAI-compatible API: Build it yourself (Expose an OpenAI-shaped route)
Observability
- Request metadata logs: Build it yourself (Workers Logs or Cloudflare AI Gateway logs, at a price)
- Request content logs: Build it yourself (Only if you log them)
- Usage per user: Build it yourself
- Cost tracking: Partly (AI Gateway analytics per gateway; per user is diy)
- Alerts: Not documented
Developer experience
- Swift SDK: No (No SDK; plain HTTPS plus DeviceCheck client code)
- Android SDK: No
- Flutter or React Native SDK: No
- API, CLI or MCP: Yes (Wrangler CLI and Cloudflare API)
- Compliance certifications: Not documented (Not read)
Firebase Functions + App Check (DIY)
Your own server as Firebase functions, with Firebase App Check and sign-in built in.
- You get Apple and Google checks that requests come from your app, and Firebase sign-in, without writing either yourself. SDKs for iOS, Android, Flutter, Unity and the web, and a free allowance to start.
- You don't get limits, budgets, payment checks or usage tracking without writing them yourself. Functions bill the time spent waiting for the AI, so slow calls get expensive at scale: up to about $118 a month at a million requests.
Full details
- Website
- firebase.google.com
- Providers
- Any provider you code (OpenAI, Anthropic, Gemini via Genkit or SDK)
- Platforms
- iOS, Android, Flutter, Unity, Web (Firebase SDKs)
- Pricing
- free/pay-as-you-go GCP usage (Blaze); wall-time billed compute
- Free tier
- Cloud Run: 2M req, 180k vCPU-s, 360k GiB-s; Firestore 50k reads and 20k writes per day; Auth 50k MAU; App Check no cost
- Estimates
- 256 MiB, 5 s wall time per request, 1 Firestore read+write per request, free tiers applied; low end = fractional 1/6 vCPU no concurrency, high end = 1 vCPU with zero request overlap
Providers, hosting and billing
- Hosted version: Build it yourself (Firebase runs a function you write)
- Open-source version: Not applicable (The code is your own)
- Your own AI provider key (BYOK): Yes (Your own provider account)
App and key security
- Key stays off the phone: Yes (Secret Manager bound to the function)
- App Attest: Yes (App Check provider, iOS 14+, production env only)
- DeviceCheck: Yes (App Check provider, fallback below iOS 14)
- Play Integrity: Yes (App Check provider; Play Integrity default 10k/day per project)
- Every request verified: Partly (Single-use limited-use tokens via consumeAppCheckToken (beta, Node))
- Certificate pinning: No
Users and payments
- Checks signed-in users: Yes (Firebase Auth; request.auth in callable)
- Checks paying users: Build it yourself (RevenueCat/App Store check in your function)
Rate limits and budgets
- Per-user or per-install rate limits: Build it yourself (Firestore counter by uid)
- Per-IP limits: Build it yourself
- Per-app rate limits: Build it yourself (maxInstances plus global counter)
- Per-user budgets: Build it yourself (Counters you store)
- Per-app budgets: Build it yourself (A counter you store; Google Cloud budgets only alert)
Request controls
- Model allowlist: Build it yourself
- Pinned prompts and output caps: Build it yourself
- Moderation and personal-data filters: Build it yourself
AI capabilities
- Streaming: Yes (Callable sendChunk and client .stream; onCallGenkit streams)
- Realtime and voice sessions: No
- Audio, images and files: Build it yourself
- Fallbacks: Build it yourself
- Gateway caching: Build it yourself
- OpenAI-compatible API: Build it yourself (Would need an onRequest proxy)
Observability
- Request metadata logs: Build it yourself (Cloud Logging; AI details only if you log them)
- Request content logs: Build it yourself (Only if you log them)
- Usage per user: Build it yourself
- Cost tracking: Build it yourself
- Alerts: Partly (GCP budget alerts; no AI-specific alerts)
Developer experience
- Swift SDK: Yes (Functions + App Check SDKs; Swift .stream)
- Android SDK: Yes (Kotlin/Java SDKs; limited-use token docs)
- Flutter or React Native SDK: Yes (Flutter, Unity, Web)
- API, CLI or MCP: Yes (Firebase CLI and gcloud)
- Compliance certifications: Not documented (Not read from primary pages)
Supabase Edge Functions (DIY)
Your own server as Supabase Edge Functions, next to a Postgres database and sign-in.
- You get Supabase sign-in checked by default, Postgres for exact counters, and a flat price: 500,000 calls a month free, then $25 a month on Pro. An open-source package for checking App Attest is available.
- You don't get anything else ready-made. App checks, limits, budgets and usage tracking are code you write, and the App Attest package is young.
Full details
- Website
- supabase.com
- Providers
- Any provider you code
- Platforms
- iOS, Android, Flutter, React Native, Web (Supabase client SDKs or plain HTTPS)
- Pricing
- plan subscription plus invocation overage; no compute-time charge in pages read
- Free tier
- Free: 500k invocations/month, 50k MAU, no overage
- Estimates
- 1 invocation per AI request (up to 2 with an attestation challenge); Postgres counter in project DB; Micro compute covered by Pro credit; Free plan for tests, Pro for production
Providers, hosting and billing
- Hosted version: Build it yourself (Supabase runs a function you write)
- Open-source version: Not applicable (The code is your own)
- Your own AI provider key (BYOK): Yes
App and key security
- Key stays off the phone: Yes (Edge Function secret)
- App Attest: Build it yourself (JSR @bradford-tech/supabase-integrity-attest, v0.9.1, young package)
- DeviceCheck: Build it yourself
- Play Integrity: Build it yourself (Google API, 10k/day default quota)
- Every request verified: Build it yourself (Assertion per request with signCount in Postgres)
- Certificate pinning: No
Users and payments
- Checks signed-in users: Yes (Supabase Auth JWT; verify_jwt on by default)
- Checks paying users: Build it yourself
Rate limits and budgets
- Per-user or per-install rate limits: Build it yourself (Postgres counter table plus atomic RPC)
- Per-IP limits: Build it yourself
- Per-app rate limits: Build it yourself
- Per-user budgets: Build it yourself (Counters you store)
- Per-app budgets: Build it yourself (A counter you store)
Request controls
- Model allowlist: Build it yourself
- Pinned prompts and output caps: Build it yourself
- Moderation and personal-data filters: Build it yourself
AI capabilities
- Streaming: Not documented (Not covered in pages read)
- Realtime and voice sessions: Not documented
- Audio, images and files: Build it yourself
- Fallbacks: Build it yourself
- Gateway caching: Build it yourself
- OpenAI-compatible API: Build it yourself
Observability
- Request metadata logs: Build it yourself (Edge Function logs; AI details only if you log them)
- Request content logs: Build it yourself (Only if you log them)
- Usage per user: Build it yourself
- Cost tracking: Build it yourself
- Alerts: Not documented
Developer experience
- Swift SDK: Partly (supabase-swift for auth/invoke; AI call is your function)
- Android SDK: Partly (supabase-kt for auth/invoke)
- Flutter or React Native SDK: Partly (Flutter and JS clients; not re-verified)
- API, CLI or MCP: Yes (Supabase CLI and Management API)
- Compliance certifications: Not documented
Vercel Functions or AWS Lambda (DIY)
Your own server on Vercel Functions or AWS Lambda, hosts many developers already use.
- You get the key kept off the phone with nothing but your own code, on a platform you may already know, for about $15 to $20 a month at a million requests.
- You don't get app checks, limits, budgets or usage tracking without writing them yourself. Both bill some of the time spent waiting for slow AI answers.
Full details
- Website
- vercel.com
- Providers
- Any provider you code
- Platforms
- Any HTTP client: iOS, Android, Flutter, React Native, Web
- Pricing
- Vercel: $20 Pro fee with $20 credit then active CPU + wall-time memory + invocations; Lambda: pay per request and GB-second of wall time
- Free tier
- Vercel Hobby (non-commercial): 1M invocations, 4 CPU-h, 360 GB-h; Lambda: 1M requests, 400k GB-s
- Estimates
- 5 s wall time, 20 ms CPU; Vercel Pro 2 GB no-overlap worst case (20 to 30.76); Lambda 256 MB function URL plus DynamoDB write (about 14.8, +1 with API Gateway HTTP API); identity services excluded
Providers, hosting and billing
- Hosted version: Build it yourself (Vercel or AWS runs a function you write)
- Open-source version: Not applicable (The code is your own)
- Your own AI provider key (BYOK): Yes
App and key security
- Key stays off the phone: Yes (Platform env var or secret)
- App Attest: Build it yourself (node-app-attest etc; untested on these platforms)
- DeviceCheck: Build it yourself
- Play Integrity: Build it yourself
- Every request verified: Build it yourself
- Certificate pinning: No
Users and payments
- Checks signed-in users: Build it yourself (Verify JWT; Cognito optional on AWS)
- Checks paying users: Build it yourself
Rate limits and budgets
- Per-user or per-install rate limits: Build it yourself (DynamoDB or external store)
- Per-IP limits: Partly (Vercel WAF IP/JA4 keys; AWS needs WAF; per-region counters)
- Per-app rate limits: Partly (Lambda reserved concurrency; Vercel WAF rule)
- Per-user budgets: Build it yourself (Counters you store)
- Per-app budgets: Build it yourself (A counter you store)
Request controls
- Model allowlist: Build it yourself
- Pinned prompts and output caps: Build it yourself
- Moderation and personal-data filters: Build it yourself
AI capabilities
- Streaming: Yes (Lambda: Node.js only, billed after client disconnect)
- Realtime and voice sessions: Partly (Vercel WebSockets beta; Lambda needs API Gateway WebSocket)
- Audio, images and files: Build it yourself
- Fallbacks: Build it yourself
- Gateway caching: Build it yourself
- OpenAI-compatible API: Build it yourself
Observability
- Request metadata logs: Build it yourself (Platform logs; AI details only if you log them)
- Request content logs: Build it yourself (Only if you log them)
- Usage per user: Build it yourself
- Cost tracking: Build it yourself
- Alerts: Partly (Vercel spend notifications; AWS Budgets not read)
Developer experience
- Swift SDK: No
- Android SDK: No
- Flutter or React Native SDK: No
- API, CLI or MCP: Yes (Vercel CLI, or the AWS CLI and SAM)
- Compliance certifications: Not documented (Not read)
To build the checks yourself, read How to protect your OpenAI API key in an iOS app. The glossary explains each protection in the table, with what it stops and what it leaves open.