The first time I let my own agent run a "research this and make me a spreadsheet" task with my own API key, I didn't look at the bill until afterwards. It wasn't huge. But I realised I had no idea what a single task could cost, and that's a weird feeling when it's your money and your key.

That's why Kryzz AI has a per-turn cost cap.

Quick context: Kryzz AI is an MIT-licensed Android app (Kotlin + Jetpack Compose) for chat, voice and agent tasks. It doesn't run models on the phone. You bring your own OpenRouter key and the models are hosted by whichever provider you pick. Chats, memory, files and keys stay on the device, and there's no analytics or telemetry.

What the cap does

  • Every turn has a spending limit. The default is $0.25, and you can raise it up to $2 in settings.
  • The chat shows tokens and cost per reply, so the number isn't hidden in a dashboard somewhere.
  • Agent tasks come in Fast, Balanced and Max, so you choose how much effort (and money) a task is worth before it starts.

Why a budget instead of "just make the agent smarter"

When you bring your own key, every extra search, page fetch or retry is paid by you. An agent that loops a few extra times isn't just slow, it's quietly expensive. I could keep tuning prompts to make it loop less, but a hard number is easier to trust than a promise that the prompt is good now.

A cap also changes how the agent feels to use. You stop babysitting it. You know the worst case before you press send.

What I'm still unsure about

  • Is $0.25 a sensible default? It's enough for most chat turns and normal agent tasks with mid-priced models, but heavy models eat it quickly.
  • Should the cap be per turn, per task, or per day? Per turn was the simplest to explain, but a daily budget might match how people actually think about money.

If you've built anything on a pay-per-token API: how do you protect users (or yourself) from a runaway request?

Try it

Honest caveats: you need your own OpenRouter key, it's not on the Play Store, and so far the signed release build has only been tested on an emulator. Bug reports are very welcome.