What this covers
This policy is about the Lingary app for iOS and Android. The site you're reading it on is covered separately by Legal & privacy.
Lingary is an independent project with no sign-up and no user account. The only server we run hands out the Basics courses — see The course server. "We" below means the developer of the app.
What stays on your device
Everything the app knows about your learning is kept locally: your language profile and level, your word bank and spaced-repetition schedule, the full text of your conversations with the tutor, and your session analyses, missions, grammar notes and statistics.
On iOS that database is stored with file protection enabled, so it is encrypted at rest and unreadable while the device is locked. API keys are kept separately in the iOS Keychain, marked device-only and excluded from backups. On Android the database sits in the app's private storage, which other apps cannot read, and API keys in storage encrypted with a key held by the Android Keystore; neither goes into Android's backups or device-to-device transfers. None of it is transmitted to us — the course server learns your language pair, to send you its course, and the text of a tutor reply only if you report it.
AI providers (online mode)
Lingary is bring-your-own-key. You pick a provider and enter an API key you obtained yourself; from then on the app talks to that provider directly from your device, authenticating as you.
Depending on which features you use, it may send:
- Audio from your microphone — during a voice conversation, or for speech-to-text.
- Text — your messages, the tutor's replies, and a session transcript when it's analysed.
- Words and phrases from your word bank, when you ask for examples or exercises.
| Provider | Used for |
|---|---|
| OpenAI | Conversation, analysis, speech-to-text, text-to-speech, live voice |
| Google (Gemini) | Conversation, analysis, speech-to-text, text-to-speech, live voice |
| Groq | Speech-to-text; conversation via the OpenAI-compatible option |
| Fish Audio | Text-to-speech |
| OpenRouter, DeepSeek, Mistral | Conversation and analysis, via the OpenAI-compatible option |
| Any custom endpoint | Whatever you configure it for |
We are not a party to these requests. We don't proxy them, log them or hold credentials for them. What a provider does with the data — how long it keeps it, whether it trains on it — is governed by their terms and privacy policy, under the account your key belongs to. Read the policy of whichever provider you choose.
Your permission comes first. Before the app sends anything to a provider, it shows you what will be sent and who receives it, and asks. The answer is kept per provider — allowing one does not allow another — and a provider you haven't allowed receives nothing. You can withdraw a permission at any time in Settings → Privacy; from then on nothing more is sent to that provider.
How your data is protected there. The providers in the table are the only third parties Lingary sends your data to. Lingary offers only providers that publish privacy terms binding them to keep the data they receive secure and to handle it as those terms describe, and we consider that protection equal to the protection this policy, the App Store Review Guidelines and Google Play's policies require. The details differ between providers — how long data is kept, where it is stored, whether data from a free account may be used to improve the provider's models — so read the policy of the provider you choose.
If you enter a custom endpoint, all of the above goes to whatever address you typed. The app asks for your permission for it like for any other provider, but we can't vouch for a server we don't know: only point it at one you run or trust.
Offline mode
Lingary can run entirely on your phone, using a downloaded language model together with on-device speech recognition and speech synthesis. Apple's on-device transcription and Apple Intelligence, where your device supports them, also run locally and are handled by iOS.
In offline mode nothing leaves your device — no audio, no text, no network request at all.
Turning offline mode on downloads model files from Hugging Face. Those are ordinary file downloads, pinned to fixed versions and checksum-verified; they carry no personal data.
The course server
The Basics courses — the structured lessons for a language pair — come from the one
server we run, lang-tutor-basics.fly.dev, hosted by Fly.io in Frankfurt.
It receives only this:
- Downloading a course — the language pair you are learning, and nothing about you.
- Requesting a course for a pair that has none yet — the language pair.
- Reporting a mistake in a lesson — the language pair, which lesson, and the text you wrote.
- Reporting one of the tutor's replies — the language pair, the reply you report, and the note you wrote, if any.
- Asking for a course to be written — the language pair. The course that comes back is published for everyone learning that pair; the app says so before you confirm.
Requests and reports are kept in a log on that server and may be forwarded to our email so we can act on them. They carry no account, device identifier or contact details — only what you typed and, in a reply report, the reply — so don't put anything personal in a report. They are kept until they have been dealt with; to have one deleted sooner, email us with roughly what it said and when.
Like any server, it sees the IP address a request comes from. It uses it only to stop one address from flooding it: the address is held in memory for at most an hour and is never written anywhere. Apart from a reply you report, your conversations, voice, word bank, level and API keys never go to this server.
Permissions the app asks for
- Microphone — needed for voice conversations. Audio is either processed on your device or sent to the provider you chose, as above. It is never recorded for us.
- Speech recognition — used by the on-device transcription built into iOS.
- Notifications — optional. Practice reminders and word-of-the-day notifications are scheduled locally. There is no push server.
- Camera — iOS may show a camera permission string because the real-time voice library the app links against references camera APIs. Lingary never opens the camera and captures no photo or video.
On Android the app asks for the microphone and, on Android 13 and later, for notifications. There is no speech-recognition or camera permission there.
Feedback
Apart from course requests, lesson reports and reports about the tutor's replies (see The course server), the app sends nothing to us. Settings → About → Feedback opens the project page in your browser, where there is an email address.
So what reaches us is what you send yourself — an email, the text of a lesson report, or a tutor reply you report with your note — containing exactly what you chose to put in it. Earlier versions had an in-app form that filed a ticket in a third-party tracker; it was removed, along with the API token it required the app to carry.
Backups and diagnostic exports
You can export a backup to move to a new phone. It is unencrypted JSON containing your learning data and conversation history. API keys are never written into it. Once you've shared that file nothing protects it — treat it as a private document.
You can also generate a diagnostic export when something goes wrong. You choose what goes in, it's created only when you ask, it's deleted once you close the share sheet, and it is never sent anywhere automatically.
Links out of the app
Tapping a media recommendation opens a search on YouTube, Goodreads or Google. The app
passes the search text and nothing else — never who you are or what you've been
studying. Settings also links to this policy, the terms of use, the feedback section
of this site and the list of my other projects. Those links carry a marker,
?from=app, that tells the site not to show donation buttons; it says
nothing about you and disappears from the address as soon as the page opens.
Following any of them is subject to the privacy policy of wherever you land.
What Lingary doesn't do
- No analytics or telemetry SDKs
- No advertising and no advertising identifiers
- No third-party trackers
- No accounts, no registration, no email collection
- No selling or sharing of personal data
- No cross-app or cross-site tracking
Lingary does not ask anyone, including children, for personal information. There is no account, no profile visible to us and no communication with other users.
Your control over your data
- Settings → Backup & Data erases your history, word bank and API keys at any time.
- Settings → Privacy lists every provider you have a key for, with a switch: turn one off and nothing more is sent to it.
- Deleting the app removes the local database with it.
- A course request, lesson report or reply report you sent is deleted on request — email us.
- Anything already sent to an AI provider sits under your account with them — use their dashboard or support to review or delete it.
If you have statutory data rights (GDPR, CCPA and similar): the only thing we may hold is a course request, lesson report or reply report you sent, which is not linked to you — email us and we will delete it. For data held by an AI provider, that provider is the controller and you are their customer.
Changes and contact
This page is updated when the app's data handling changes; the date at the top says when it last was, and the commit history shows exactly what changed.
Questions: email lvigtor@gmail.com.