Claudia is an AI assistant for iPhone that runs its agent loop on the device, creating reminders, managing calendar events and searching its on-device memory. It has no model of its own, so it runs on an AI account you connect, and OpenRouter is the quickest one to connect. Claudia on the App Store.
Option 1: one tap, no key to copy
This is the recommended path. You never see or handle an API key, and the connection is bound to your own OpenRouter account.
- Open the OpenRouter row. In Claudia, go to Settings, then API Keys, then OpenRouter. You will also be offered this during first run, on the Connect your AI step.
- Tap Connect OpenRouter. A secure browser sheet opens on openrouter.ai. Sign in there, or create an account, and approve the connection.
- Approve, then come back. OpenRouter returns you to a small handoff page on this site, which immediately passes a one time code back to the app. Nothing is stored on that page.
- Claudia finishes the exchange. The app trades the one time code for a key and writes it to the iOS Keychain. You end up back in Settings with OpenRouter connected.
- Pick a model. Open the model picker in chat and choose an OpenRouter model. New connections start on free models only, so you will not be charged by surprise.
What is happening underneath. Claudia uses the OAuth PKCE flow, the variant designed for apps that cannot keep a secret. Your phone generates a random verifier, sends only its SHA-256 hash to OpenRouter, and proves ownership at the end by presenting the original. A stolen authorization code is useless to anyone else because they do not hold the verifier.
Option 2: paste your own API key
If you already have an OpenRouter key, or you prefer to issue and scope your own, this path is always available and never goes away.
- Create a key at OpenRouter. Sign in at openrouter.ai/keys and create an API key. Copy it once, since OpenRouter shows the full value only at creation.
- Open the same OpenRouter row. Settings, then API Keys, then OpenRouter.
- Paste it into the key field and save. The value goes straight into the iOS Keychain.
Never paste an API key into a chat window, in Claudia or anywhere else. A key typed into a conversation becomes part of that conversation and may be sent to a model. Keys belong in the Settings field, which writes to the Keychain and nowhere else. If you ever paste one by accident, revoke it at OpenRouter and issue a new one.
Free models, and what they cost
A new OpenRouter account starts with no credit, so Claudia sets new OpenRouter connections to free models only. The app shows this in the model picker:
New OpenRouter accounts start with no credits, so Claudia set OpenRouter to free models only. Once you add credit at openrouter.ai, turn this off in the chat model picker to use paid models.
The free allowance itself is OpenRouter's, not ours. It applies to your account, it is subject to their current terms, and it can change without any update to Claudia. OpenRouter publishes the live limits in their rate limit documentation, which is the number to trust. When you add credit at OpenRouter, turn the free-only switch off in the model picker and the paid models appear.
Billing is entirely between you and OpenRouter. PrentusAI takes no cut, adds no markup and never sees your balance.
Where the key lives, and what we can see
Nothing about this connection routes through us.
| Your API key | Stored in the iOS Keychain on your device, in its own entry. It is never sent to PrentusAI and never leaves the phone except as the authorization header on your own requests to OpenRouter. |
|---|---|
| Your messages | Sent by your phone directly to openrouter.ai over HTTPS. There is no PrentusAI proxy, relay or logging server in this path, so we do not receive your prompts or their answers. |
| Your conversations | Stored in the app's private storage on the device. Claudia does not add its own encryption layer, so what protects them is iOS and your device passcode. |
| Attribution headers | Every request carries HTTP-Referer: https://prentusai.com and X-Title: Claudia, which is how OpenRouter attributes traffic to an app. These identify the app, not you. |
| Training and logging | Claudia sets data_collection: "deny" on every OpenRouter request, on pasted keys as well as connected accounts, so OpenRouter routes around providers that would retain your data. Your own OpenRouter account settings still apply on top. |
| The handoff page | The sign in flow returns through prentusai.com/claudia/openrouter-callback. It is a static page with no analytics that does one thing: pass the one time code back to the app. It does not read, log or store the code. |
If something goes wrong
The browser sheet opened but nothing came back
The handoff needs to reopen Claudia through its own link. If you cancelled the sheet or switched apps mid flow, no code was delivered. Reopen Settings, then API Keys, then OpenRouter, and start the connection again.
The page says Claudia did not receive a code
That message means OpenRouter returned without an authorization code, usually because the approval was declined or the sign in did not complete. Nothing was stored and nothing was charged. Try again, and make sure you finish the approval screen on openrouter.ai.
A model says you have no credit
You are on a paid model with an empty OpenRouter balance. Either switch back to a free model in the model picker, or add credit at OpenRouter. Claudia cannot add credit for you.
You want to disconnect
Clear the key in Settings, then API Keys, then OpenRouter. To be thorough, also revoke the key at openrouter.ai/keys, since that is the only copy that matters once it is off your phone.
Setup guide for Claudia 1.3.1. Something out of date or unclear? Write to team@prentusai.com.