No account. No server. No telemetry.

Your medical recordsRead on your phone.Kept on your phone.

Scan a report. Cura reads it on the device, files it, and answers questions about it.

A value in Cura is a value printed on your report.

Every value is checked against the text on the page before it is kept. Here is what actually happens to a scan.

Recognise

It reads the letters off the page.

Point the camera at a report and Cura reads the text on it, with an offline reader that runs on the phone. It reads the page. It does not decide what the page means.

The add-document screen, offering camera scan, PDF import or a typed note.

Rebuild

The numbers come from where they sit.

A lab report is a table, so Cura works the table out by measuring: which value sits on which row, next to which test. That part is arithmetic, and a bill breakdown is never anything else. The AI can suggest a title, a type or a date, but a suggestion is thrown away unless those words are actually printed on the page, and no number ever comes from the AI.

The review screen before a scan is saved, showing the extracted title, type and date, and the parsed result rows with their values, units and reference ranges.

File

It lands in a library and a timeline.

Everything goes into one searchable library and a timeline in date order. Before it saves, Cura shows you what it read, so you can fix or delete anything that came out wrong.

The timeline, showing saved records grouped by month in date order.

Ask

Then you can ask it things.

What was my haemoglobin last time. How much did that surgery cost. When was that scan. Cura answers from what it filed, and shows you the report it took the answer from.

The Ask screen, with suggested questions and a text field.

You choose where the AI runs.

On-device is the default and needs no account. Cloud exists because some phones are too slow for a language model, and it is off until you turn it on.

Default

On your device

Runs inside the app on your phone. No account, and no network at all once the model is on the device.

One model is downloaded once, then never again. Three open GGUF builds, no login or token:

  • LFM2.5 1.2B Instruct731 MB
  • Qwen3 1.7B1.28 GB
  • Qwen 2.5 0.5B Instruct398 MB

Note: answers are slower than cloud, and the speed depends entirely on your phone. It works best with 6 GB of RAM or more.

Off by default

Or a provider you already pay

Cura can talk to any OpenAI-compatible endpoint using your own API key, after a one-time explicit consent. Off until you turn it on, and the privacy text in Settings changes the moment you do.

Presets are built in for these, and any other base URL can be added:

  • OpenRouter
  • OpenAI
  • Groq
  • NVIDIA NIM
  • Any OpenAI-compatible URL

Note: your key is held in encrypted storage backed by the Android Keystore, never in plain preferences. You are billed by whichever provider you pick. Cura takes no cut and has no key of its own.

By default, all of it happens on this phone.

No account, no sign-in, no server holding anything. Once the app and whichever model you chose are on the phone, reading a report and answering a question about it need no network at all.

Reading is local. The camera hands Cura cropped pages and the text recognition runs on the device. A PDF you import is copied into Cura’s own storage and rendered there, up to twenty pages. No image, no PDF and no recognised text is uploaded.

So is the answer. Counts, dates, latest values and lists are read straight from the fields Cura saved, with no model in the loop, which is why they come back instantly and why they work before you have downloaded a model at all. Anything longer goes to the model running inside the app, with your question, a little recent conversation and excerpts from your own documents. It cannot open other apps, use the microphone, or read files you never added to Cura.

Tidies up Scans in the background. When a scan leaves behind a long wall of narrative text, Cura queues that document and lets the model rewrite it into something readable, one document at a time, while you carry on. Asking a question takes the model straight back, and the queue picks up where it left off. A rewrite that comes back padded, or carrying a number the page never had, is thrown away and the document keeps the plain summary it already had.

One model, downloaded once. You pick one of three open builds and Cura fetches it a single time, then never again. Voice is the same shape: an optional 57 MB Whisper model that transcribes on the phone and deletes the recording afterwards.

Note: being on the phone is not the same as being encrypted. Cura keeps everything in its private Android sandbox, which other ordinary apps cannot read, but it adds no second layer of its own. Your screen lock and Android’s device encryption are what stand behind that, and an optional biometric lock is in Settings.

Cura's Storage screen: 2.3 GB used, broken down into AI models 2.2 GB, documents 8.6 MB, the voice model 57 MB and 25 MB of cache.

The Storage screen. Everything Cura holds, sitting on the phone, with no copy anywhere else.

If you turn cloud on, this is what changes.

Cloud stays off until four separate things are true: your own API key is saved, a provider and model are chosen, the engine is switched over, and a one-time disclosure is accepted.

It is not only the Ask screen. Whichever engine is active also refines a new scan and rewrites a saved summary, so those go to your provider too.

What goes, and what does not. A minimised version of your question, a little recent conversation, a safe document title (or just the document type, when the title itself is not safe), dates, structured results and allowlisted excerpts. The page image, the original PDF, local file paths and raw OCR are never sent. Your key travels in the authorization header, because that is how the provider knows the request is yours.

What comes back is still checked. A value the provider returns is verified against the full page as it was read on the phone, never against the shortened version that left, and a row already read from the page is never replaced.

Note: the provider is a third party. Its terms, retention and training rules apply to whatever it receives, and it also sees your IP address and request timing. Redaction lowers the risk but cannot promise anonymity, and medical detail can identify a person once it is combined with information from elsewhere. If that trade is not worth it, stay on device. Switching back is one tap, and disconnecting deletes the key.

  • Your question, minimised sent to the provider
  • A little recent conversation sent to the provider
  • A safe title, or just the type sent to the provider
  • Dates and structured results sent to the provider
  • Allowlisted medical excerpts sent to the provider
  • The page image never, never sent
  • The original PDF never, never sent
  • Raw OCR and local file paths never, never sent
  • Any line still holding an email, URL, phone number, address, date of birth or long ID dropped, never sent

What crosses the line, and what does not.

Before any of that leaves, this runs.

An allowlist keeps only the lines carrying a medical signal: a value with a unit, a reference range, a verdict, a section heading, a procedure, the title, the date. Everything else is dropped as a block.

That is what removes the letterhead, the patient details and the footer in one go. Names, addresses, hospital IDs and phone numbers live in those blocks, so they go no matter how they are worded. A second pass then scrubs whatever survived.

13of 13 lines leave the phone

On-device is never redacted, because nothing leaves. Your stored documents always keep their full text.

NORTHFIELD DIAGNOSTIC LABORATORYletterhead
12 Halberd Row, Unit 4 · (0161) 555 0148letterhead
Patient: [ name ]patient details
DOB: [ date ] Hospital ID: [ number ]patient details
Referred by: [ clinician ]patient details
COMPLETE BLOOD COUNT
Collected 09 Jan 2025
Haemoglobin 13.4 g/dL 13.0 - 17.0
Platelet count 186 x10^9/L 150 - 400
White cell count 9.1 x10^9/L 4.0 - 11.0
Impression: within normal limits
Page 1 of 2 · Printed 09/01/2025 14:22footer
This report is confidential. Enquiries: [ email ]footer

Sample page. The values, names and identifiers here are invented.

Ask questions about your reports.

What was my hemoglobin last time. How much did that surgery cost. When was that scan. The pile of paper could not answer any of those.

Answers cite the report they came from
So you can go and check. An answer with no source behind it is a guess, and Cura does not present guesses as records.
Most questions never touch a model
Counts, dates, latest values and lists come straight from the stored fields, which is why they answer instantly and work before you have downloaded a model at all. With cloud turned on, the model answers every question itself.
It can listen instead
Whisper is an optional 57 MB download. Transcription happens on the phone, and the microphone only opens while you are speaking.
The Ask screen, with suggested questions and a text field.

Put your records somewhere
only you can reach.

Download Cura from the GitHub repo and start using it. It is not on the Play Store for now, but it will be.

Download APK