← Learn

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.

Four padlocks of different sizes and styles in a row, with price tags reading $, $$, $$$ and QUOTE.

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.

FeatureApp AI GatewayAIProxyBackmeshGate/AIMAIGPicoAIProxyProxed.AIServerlessAIClaude App AttestFirebase AI LogicProvider ephemeral tokensAWS Amplify AI KitConvex AI GatewayCloudflare 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 onlyGemini only7, 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.AnyAnyAnyAny
Hosted version⁠: The vendor runs it for you. You sign up and configure it, with no server to deploy or maintain.YesYesYesYesYesNoYesYesPartly: Beta: run by AnthropicYesPartly: The provider issues tokens, but you run the server that requests themYesYesBuild it yourselfBuild it yourselfBuild it yourselfBuild 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.YesNoYesNoNoYesPartly: AGPL-3.0, but the README says non-commercial use only; needs Supabase and RedisNoNoNoNoNoNoNot applicableNot applicableNot applicableNot 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.YesYesYesYesYesYesYesYesYesYesYesNot applicableNoYesYesYesYes
App and key security
Key stays off the phone⁠: The provider key never ships inside the app.YesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYes
App Attest⁠: Apple's proof that a request comes from a genuine install of your app on a real device.YesNoNoYesNoNoNoNot documentedPartly: Beta: the Swift package is in beta, and the docs still mention the OS 27 betasYesNoNoBuild it yourselfBuild it yourselfYesBuild it yourselfBuild it yourself
DeviceCheck⁠: Apple's older proof that a request comes from a real Apple device.NoYesNoNot documentedNoNoYesNot documentedNoYesNoNoBuild it yourselfBuild it yourselfYesBuild it yourselfBuild it yourself
Play Integrity⁠: Google's proof that a request comes from your genuine app on a certified Android device.NoNoNoYesNoNoNoNot documentedNoYesNoNoBuild it yourselfBuild it yourselfYesBuild it yourselfBuild it yourself
Every request verified⁠: Each request carries a fresh proof, not a reusable session token that can be copied.YesYesNoPartly: Attestation once per install; per-request DPoP proof from device keyNoNoPartly: token verified every request; no one-time/replay check foundNoNoPartly: Limited-use tokens (5 min, one-time) are opt-in; default is reusable session tokenNoNoBuild it yourselfBuild it yourselfPartly: Single-use limited-use tokens via consumeAppCheckToken (beta, Node)Build it yourselfBuild it yourself
Certificate pinning⁠: The app only trusts the gateway's own certificate, which makes intercepting traffic harder.NoYesNoNot documentedNot documentedNoNoNot documentedNot documentedNot documentedNoNot documentedNot documentedNoNoNoNo
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.YesNoYesNoNoPartly: StoreKit appAccountToken only; no OIDC/FirebaseNoYesNoYesBuild it yourselfYesYesBuild it yourselfYesYesBuild 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 checkNot documentedNoNoNoYesNoBuild it yourselfNoNoBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourselfBuild 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.YesPartly: per client ID; default IDFV is resettableYesYesPartly: Pro+ per-user quotas keyed on unverified user valuePartly: Opt-in, in-memory; minute check uses hourly counterNot documentedPartly: Quota per user group; per-user units not documentedNoPartly: 100 RPM default, one project-wide value; user identity not defined in docsBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourself
Per-IP limits⁠: Limits each network address.NoYesNoNoNot documentedNoPartly: IP only as fallback when no team is resolvedNot documentedNot documentedNot documentedBuild it yourselfBuild it yourselfNot documentedBuild it yourselfBuild it yourselfBuild it yourselfPartly: 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.YesNot documentedNoYesYesPartly: Only combined anonymous-user poolYesNot documentedYesYesPartly: Provider account rate limits onlyBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourselfPartly: 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.YesNot documentedNoYesNoNoNoNot documentedNoNoBuild it yourselfNoBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourselfBuild 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.YesNot documentedNoNot documentedNoNoNoNot documentedYesPartly: Only an experimental project spend cap for the Gemini API; Google Cloud budgets only alertPartly: Only the provider's account or project spend limitNoYesBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourself
Request controls
Model allowlist⁠: Only the models you choose can be called.YesPartly: endpoint allowlist and model override, not a model allowlistNoNot documentedPartly: Routes pin models but literal model names bypass routingNoNoPartly: Capabilities (chat, embedding, image) enabled per group; model-level unknownNot documentedPartly: Template-only mode pins model via templates (Preview)Partly: Gemini liveConnectConstraints; OpenAI mint-time session config, enforcement unclearYesBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourselfBuild 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 providerPartly: model overrides per endpoint; prompts/max tokens not documentedNoNot documentedPartly: Routes and server-managed prompt sets; no max-token enforcement documentedNoPartly: structured routes apply project model, system prompt and schemaNot documentedNoPartly: Server prompt templates (Preview); not for Live; Flutter pendingPartly: Gemini can lock config; others not documentedYesBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourself
Moderation and personal-data filters⁠: Content safety or personal-data redaction before or after the model.NoNot documentedNoNot documentedNoNoNoYesNoNot documentedNoNot documentedNot documentedPartly: AI Gateway Guardrails/DLP optional, billed as Workers AIBuild it yourselfBuild it yourselfBuild it yourself
AI capabilities
Streaming⁠: Answers arrive token by token.YesYesNot documentedNot documentedYesYesYesNot documentedYesYesYesPartly: AppSync WebSocket subscriptions, not HTTP SSEYesYesYesNot documentedYes
Realtime and voice sessions⁠: WebSocket or WebRTC sessions such as realtime voice.NoYesNoNot documentedNoNot documentedNoNoNoPartly: Gemini Live via SDK in Preview; no ephemeral tokens mentionedYesNoNoPartly: WebSockets supported; DO bills wall time while connectedNoNot documentedPartly: 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 pathsYesPartly: audio, images, files paths allowed; no embeddings path by defaultNot documentedNoPartly: OpenAI audio/images/embeddings; Anthropic chat onlyPartly: vision, PDF, image-generation routes; audio/embeddings unknownPartly: OpenAI text-to-image and embeddings; others chat onlyPartly: Images yes; Files API and audio not available via packageYesPartly: Audio-centred; chat/text APIs not coveredNot documentedPartly: Alpha: images, video and voice; embeddings are stableBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourself
Fallbacks⁠: Switches to another model or provider when one fails.Partly: Custom endpoints only; no generic-proxy fallback, retries or routingNot documentedNoNot documentedYesNoPartly: retries and circuit breakers; no cross-provider fallbackPartly: Home page claims switch and fallback between providers; docs silentPartly: Fallback to on-device Apple model is a documented patternPartly: Hybrid on-device to cloud; no multi-provider routingNoNot documentedNot documentedPartly: AI Gateway offers it; else codeBuild it yourselfBuild it yourselfBuild 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.NoNot documentedNoNot documentedNoNoNot documentedNot documentedNoNot documentedNot applicableNot documentedNot documentedBuild it yourselfBuild it yourselfBuild it yourselfBuild 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 translationPartly: SwiftOpenAI client works; generic base-URL swap not documentedYesPartly: Provider paths via SDK call; base-URL swap not documentedYesYesPartly: pass-through routes; client sends combined key.token as BearerYesNoNoNoNoPartly: OpenAI-compatible but only callable from Convex actionsBuild it yourselfBuild it yourselfBuild it yourselfBuild 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.YesYesPartly: The self-hosted version stores each request; hosted logs not documentedYesYesPartly: In memory and console output onlyYesNot documentedNot documentedPartly: Sampled AI monitoring tracesNoPartly: CloudWatch logs of the Lambda functionsPartly: Usage per project and function; per-request detail not documentedBuild it yourselfBuild it yourselfBuild it yourselfBuild 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.NoPartly: Only for errorsPartly: The self-hosted version stores them, with no off switch; hosted not documentedNoNoNoPartly: The code stores response text, though the privacy policy says it isn't storedNot documentedNot documentedYesNot documentedNot documentedNot documentedBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourself
Usage per user⁠: How much each of your users has used.YesYesYesYesPartly: userId visible in logsNoNoNot documentedNoNot documentedNoNoBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourselfBuild it yourself
Cost tracking⁠: What the calls cost, by app, model or user.YesNot documentedYesYesPartly: Token counts and usage by route; dollar cost not documentedNoYesNot documentedPartly: Per workspace and model via Console and Admin API; no per-integration split documentedPartly: Token usage by modality per app and model; billing in Google CloudPartly: Provider dashboards per key/projectNoYesPartly: AI Gateway analytics per gateway; per user is diyBuild it yourselfBuild it yourselfBuild it yourself
Alerts⁠: Notifications by email, chat or webhook when usage or spend crosses a line.NoPartly: suspicious-activity notifications; channels/triggers unknownNot documentedNot documentedPartly: Email alert before monthly limitNoPartly: email on high consumption via threshold; check described as simplifiedNot documentedPartly: Workspace spend threshold alerts; channels not specifiedPartly: Google Cloud budget alerts; AI monitoring alerts not documentedNoNot documentedPartly: Warning thresholds and email on usage limitsNot documentedPartly: GCP budget alerts; no AI-specific alertsNot documentedPartly: Vercel spend notifications; AWS Budgets not read
Developer experience
Swift SDK⁠: A library for iOS and other Apple platforms.YesYesNoYesYesNoNoNoPartly: Beta: the Foundation Models provider packageYesNot documentedNot documentedYesNoYesPartly: supabase-swift for auth/invoke; AI call is your functionNo
Android SDK⁠: A Kotlin or Java library for Android.NoNoNoYesYesNoNoNoNoYesNot documentedNot documentedYesNoYesPartly: supabase-kt for auth/invokeNo
Flutter or React Native SDK⁠: A library for cross-platform apps.NoNoPartly: Flutter + Firebase tutorial; works with any SDK via base URLYesNoNoPartly: Expo / React Native guide for iOS DeviceCheck; no libraryNoNoYesNot documentedPartly: React Native page exists; Flutter not documentedPartly: React Native yes; Flutter not seenNoYesPartly: Flutter and JS clients; not re-verifiedNo
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.YesNot documentedPartly: HTTP CRUD API and Postman/Bruno collections; not a documented public APINot documentedNoNoNot documentedNot documentedPartly: Admin API for workspaces/usage; app-integration API unknownNot documentedYesYesYesYesYesYesYes
Compliance certifications⁠: SOC 2, ISO 27001 or similar.NoNot documentedNot documentedNoNoNoNot documentedNoNot documentedNot documentedNot documentedNot documentedPartly: Professional plan lists HIPAA and SOC 2 reports; whether they cover the AI Gateway is unknownNot documentedNot documentedNot documentedNot documented
Monthly price beyond AI tokens
Free plan⁠: A hosted plan you can use without paying, with no time limit. Trials don't count.YesYesNoYesYesNot applicableNoYesYesYesBuild it yourselfPartly: AWS free allowances, some for the first 12 months onlyNoYesYesYesYes
Free self-hosted version⁠: You can run it on your own servers without paying the vendor. The servers themselves still cost money.YesNoYesNoNoYesPartly: Free, but its README says non-commercial use onlyNoNoNoNot applicableNoNoNot applicableNot applicableNot applicableNot 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 $100Unclear: 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 RailwayNo plan: No plan covers more than 50,000 calls a monthUnclear: 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 publishedQuote: Above the Starter plan; the Pro plan's price isn't publishedQuote: 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 RailwayNo plan: No plan covers more than 50,000 calls a monthUnclear: 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
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
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
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
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
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
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
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
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
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
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
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
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
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.