Keeti 1.0 is in public beta, free while the beta lasts. Download →
Legal

Privacy Policy

Published by Flowwi (legal notice) · contact: tristan@flowwi.fr · last updated: 31 August 2026

Keeti is a local-first macOS application. Your recordings, transcripts and meeting notes stay on your Mac, and Keeti asks you for no account. The rule this whole page unfolds is simple: we can count what the app does, never see what you said. Keeti sends us anonymous usage measurements, described precisely in Usage measurement; your content never reaches us, and there is nowhere in the format it could fit.

What Keeti handles, and where

DataWhere it livesWhat leaves your Mac
Meeting audio Local only Never. The file is deleted automatically according to your retention setting (30 days by default).
Transcript (text) Local, in files that belong to you The text is sent to the AI provider you choose, with your key, to write the notes.
Meeting notes and action items Local Only if you configure an outgoing webhook, or query them through an agent connected over MCP.
Google Calendar and contact data Local, in the meeting files (see the dedicated section) Never sent to us. Confirmed attendee names and email addresses may be included in the text sent to your AI provider.
Voiceprints Local, encrypted (see the dedicated section) Never.
API keys, secrets, tokens macOS Keychain (encrypted by the system) Never transmitted to Flowwi. Used only to call the services you configured yourself.

What leaves your Mac, and only if you turn it on

  1. Writing the notes (your key): the text of the transcript is sent, with your own API key, to the AI provider you select (Anthropic Claude, OpenAI, Mistral or Google Gemini). The audio is never sent. That provider acts as a processor and handles the data under its own policy, which we encourage you to read.
  2. Outgoing webhook (optional): if you configure one, the notes and action items are sent to the URL you provide, over HTTPS, signed with HMAC if you set a secret. The destination is your choice.
  3. AI agents over MCP (optional): the MCP server runs locally. It makes your meetings queryable by an agent you connect. Keeti exposes nothing on the network.
  4. Google account connection (optional): read-only, directly between your Mac and Google (section below).
  5. Updates: Keeti fetches a public file hosted on GitHub Pages to find out whether a newer version exists. That request carries no account or content data.
  6. Speech recognition models: on first launch, Keeti downloads the models that then run locally (about 480 MB, from Hugging Face). Nothing is sent in that direction: it is a download.

Flowwi receives, stores and has access to none of this content.

Usage measurement (telemetry)

Since version 1.9, Keeti sends us anonymous usage events, so that we can see where the product fails people: how many installations reach their first meeting notes, where the others stop, which errors happen, on what kind of machine. This is how the product gets better, and this section says exactly what it carries.

What is sent

The measurement is on by default and there is no in-app switch: that is the deal this page makes explicit — we count precisely because the format above cannot carry anything about you.

What is never sent, by construction

No meeting title, no attendee name or email address, no transcript, no notes, no audio, no file name, no API key, no webhook address. This is not a promise held by a filter: the event format has no free-text field. There is nowhere to put your content, and our server rejects any message that does not match that closed format.

Where it goes, and how long it stays

This design follows the French regulator's (CNIL) framework for consent-exempt audience measurement: strictly anonymous statistics, produced for the publisher's sole use.

Google user data

Connecting a Google account is optional and Keeti works without it. Every permission Keeti requests is read-only, each one can be declined on its own at the consent screen, and the access happens directly between your Mac and Google (OAuth 2.0 with PKCE, loopback on 127.0.0.1). No Keeti server is involved.

What we access, and why

ScopeGoogle data accessedWhy
calendar.events.readonly Title, times, guests (names and email addresses) and recurrence identifier of your upcoming events Pre-fill the meeting title, the attendee list and the number of speakers; offer to record a meeting that is starting. The speaker count is what lets the on-device engine separate voices correctly.
directory.readonly Display name and email addresses of a person in your Google Workspace organisation's directory Turn a colleague's email address into their full name, so the notes credit a person rather than an inbox.
contacts.readonly Display name and email addresses of a contact you saved The same lookup, for clients and partners outside your organisation.
contacts.other.readonly Display name and email addresses of a person you have corresponded with without saving them as a contact The same lookup again. In practice this covers most external attendees.

How we use it

How we protect it

Retention and deletion

Limited Use

Keeti's use and transfer of information received from Google APIs to any other app adheres to the Google API Services User Data Policy, including the Limited Use requirements. Concretely: Google data is used only to provide the meeting-preparation feature described above, stays on your device, is not used for advertising, is not sold, and is not accessible to any human being, unless you explicitly consent to share it as part of a support request.

Voiceprints

Keeti can learn your voice in order to recognise you from one meeting to the next and attribute what was said correctly. A voiceprint is biometric data under Article 9 of the GDPR: it gets heightened protection.

Legal framework

Recording a conversation without the knowledge of the people in it is unlawful (Article 226-1 of the French Criminal Code, and equivalent rules in most countries).

Keeti reminds you to make the announcement when you start a recording, but the announcement and obtaining consent remain your responsibility. One sentence at the start of the meeting is usually enough.

Security

The protections described in the Google section apply to everything Keeti handles. In summary: secrets and tokens stored in the macOS Keychain · network calls over HTTPS · Google sign-in over PKCE with a local loopback · webhooks signed with HMAC · voiceprints encrypted with AES-GCM · updates signed with EdDSA. Keeti is distributed signed with an Apple Developer ID and notarised by Apple. Because there is no account and your content never reaches us, there is no central store of meetings to protect, and no credential of ours that could grant access to yours.

This site

Everything above describes the application. The site you are reading is separate, and it does not track you either: no cookies, no analytics, no trackers. Fonts are served from this domain, so reading this page sends a request to nobody else.

Changes

This policy may change along with the application. The date of the last update is at the top of the page. A change that widened what leaves your Mac would be announced in the release notes.

A question about your data? Write to tristan@flowwi.fr.