Open the app

you already pay for the models

Stop renting the window.

One place for OpenAI, Anthropic, Google and OpenRouter, on your own API keys. Your chats go to the model you picked — not to us; we have no server to send them to. Your history stays in this browser. $59 once, yours for life.

Your keys, your accounts

OpenAI, Anthropic, Google and OpenRouter, side by side in one window. You pay them directly for what you use. We never charge for tokens and we sell no credits at any price.

No account, nothing to log into

Conversations are written to this browser. There is no sign-up, no cloud workspace and no sync — because the only sync we would consider shipping is end-to-end encrypted, and that does not exist yet.

Built to outlive its own release

The model field is a text box, not a frozen dropdown: type any model id, including ones released after this app was built. Prices live in a table you can edit. A lifetime licence on a stale dropdown is broken within a year.

check it yourself

The list of places this page can send anything

Not a promise — a header your browser enforces. Run this before you pay us anything:

curl -sI https://ownkeys.co/app | grep -i content-security-policy

The connect-src line is the complete list of hosts the app can open a connection to:

connect-src 'self' https://*.supabase.co wss://*.supabase.co https://api.openai.com https://api.anthropic.com https://generativelanguage.googleapis.com https://openrouter.ai

Four model providers, and the licence check. No analytics vendor, no error reporter, no font CDN, no telemetry — not because we say so, because the browser refuses. The landing page you are reading right now carries connect-src 'self' and cannot reach even those.

What it looks like

a recorded conversation — the app is real ↓

ownkeys.co · replay, canned answer

Every other app we make embeds the real product as its demo. This one can't: the real thing needs your API key, and handing out one of ours would mean paying for your tokens forever. So the components, the storage and the streaming are real, and the answer is a recording. We would rather say that than let you think otherwise.

no subscription required

$59once, forever

Every future update included. You still pay your model providers for what you use — directly, at their prices, with no markup from us, because we never touch your tokens.

Get OwnKeys

Or rent it for $15/week, cancel anytime — deliberately worse value than owning. Five weeks of renting unlocks 50% off the lifetime price.

the honest small print

What this release does not do

  • No sync, of any kind. Your history is in this browser and nowhere else. What you send goes to the model you picked and to no one else — we have no server to send it to. The only sync we would ship is end-to-end encrypted, and it does not exist yet — so back up with the JSON export, which works with no account and no connection.
  • No tool use, no function calling, no MCP. That is a product, not a feature, and it is what “agent” would have to mean before we used the word.
  • No local models and no custom endpoints. A host you type in cannot appear in the static policy quoted above, and a policy can only be tightened at runtime.
  • A provider that forbids direct calls from a browser is one we cannot support — because we will not proxy your messages through a server of ours to make it work. That would put us in the path of every conversation, which is the one thing this app exists not to do.
  • Cost figures are estimates. Tokenizers differ, cached and reasoning tokens price differently, and prices change. We show the provider's own reported usage where it gives us one, and your provider's dashboard is the actual bill.
  • Browser only. There is no Mac app and no mobile app, and neither is promised as part of this purchase.
  • The licence check is the one thing that needs a network. Once we start charging, OwnKeys confirms it and then runs offline for 14 days between checks. Stay offline longer and it asks you to reconnect once — lifetime owners included. Nothing is ever deleted when that happens.

Questions

Do my conversations stay on my device?
Your history does. The messages themselves obviously go to the model you picked — that is what the app is for. What does not happen is us seeing them: we have no server to send them to, and the page's Content-Security-Policy allows connections to exactly four provider hosts and our licence check. You can check it with curl before you pay.
Why not just use the provider's own chat?
Because you are then paying $20/month each, three times over, for three text boxes — on top of the API credit you already buy. And your history lives in three different companies' accounts instead of one place you control.
Can I use a local model, or my own endpoint?
Not in this release, and the reason is the same thing that makes the privacy claim checkable: a host you type in cannot appear in a static Content-Security-Policy, and a policy can only be tightened at runtime, never loosened. Supporting it honestly needs a second page with its own header. It is the most likely next addition, not a maybe-someday.
Are there agents?
No, and we are not going to call anything here an agent. Each conversation carries its own provider, model and system prompt, and you can keep reusable prompts — with {{variables}} — in the prompt library. That is saved configuration: it does not act, call tools, loop or decide anything, and in 2026 the word means something specific that we would be borrowing without earning.
What does “lifetime” mean when a provider changes its API?
We ship a fix. And if we ever stop, the export still works and your conversations are plain JSON on your own disk — no account, no connection, no licence needed, including from the lock screen. That is the honest version of the promise, and it is the one that survives scrutiny.
Is my API key safe?
It is stored in this browser, on this device, and we never receive it. We are not going to claim it is encrypted and safe — meaningful encryption at rest needs a passphrase every session, and the key that decrypts a stored key has to live somewhere too. What we do instead is real: a strict policy with no third-party scripts, fonts or analytics of any kind, an optional session-only mode, and setup guidance telling you to use a project-scoped key with a monthly spend cap at the provider.