Whispr

Credentials and costs

Every service Whispr calls runs on your account. You bring the keys, they are stored in your computer's own credential store — the Keychain on a Mac, Windows Credential Manager on Windows — and they are only ever sent from this machine to the service they belong to.

Nothing you load and nothing anyone says passes through us. One thing does go to us and it is not that: a licence check, described in what leaves this machine below, which sets out every case rather than only the flattering ones.

What you actually need

Two things, and everything else is optional:

For What it does
Hearing the call Deepgram, Workers AI, or a local whisper server
Answering At least one model provider

One free Cloudflare Workers AI account is enough to answer. Five providers in parallel also works — they answer the same question at once and you pick.

It can also be enough to hear: the Workers AI transcriber runs Deepgram's own model on the same Cloudflare token, so one account covers both rows. A direct Deepgram key is cheaper per minute; the Cloudflare route is one signup instead of two.

Roughly what it costs

Speech is billed by the minute, and Whispr opens two streams because your side and their side are transcribed separately. That is usually the largest running cost in a normal setup, and it is the one that scales with the length of the call rather than the number of questions.

Model providers bill by tokens. Each question sends the question, the matching passages from your prep, and some transcript context; each answer comes back at a few hundred words. Asking for a shorter answer or a different angle is another call, which is why those are buttons and nothing is generated unasked.

Settings has the real numbers: open any credential row and it gives the free allowance, the billing unit, and what a forty-five-minute call consumes. Those figures are dated, and the app never fetches prices — confirm on the provider's own page before committing to anything.

Rows with no key

Some entries in Settings have no box to paste anything into. They are listed anyway, because an absence reads as "unsupported":

What leaves this machine, and what does not

Worth being precise about, because "runs locally" is often claimed loosely.

Stays here. Your recordings, transcripts, prep material and history live in a database on this machine — ~/Library/Application Support/Whispr on a Mac, %APPDATA%\Whispr on Windows. Your keys live in the credential store, and the app can only ask whether one is stored — never read it back.

Goes to your providers. Audio goes to whichever transcriber you chose. Each question, the prep passages that matched it, and some transcript context go to whichever answer engines you enabled. These are your own accounts, under whatever terms you agreed with them — but it is real data leaving the machine, and worth knowing which.

Goes to a site you pasted. If you give a meeting a company web address, Whispr fetches that page to read it for you. That request comes from your Mac, carries no cookies and nothing that identifies you beyond an ordinary browser agent string, and happens only when you ask for it — never on a schedule. The site sees a visit from your machine, as it would if you had opened it yourself.

Goes nowhere at all. With local whisper and a locally-hosted model, none of the above leaves — no audio, no question, no prep. That is the point of offering both, and it is the setting to choose if the conversation is sensitive. The licence check below still runs; it is the one thing that is not switchable.

Goes to us. One thing, and only one: the licence check. Once you have signed in, this machine asks whispr.one whether your account is still entitled — on startup and every six hours after — sending a device token and this computer's name, which is the label your account page lists the device under. Signing in sends the same. Nothing else in the app talks to us, and none of it carries a question, an answer, a transcript or a document. What it does reveal, and what no wording can hide, is roughly when the app is running on this machine. An install nobody has signed in on makes no call to us at all.

The one thing we run

Exactly one piece of infrastructure is ours: the whispr.one website, signup, your account page, billing, and the licence check above. It never sees a question, an answer, a transcript or a document.

Anything that would need our credentials inside the app is treated as a design mistake here — the answer is always to make it something you configure with your own resources instead.

Setting up the voice Worker (optional)

This is the one thing Whispr asks you to deploy rather than paste. It is optional — skip it and the spoken interviewer uses Deepgram, which needs no deployment at all. It exists because running the voice on your own Cloudflare account means no Deepgram key and no per-minute charge for practice.

It has to be your account, because it is your inference bill and your data. So somebody has to put it there, and Cloudflare will do the whole thing.

If you have never set one up

  1. In Whispr, choose I need to set one up and press Deploy it to my Cloudflare account. That opens Cloudflare.
  2. Sign in, or create an account — the free plan is enough.
  3. Cloudflare copies the Worker into your own GitHub account, creates everything it needs, and deploys it. Two minutes, no terminal.
  4. Copy the address it gives you — https://whispr-voice.<your-name>.workers.dev — and paste it into Whispr.
  5. Invent a password for it. Any long random string. In Cloudflare: your new Worker → SettingsVariables and SecretsAdd → choose Secret → name it exactly VOICE_TOKEN → paste your string.
  6. Put the same string into Whispr under Credentials as WHISPR_VOICE_TOKEN.

Steps 5 and 6 are one secret in two places, and they must be identical. That is the whole security model: your Worker answers only to somebody who knows it. Nobody else can use your account, and we never see it.

If you already have one

Choose I already have one and paste the address. If the token is already stored you are done; press Test and it will say whether the credential was accepted and the endpoint was reachable.

What it costs you

Cloudflare's free plan includes 10,000 Neurons a day.

Using it for Roughly
Answering live questions 2,300 Neurons for a 45-minute call — no audio is billed on that path
The spoken practice interviewer about nine minutes of talking inside one free day

Nothing bills anybody but you, and nothing runs unless you switch it on.

When it does not work

Whispr says What it means
no voice Worker URL is set Nothing pasted yet, or it was cleared
WHISPR_VOICE_TOKEN is not stored The password is missing on Whispr's side
the credential was rejected The two strings differ. Set them again, both places
reachable, but nothing is deployed at that path The address is right and the Worker is not there — check the deploy finished

Keeping it up to date

The Worker lives in its own public repository so Cloudflare can clone it. When a new version is published there, Cloudflare rebuilds and redeploys your copy by itself — the deploy set up continuous builds from the repository in your account. You do not have to do anything.