How KeisenVPA Handles Your Data
What leaves your computer, where it goes, and how to check it yourself. Written for KeisenVPA 5.0.2.
On This Page
Four plain answers
Who sees what I send?
Anthropic, the company that runs Claude. Only what you send goes there: text and attachments when you press Send or ask for a note, including chart details you loaded from a connected EHR. In Live Translation, the transcribed text goes as it is recognized (Claude engine); with either engine, a line and its translation go when you click a word, and a vocabulary word with its sentence when you add one. Live Translation's Work offline switch stops it from sending anything to Anthropic.
It goes straight from your computer to Anthropic. No Keisen server is in that path. Your recordings stay on your computer.
How long is it kept?
Anthropic's policy is to delete API inputs and outputs within 30 days, with exceptions: for example, when it must keep them longer to enforce its Usage Policy or to comply with the law. Read it in Anthropic's own words: How long do you store my organization's data?
On your computer, your recordings and notes are kept until you delete them.
Is it used to train AI?
Not under Anthropic's commercial terms: Anthropic states that it does not train its models on API data unless an organization has opted in (Privacy Policy, Section 3.2). KeisenVPA sends your requests through Anthropic's API, never through a consumer chat account.
Who do I call if something goes wrong?
Keisen. Write to keisenvpa@proton.me. We typically answer within 1–2 business days (Terms of Service).
Found a security problem? See Reporting a Security Problem.
The picture
Your computer
Recording, transcription (Whisper), your notes and files. All of it happens and stays here.
Anthropic
Claude drafts the note or the translation and sends it back.
Keisen
Checks that your licence is valid, and publishes the current version number.
In Live Translation with the Claude engine, transcribed text goes to Anthropic as it is recognized, for as long as the mode runs. With either engine, clicking a word sends its line again, and adding a word to your vocabulary sends its sentence; Work offline stops all of it. Two more arrows exist only if you turn them on: usage statistics (off unless you opt in; the complete list) and your EHR, if you connect one. The full list of addresses is in For your IT person.
Try it yourself
- After your first transcription has worked, turn Wi-Fi off (and unplug any network cable).
- Record about 20 seconds.
- The transcript still appears.
- Ask for a note. It is not drafted, because drafting needs Anthropic.
- Turn Wi-Fi back on.
Exactly what Keisen receives
KeisenVPA 5.0.2 talks to Keisen for two things, and sends these fields and nothing more. A third exists only if you turn on usage statistics (off by default; below).
The licence check
When the app starts, and again while it runs once its last check is more than a few hours old, it sends Keisen's licence server:
- Your licence key, or during a trial, a trial identifier
- A device number: pseudonymous, derived from the computer's name. It does not contain the name.
- The app's name
- The app's version, for example 5.0.2
The server notes the time the check arrived. Like any server on the internet, it also sees the IP address the request comes from.
The version check
Automatically at most once a day, and whenever you choose Check for Updates, the app asks keisenvpa.com for the current version number. The request carries no licence key, device number or content.
Usage statistics (only if you opt in)
Off unless you turn it on. The app then sends Keisen's server the events on the complete list: coarse counts and ranges, never content, tied to a random ID created when you opt in. When you turn it off, it sends one last “opted out” event.
Not Keisen, but part of the licence
With a licence key, the app also checks the key with LemonSqueezy, which issues it: when you activate the key, and each time the app starts. It sends the key and an installation name derived from the device number. The Privacy Policy (Sections 2.3 and 2.6) says the same in legal form.
What Keisen can and cannot do to your copy
This is what you have to trust Keisen for, and what you do not.
Keisen can
- Offer an update. When keisenvpa.com lists a newer version, the app shows a dialog. Its download button only opens a web page in your browser. The app does not download or install anything by itself.
Keisen cannot, in this version
- Push code to your computer. An update is a file you get, check and install yourself.
- Change where your data goes. In 5.0.2 the address your requests go to, Anthropic's API, is fixed in the app. Nothing Keisen's servers send back changes it.
- Lock you out of your own work. Your recordings and notes stay ordinary files in folders on your computer: audio files and text files. You can open them without KeisenVPA, whether or not your licence is active, and whether or not Keisen is still in business.
Why macOS warns you
The first time you open each version, macOS says KeisenVPA was not opened, or that it could not be checked for malicious software.
It says this because the release is not notarized by Apple. It is not a malware finding: macOS has not scanned the app and found something. It is telling you that Apple has not checked this file.
Here is how to check that the file is Keisen's: compare its SHA-256 checksum with the one in the installation guide, before you open it (Verify the checksum). Then allow it once under System Settings → Privacy & Security → Open Anyway. After an update, macOS may ask again for permissions it granted the previous version (for example the microphone). Allow them only for a file whose checksum you have checked.
Not done yet
A page like this is only worth reading if it also says what is missing. In 5.0.2:
- No automatic logoff. The app does not lock itself after a period of inactivity. Use your computer's screen lock.
- No encryption of its own. The app does not encrypt the recordings, transcripts and notes it saves. Turn on full-disk encryption (FileVault on macOS, LUKS on Linux).
- Not notarized by Apple. See Why macOS warns you.
- No retention schedule. The app does not delete old recordings or notes for you. Your practice decides how long to keep them and deletes them.
- The Business Associate Agreement is not yet available. Keisen is not yet provisioning practices under a BAA: the template is a draft under legal review. Whether Anthropic's agreement covers every feature KeisenVPA's requests use is still waiting on Anthropic's confirmation (details).
For your IT person
Everything above can be checked on the network. These are the addresses KeisenVPA 5.0.2 connects to, and when.
| Host | When |
|---|---|
api.anthropic.com |
When you press Send or ask for a note; while Live Translation runs with the Claude engine; when you click a word or add one to your vocabulary in Live Translation (either engine). In Live Translation, Work offline stops all of these |
| Keisen's licence server (a Cloudflare Workers address; write to keisenvpa@proton.me for the exact host to allow) | Licence check: at start, then every few hours while the app runs. Also usage statistics, only if you turned them on |
keisenvpa.com |
Update check: automatically at most once a day, or when you choose Check for Updates |
api.lemonsqueezy.com |
Licence activation, and a key check at each start (with a licence key) |
| Your EHR | Only if you connected one |
| Devices on your local network | Only if you use Raspberry Pi recorder discovery or SSH key setup (System Status): the app looks for the recorder on your local network and connects to it over SSH |
pypi.org, files.pythonhosted.org, openaipublic.azureedge.net |
One-time setup of Whisper Services, after you confirm, and the speech-model download that follows when the services first start. Live Translation asks before each model download |
KeisenVPA also talks to its own helper on this computer. That connection never leaves the computer.
How to confirm it
- macOS: LuLu, a free, open-source firewall, asks you the first time each program tries to connect out, and shows where to. Connections made by the app's Python components may show as an IP address rather than a name; look one up with
host <address>. - Linux: OpenSnitch does the same.
- From a terminal, while KeisenVPA runs:
# macOS: the app's open internet connections
lsof -nP -iTCP -sTCP:ESTABLISHED -a -p $(pgrep -f 'KeisenVPA.app/Contents/MacOS' | head -1)
# macOS: bytes sent and received, per connection
nettop -m tcp -p $(pgrep -f 'KeisenVPA.app/Contents/MacOS' | head -1)
# Linux
ss -tnp | grep -i -E 'keisen|python'
The byte counts tell the same story as the table. A request for a note is text: kilobytes, more when you attach screenshots. A minute of recorded audio would be megabytes, and it never shows up.
Leave the firewall running for a day. If a host appears that is not on this list, write to keisenvpa@proton.me.
Accurate for version 5.0.2 · last reviewed October 27, 2026