Lucid

Privacy

Lucid · last updated 14 October 2026

This page is written from Lucid's own source code and is accurate about what the software does. It has not been reviewed by a lawyer, and one blank — who legally answers for this data — is a decision nobody has made yet and is marked in yellow below. Until that is filled in and the list at the foot of this page is answered, read this as a plain description of the software rather than as a finished legal notice: before this page is published.

Lucid holds a great deal about the person using it — mail, calendars, contacts, text messages, health figures, bank balances, a journal, a vault. This page describes what it actually does with all of that: not what a privacy policy usually says, but what this codebase does, rewritten whenever the two stop matching.

The short version, because the rest is long and these are the sentences people are looking for. Your data is not sold, not shared for anybody else's purposes, and not used to train any model — see nothing here trains anything. It leaves Lucid's own server in four named circumstances and no others, all of them under what actually leaves. You can take a copy of it, or destroy all of it, from your data page, without asking anybody — and the copy tells you what it could not carry rather than letting you find out later. A copy of your recent mail also sits on the device you are reading this on, and signing out deletes it. Nothing in Lucid is ever deleted because of money.

Who is responsible for it

Lucid is operated by [DATA CONTROLLER — TO BE NAMED, with a registered postal address], which is the party responsible for the data described here.

You can write to support@lucid.invalid — placeholder, a real support address has not been chosen yet about anything on this page, including a request to see, correct, export or delete what is held about you. You do not have to write to anybody to export or delete: both are buttons on your data page.

Whose data this is

Mostly yours. Lucid connects to mail, calendar, task, messaging, music and banking accounts that you sign in to or pair yourself, and it reads them on your behalf. Three things about the people you deal with, rather than about you, are also held, and each is described plainly further down rather than folded into "yours": when someone you email opens a message you sent (under mail you send is watched for opens), what Lucid has worked out about how they correspond with you (under things Lucid worked out), and the free, self-published lookups Lucid does about a contact when you press the button (under what actually leaves). Nothing else is gathered about anyone who has not connected an account.

What is stored, and where

Lucid keeps its own copy of some of what it reads, so that the app is fast and so that years of it can be searched. That copy lives in a private database (Supabase) which only Lucid's own server functions can reach, and every row in it is tagged with the account that owns it. There are two other places your things sit, and both get a section of their own below because neither is obvious from the outside: five buckets of files beside the database, and a copy of your recent mail on the device you are reading this on.

The five buckets of files, and the one that is public

Anything that is a file rather than a row lives in file storage beside the database, in five buckets, every object filed under your account:

What a backup would and would not bring back

Most products do not tell you this and it matters more than most of what they do tell you. Lucid's database is backed up by Supabase. Those backups do not contain the files above. Supabase says so plainly — "database backups do not include objects you store via the Storage API, as the database only includes metadata about these objects" — and point-in-time recovery is the same machinery and covers the same database.

So if storage were lost, a restore would bring back the row that says a document called "Passport.pdf" exists, and not the document. The live bucket is the only copy. That is the reason the terms of service ask you to keep your own copies of anything you cannot afford to lose, and it is why it says so rather than gesturing at "reasonable measures".

The copy on the device you are using

Lucid keeps a slice of your mail in the browser itself, so that typing in the mail search box answers instantly instead of waiting for a round trip to the server. It is a real copy of real mail and it is on your own disk, so here is exactly what is in it:

Signing out deletes it. Not clears the reference to it — deletes the database off the disk, and the same thing happens if your session expires or is refused. A copy of somebody's correspondence surviving their sign-out would be a security fault rather than a performance feature, so the deletion sits beside every other thing that is dropped when a session ends. If your browser will not give Lucid a store at all — a private window, a refusal, a full disk — nothing is written and search simply works the way it did before, from the server.

The rest of what the app has drawn recently is also held in that browser for a few minutes so screens do not flicker. It is tied to the signed-in account and is dropped at sign-out with everything else.

How long it is kept

Most of it is kept until you delete it, because most of it is the point: a life vault that quietly forgot last year would not be one. What does have a clock on it:

Nothing here is deleted because of money. Not on cancellation, not after a failed payment, not on a timer, not ever. Being locked out is not the same as being erased, and erasure belongs to you rather than to a billing system: the code that decides billing states has no delete verb in it at all, and a test fails the build the day it grows one.

Nothing here trains anything

Your data is not used to train any machine-learning model. There is no model in this project, nothing here is used to build one, and nothing is sold, rented, brokered or handed to anybody as a business relationship. No advertising, ever. There is no analytics service anywhere in Lucid — no Google Analytics, no tag manager, no Mixpanel, no session recorder, on this page or in the app — so nobody is counting what you clicked.

Where Lucid sends text to an AI provider, described below, it does so through those providers' APIs, whose terms say data sent that way is not used to train their models. That is their commitment rather than Lucid's, and which one applies depends on which provider this installation uses; if it is pointed at a model running on the owner's own Mac, the question does not arise, because nothing leaves the building.

What actually leaves Lucid's server

Four things go out carrying something of yours. They are listed together here, before the longer sections, because this is usually the list a person is looking for and usually the hardest one to find:

Beside those four there are the companies Lucid runs on, which hold the data rather than receive it, and the services Lucid asks about the world rather than about you. Both are named in full below.

The companies Lucid runs on

These hold or handle your data in order for Lucid to work at all. The list is read off the code rather than off a template, and it is meant to be kept current.

The one payment processor Lucid is built to use is Stripe. It is wired in test mode only, so nobody can be charged today. When you start a checkout or open the billing portal, Lucid asks Stripe to create that session for your account, and Stripe is the thing that holds a card number — no card details are held in Lucid, and no live payments are taken until that is switched on on purpose.

Two things Lucid deliberately does not use, worth saying because most products in this shape do. There is no third-party sending service anywhere in it — no Mailchimp, no SendGrid, no Resend — because mail Lucid sends goes out through your own mailbox at Microsoft or Google using the permission you granted, so nobody else ever handles the text of a message you write. And there is no data broker: see the note on contact lookups above.

The services that are asked about the world

These are not in the list above, because they receive a question and never your data. What they do see is that somebody asked, from Lucid's server rather than from your browser — so the question reaches them without your address, your name or any identifier of yours attached. They are named because "some third-party APIs" is the sentence a privacy policy uses when it does not want to be checked:

None of these is sent anything from your mail, your calendar, your vault or your journal, and none of them is told who you are.

The assistant, and what the model sees

This is the paragraph most products bury in one vague sentence, so it is early here and it is blunt. When you ask Lucid something, the text of your question and the material Lucid reads in order to answer it are sent over the internet to a model provider. That material is your own data: it can include your mail, your calendar, your tasks, your contacts, your notes, your journal, your vault and your text messages. There is no way to answer a question about your life without showing a model some of your life, and a product implying otherwise is not being straight with you.

What you control is the source list. Exactly which of your own data the assistant may bring into an answer is switched on and off, per source, under Settings → Assistant → Access. Nothing you have switched off there is ever read into a prompt.

Nothing is sent to an AI provider until you say yes. The first time a feature would need one, Lucid shows you what would be sent and to whom, with OK and Not now. Not now keeps every AI feature off and the rest of Lucid works as normal. Your answer, and when you gave it, is recorded, and you can change it at any time under Settings → Your data → AI features. The server enforces that answer as well, including for the jobs that run while you are signed out, so the question on screen is a courtesy rather than the only lock.

Once you have said yes, text reaches an AI provider in these circumstances, and these are all of them:

If you never say yes, none of these happens, and nothing from your mail, calendar, texts or notes reaches a model at all. One exception is stated here because it is true today: writing a recipe does not yet check your answer, so asking for one sends your pantry list even if you said Not now. The museum notes beside the art on Home are written by a model too, but from the museum's own records; nothing of yours is in them.

And a good many questions never reach a model at all. A question that is plainly a lookup against your own data — "what is on tomorrow", "who have I not replied to" — is answered by Lucid's own code, from your own database, with nothing sent anywhere. That is done to save you money and a wait; the privacy of it is a side effect, but it is a real one.

Which company sees the question

For the writing — summaries, the daily brief, memory and the assistant's answers — one company: Anthropic. Under its API terms it does not train its models on what Lucid sends. If this installation is pointed at a model running on the owner's own Mac, that model is tried first for background work, and nothing sent to it leaves the building.

Lucid does not send your mail to a free model hosted by anyone else. Free tiers are paid for with content, and Lucid's input is somebody's mail, so they are refused on their terms rather than on their price.

None of what is sent is used to train a model, none of it is sold, and every one of those is a commitment made by the provider rather than by Lucid. Which providers are actually configured for the installation you are using is a question you are entitled to ask, and the address below is where to ask it.

The search index over your mail

Lucid can search your mail by meaning rather than by keyword. To do that it cuts each mirrored message into passages and asks OpenAI's embedding service to turn each passage into a list of numbers; the numbers are stored beside the passage in Lucid's own database, and the searching happens there. Building the index therefore sends the text of your mail — passages of the real thing, not a summary — to OpenAI. Most of what goes to a model is what one question or one summary needs; this sends mail in bulk, and so does the overnight memory job if you switch your sent mail on for it. It is worth knowing before you press the button.

It runs by itself once you have said yes to AI features, and not before: new mail and new text messages are added every hour, and older ones are worked through a slice at a time, newest first, until the history is done or a spending ceiling stops it. Your text messages and the facts in memory are indexed the same way. If you said Not now, nothing is indexed and nothing is sent; an installation with no OpenAI key configured never builds it either. The same service is asked to embed your search phrase when you search, and to speak a sentence aloud when you press the speaker: the sentence itself is sent to OpenAI's speech service and the audio comes back. OpenAI's API terms say data sent through the API is not used to train their models.

Google user data, specifically

Lucid's use of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements. Lucid requests these permissions and uses them only for these purposes:

Google user data is never used to train any machine-learning model, is never sold, and is never transferred to anyone except as needed to provide the features above. Where mail from a Gmail account goes into the search index described above, that transfer is to the embedding provider for the single purpose of making your own mail searchable by you.

Microsoft user data, specifically

The same list for the other mailbox. Lucid asks Microsoft for Mail.Read, Mail.ReadWrite and Mail.Send to show, file and send your mail; Calendars.ReadWrite to show and edit your calendar; User.Read to know which account you connected; and offline_access so it can keep reading without asking you to sign in every hour. Two more are asked for separately and only if you say yes: Tasks.ReadWrite for Microsoft To Do, and Contacts.Read for contact photographs.

Apple iCloud, specifically

If you connect iCloud, Lucid reads your calendars and your contacts from Apple over CalDAV and CardDAV — caldav.icloud.com and contacts.icloud.com — and it does so read-only: there is no request anywhere in it that can create, change or delete anything in your iCloud account. It reads events from ninety days behind you to a year ahead. It skips your iCloud Reminders rather than folding them into Lucid's own tasks, and reports how many it skipped so that you can see it happened rather than wondering where they went.

It signs in with an app-specific password that you create at Apple and can revoke there at any moment without disturbing the rest of your account. Lucid stores that password sealed, never in the clear, and keeps three things beside it: which calendars and address books it found, the events and contact cards it read, and when it last looked. iCloud Mail is not read at all — Lucid's mail is a Microsoft and Google feature, and nothing in the iCloud connector opens a connection to it.

Instagram / Meta user data, specifically

If you connect Instagram, Lucid asks only for instagram_business_basic — enough to show your own recent posts back to you inside Feed. It never posts, comments or messages as you, and it never asks to. What is kept is a long-lived access token and your Instagram user id and username, so the connection can be renewed without asking you to sign in again every sixty days.

Meta requires every app built on its login to offer a way to have that data deleted on request. Disconnecting Instagram in Settings removes the token immediately. Meta can also trigger deletion directly — Lucid runs a Data Deletion Request Callback at /.netlify/functions/data-deletion-callback, verified by the signature Meta itself signs the request with, so nobody else can trigger it. It deletes the whole of the Lucid account the Instagram connection belongs to — not only what came from Instagram — using the exact same deletion described below, and hands back a confirmation code you can use to check that it happened.

Spotify

If you connect Spotify, Lucid reads what you are playing, what you played recently, your top artists and your playlists, and can control playback when you press a button inside Lucid. It keeps the access token and what it read. It never posts anything to your account and never changes your library.

Your bank, specifically

Lucid can show your balances and your recent transactions. It does this through SimpleFIN, a small read-only protocol: you subscribe to SimpleFIN's Bridge, connect your banks there, and hand Lucid a one-time setup token. Lucid exchanges that token once for a long-lived credential, and from then on only ever asks for account balances and transactions.

Nothing Lucid shows you about money is financial advice, and nothing it shows you about your body is medical advice. Both are your own records, arranged.

What you choose to share

Lucid can make a link to one board, one trip, one goal or the kitchen, so that somebody else can see it without signing in. A link exists only because you made it, it expires on a date you choose, you can revoke it at any time, and while it is alive anybody holding it can see what it points at. The same is true of the key that lets a screen on a wall show your day, and of any app you have connected to Lucid. All of them are listed in Settings and all of them can be revoked there — and revoking works even on an account locked for non-payment, because somebody who cannot shut a door they opened is being punished rather than billed.

Mail you send is watched for opens

Lucid can embed a tiny tracking image in mail you send through it, so it can tell you when the message is opened — the same mechanism most "read receipt" features use. This means Lucid records, about the person you wrote to, whether and when they opened your message, how many times, and a rough guess at their device and mail client, read off the request the image made — the same kind of thing any tracking pixel in any piece of marketing mail already does, made visible to you rather than to a stranger. It is not disclosed to the recipient, because there is currently no accepted way to disclose a tracking pixel to the person it is measuring — this is stated here as a fact about how it works, not as a feature being defended. It is never shared anywhere outside your own Lucid account, and a message you send outside Lucid — directly from Outlook or Gmail, say — carries none of it.

This feature records the behaviour of somebody who never agreed to anything, and whether it should exist at all is a legal question that has not been answered. It is the item on this page most in need of a lawyer, and it is first on the list at the foot.

What protects it

Every row carries the account that owns it, and every read Lucid's server makes is scoped to the account asking — which is checked by a harness that reads every query in the codebase and fails the build when one is not, rather than by trust. Row-level security is switched on in the database as well; what it stops is anything other than Lucid's own server reading a table at all, since the server holds a key that passes it. So the owner check in the code is the thing that keeps two accounts apart, and it is honest to say which of the two is doing the work. The bank credential is sealed under a key held outside the database. The vault can be locked behind your device's own Face ID or fingerprint, and the credential that unlocks it cannot be copied to another device. Wall keys, share links and pairing keys are stored only as hashes, so the database does not contain anything that could be presented as one of them. Four of the five file buckets are private: nothing comes out of them without Lucid's server checking whose account is asking, and where your browser is handed a link to a file at all it is signed for that one request and expires. The fifth, your signature image, is public, and the reason is above. None of that is a certification: no security assessment or compliance audit has been carried out on Lucid, and this page will say so until one has.

Your rights over it, and how to use them

These do not go through the owner and are not a favour to ask for. Both are buttons, both act on your own account and no other, and both are on your data page — reachable from Settings inside Lucid and directly at /erase.html. Both keep working in every billing state, including a locked one.

A few things are named on that page instead of being deleted, and they are named here for the same reason. The list of who is allowed to sign in to this installation is not your data to delete; neither is the registration of an app that connects to Lucid, nor the shared key this installation uses to send notifications. And the record of what you have paid — which plan, and the events behind it — is left in place, because in several jurisdictions the right to erasure does not override a duty to keep a financial record, and destroying one may not be ours to do. Nothing is written to those tables today, because there is no payment processing, which means the question is being settled while it still costs nobody anything. It is on the list at the foot of this page.

Two honest limits. Deletion leaves the sign-in itself in place and empty rather than removing the account outright — the data goes, the empty account remains, and the reasoning is written out in the comments of delete-everything.js in the source. And it does not, by itself, revoke the permission you granted at Microsoft, Google, Spotify, Instagram or SimpleFIN; that has to be removed from those accounts directly. Disconnecting an account in Settings removes its stored access token immediately and stops all reading from it, but that is reversal rather than deletion — the rows Lucid already holds stay until deletion is asked for separately.

For an Instagram connection specifically, Meta can trigger this deletion on your behalf without going through anybody at all — see above.

Children

Lucid is built for adults managing an adult life and is not directed at children. There is no age gate in it today. Whether one is required is on the list below.

If something goes wrong

If data held in Lucid is ever exposed or lost, the people affected will be told what happened, what was involved, and what is being done about it, without waiting to be asked. The statutory deadline and the regulator to be notified depend on where the controller is established, which is the blank above; the commitment to tell you does not.

If Lucid itself is not working, the status page says so.

Changes to this page

The date at the top changes when the page does. It is rewritten whenever the code and the description stop matching, which is the only way a page like this stays true — and the reason for every claim on it is written into the source of this file rather than kept somewhere nobody can check.

Contact

Write to support@lucid.invalid — placeholder, a real support address has not been chosen yet, or to [DATA CONTROLLER — TO BE NAMED] at the postal address given above. The terms of service sit beside this page.

Before this page is published — for the lawyer reading it

Everything above this line was written by reading Lucid's own source code and is meant to be true of the software as it stands. Everything below is a decision nobody has made. It is printed here rather than left in a file so that the review is an hour: what follows is the whole of it, and nothing else on the page is waiting on you. This section comes out when these are answered, and while it is here the page is not finished.

  1. The read-receipt tracking pixel, and this is the big one. It records whether, when and how often a person who never visited Lucid opened a message. It is described in full above. Whether it may ship at all, and on what terms, is the largest exposure in this application and it is not close.
  2. The controller. Who legally decides what happens to this data, and the registered postal address. Marked in yellow above, twice, and it is the one blank left in this page. It is the same decision the terms call the operator.
  3. Governing law and jurisdiction follow from that answer. They are stated in the terms against the same blank rather than guessed at here.
  4. The contact address. A real one, in place of the reserved placeholder. Setting LUCID_SUPPORT_EMAIL is enough for this page; the copy on the marketing site has to be edited by hand.
  5. A data protection officer, or an EU/UK representative — whether either is required, which turns on where the controller sits and who the customers are.
  6. The lawful basis for each kind of processing. The page says what is processed and why, in plain English. Naming the Article 6 basis for each, and the Article 9 position on the health, body and medicine data, is a judgement about a specific business.
  7. International transfers. Where the database, the server functions, the AI provider and the embedding provider physically run, and the mechanism covering each transfer.
  8. The breach-notification commitment. The intention is stated above in plain words; the regulator, the deadline and the exact wording are not.
  9. Children. There is no age gate. Whether one is needed is a question about who this is sold to.
  10. The companies named above are the ones the code calls — not a list of signed data processing agreements. Somebody has to sign those, and this list has to be kept current afterwards.
  11. Erasure against a duty to keep financial records. Deletion removes everything except the things named above. The record of what somebody paid is left in place, because destroying a financial record may not be ours to do. Nothing is written to it yet, so this is cheap to settle now and expensive later.
  12. The inferences, some of which are about other people. Lucid keeps what it has noticed about the customer, and separately what it has noticed about the people she writes to. The second is about somebody who never agreed to anything — the same family as item 1, far smaller, and worth looking at in the same sitting.
  13. The mail search index. Passages of a customer's mail — which contain other people's words as well as her own — are sent to a third party to be turned into numbers. That is disclosed above; whether disclosure is enough is not ours to decide.
  14. The public signature bucket. One of the five file buckets is world-readable by design, because the recipient's mail client has to fetch the image and cannot sign in. It is disclosed above. Whether a public object store holding a customer's own image needs anything more than disclosure — consent, a setting, an expiring proxy — is a judgement, and the engineering alternative (proxying the image through a signed redirect that never expires) is a day's work if the answer is yes.
  15. The copy on the customer's own device. Four thousand messages, including four hundred characters of each body, sit in the browser's storage and are deleted at sign-out. It is disclosed above. Two questions come with it: whether a shared or company-managed machine needs anything said about it beyond this page, and whether the customer should be able to switch it off. There is no switch today.
  16. The files are not in any backup. Database backups do not cover object storage, so the live bucket is the only copy of a customer's passport scan. It is disclosed above and the terms ask people to keep their own copies. Whether that is an adequate answer for a paid product that invites somebody to upload identity documents is a question about what is being promised, not about what the code does.
  17. The model provider. Background work and answers go to Anthropic only; a data processing agreement is needed with it, and the list on this page has to be kept in step with the configuration if another model is ever added.
  18. The typeface. These pages load Google Fonts, which passes the reader's address to a Google server. Embedding it has been litigated in at least one EU jurisdiction. Self-hosting the font files removes the question entirely and costs an afternoon.