The short version
Seba is anonymous by default. You can read the public library, ask Sebastian, and use the dream room without giving us your name, email, phone number, or payment details. We do not render your name, photograph, or email anywhere in the public interface. We do not sell data. We do not run third-party trackers or advertising pixels. The site works without sign-in.
Without sign-in, Seba can still keep browser-level continuity: conversations and saved items are tied to a randomly generated identifier stored in your browser. Sebastian’s private rolling memory starts when you sign in. Google sign-in links your records to your account so they follow you across devices. Optional donations, newsletter signup, feedback, or support emails collect only the information needed to handle that specific request.
What we store on the server
These categories may live on the Seba server, keyed either by the browser identifier on this device or by your account if you sign in.
Chat threads. Your conversations with Sebastian — the messages, the order they were sent, and timestamps. So you can come back on the same browser and pick up where you left off.
Saved readings and notes. Dream interpretations, tarot / I Ching / astrology readings you saved, and any Sebastian responses you bookmarked. Without sign-in, these are primarily device-local. When you sign in, they can sync to your profile.
Profile memory for signed-in readers. A short prose summary Sebastian writes about you over time, so the next conversation is not a cold start. It draws on your signed-in conversations across the site — chat with Sebastian and the experience flows (dream, tarot, astrology, and I Ching readings) can all contribute to it. It is short by design, lives in your profile record only, and is not created for signed-out readers.
Anonymous dream-theme counts. We keep anonymous daily counts of common dream themes (like teeth or water) to understand what themes people bring — never the words of a dream, and never tied to a person or account.
The memory records themselves do not store your IP address, and they are not visible to other users. Separate service logs (described below under “What we collect”) may use a short-lived IP-based key for rate limiting and reliability. We do not sell or share any of this.
What we collect
Analytics. We run a self-hosted instance of Umami to understand how pages perform. It records page URL, referrer, screen size, browser, and country — nothing that identifies you personally. It does not set cookies. It does not log your IP address in identifiable form. When you answer “Was this reading helpful?” under a dream reading, Umami counts your answer and the reading’s length anonymously, along with the visit’s source labels (see “Campaign attribution” below); the page address and the referring address are sent cut to their paths, and nothing of your dream is sent.
Campaign attribution. When a campaign link brings you to Seba, your browser may keep a bounded first-touch record for up to 30 days so we can understand whether that visit later led to a reading, saved item, membership, or donation. The record contains only allowlisted campaign labels and the landing-page path. It never contains your dream, question, reading, full URL, query string, or referrer string, and it stays in your browser’s local storage.
Sign-in (optional). If you sign in with Google, we receive your Google account identifier, email, display name, and profile-photo URL from Google’s sign-in service. We use the identifier to link your records to your account so they follow you across devices. We do not render your name, photograph, or email anywhere in the public interface. We do not email you directly without your opt-in through the newsletter form.
Signing in to the Seba Dreams app (optional). The Seba Dreams app for iPhone and iPad signs in with Apple, with Google, or with a code we email you. With Apple or Google, Seba receives only your email address and the account number Apple or Google uses for you. If you sign in with Apple, the address may be a private relay address that Apple forwards to your inbox. Seba keeps no password and no Google or Apple token. When you sign in on your iPhone or iPad, the app keeps a sign-in token in that device’s Keychain.
AI processing. When you ask Sebastian a question or use an experience, the text you write and the context needed to answer it — including selected library passages — are processed by third-party AI providers to generate the response, subject to those providers’ API data-use terms. Depending on the feature, Seba uses or has used DeepSeek, Anthropic (Claude), OpenAI, Voyage AI, Cloudflare Workers AI, and DeepInfra.
Voice dictation (when offered). If you tap the microphone in Sebastian, the audio is processed by Cloudflare Workers AI using a speech-to-text model. Seba does not save the recording. The resulting transcript is placed into the text box for you to review and edit; it is not sent to Sebastian or saved as part of a conversation unless you press Send.
Spoken answers (when offered). If you tap Listen beneath a completed answer, the visible answer text is sent to DeepInfra’s Kokoro text-to-speech service. Free visitors may receive a limited listening sample; membership raises the listening allowance. Seba does not send your name, email, member credential, source packet, or conversation history with the text. Generated audio is not stored on Seba’s servers; your browser may keep a private local copy so replaying the same answer does not generate it again.
Seba measures the free listening sample with a one-way digest of the anonymous browser identifier for about one year. A short-lived one-way digest of the network address limits repeated resets; the raw address is not stored in the speech counter. These counters contain character totals and dates, not answer text or audio. Anonymous analytics may record that a sample started or finished, or that a membership link was opened, without recording what was read.
Seba does not attach your account name, email, or other profile identity to these requests. Anything you include in the text itself, however, is sent as part of the request. No account, name, or email is required to use Seba. On Seba’s side, activity is associated with an anonymous identifier stored in your browser. Dream text is not stored on our servers unless you choose to save a reading. Chat conversations are kept under the anonymous identifier so you can return to them on the same browser; you can delete them or ask us to delete them. If you sign in, your saved items and conversations are linked to your profile instead.
We are building a local-processing option so this work can run on infrastructure we operate rather than third-party AI services. Check back here for updates. Section updated August 2026.
Newsletter (optional). If you subscribe to our newsletter, we store your email address with our email provider so we can send you occasional dispatches. You can unsubscribe at any time from any email we send.
Donations (optional). Donations are handled by
Stripe. Seba does not see or store your card number. To recognize
supporters and suppress donation nudges, the site may send Stripe
the anonymous browser identifier stored under
seba.anon_uuid, then store a supporter flag keyed to
that identifier and, when available, a short-lived IP-based key.
Seba also stores a Stripe Checkout Session reference for
reconciliation. These supporter records are kept for about one year.
Your card statement should show SEBA.HEALTH or similar,
depending on your bank.
Estate membership (optional). Membership checkout, recurring billing, and the manage-or-cancel portal are hosted by Stripe. Seba stores an opaque member key, your anonymous Seba profile identifier, the Stripe subscription and customer references needed to recognize access and open that portal, and the membership start date. Seba does not store your card number or copy Stripe’s billing identity into the estate ledger. Stripe retains the billing records required to operate the subscription.
Dream-reading credits (optional, when offered). One-off credit checkout is hosted by Stripe. Seba sends an opaque browser identifier, then stores the verified Checkout Session marker and credit balance against that browser identifier and, when available, a short-lived IP-based key. Credits expire after about ninety days. Seba does not store your card number or copy Stripe’s billing identity into the credit record.
Feedback / Report a problem. If you use the “Report a problem” form on /profile or the site-wide feedback banner, we store the message you wrote, the optional contact email if you provided one, the page URL you were on, your browser’s user agent, and your profile identifier if one is present in your browser. We use this to debug the problem and to reply to you if you left an email. Reports are stored in our support queue and may be forwarded to our team’s inbox; we do not share them.
Service logs. When you ask Sebastian or use any of the public AI endpoints (chat, dream, tarot, I Ching, astrology, matchmaker), the backend may store a short request label or, on the public Oracle / search service, query text; a timestamp; an anonymous browser identifier when available; response-status or compact error information; and duration / cost metadata. The dream room does not put the words of your dream into these service logs. Separate rate-limiting and reliability controls may temporarily use a short-lived IP-based key. We use these records for rate limiting, abuse prevention, debugging, and keeping the service reliable. Service logs are kept separate from your profile memory; they are not used to enrich Sebastian’s memory of you, and your profile memory does not contain an IP-based key.
On-device storage. Your browser stores a session
token (if you signed in), your reading palette preference, and an
anonymous identifier under the key seba.anon_uuid.
That identifier is the only thing that lets your browser retrieve
browser-linked chat threads and saved items from the server.
For a reading in progress, the browser keeps a copy of it in the
tab, so a refresh does not erase it. For your current dream reading
it also keeps a device-local recovery copy, so a phone that drops
the page does not erase the intake or a reading that finished while
the phone was asleep. The tab’s copy lasts as long as the
tab; the device-local copy is shown only within four hours of the
last time the page kept it. The page keeps it afresh each time the
reading changes and each time it brings the reading back (a
refresh, or opening the Dream room again), so its four hours start
again then. Each copy records whose dream it is. A dream begun while
you are signed in is yours under that sign-in: its device-local copy
also holds your conversation with Sebastian about the dream, and its
copies are shown again only during that same sign-in on this
browser; after a sign-out, or another sign-in on this browser, they
are not shown again, even to the same account, and they are removed.
A dream begun as a guest stays a guest’s dream whoever signs
in afterwards, in that tab or another: its conversation with
Sebastian is kept in the tab only and goes with the tab, and no
sign-in moves any of it under an account. A guest’s copies,
and copies kept by the site before it recorded whose copies were,
are treated as they always have been: as the copies of whoever has
the page. On a shared browser, the next person to use that tab, or
to open the Dream room there within the device-local copy’s
four hours, can see them. Nothing removes a device-local copy at the
moment its four hours end: an expired copy, or one made under a
sign-in that is no longer the current one, is removed the next time
the page that keeps it loads. Copies are also removed when you start
over or sign out (signing out removes every device-local copy and
the copies in the tab you sign out in, and may remove those of
another open tab that notices it), and when you clear browser
storage; after a sign-out or a change of account, another open tab
of this browser removes its copy of a dream begun under the sign-in
that ended as soon as it notices, and a tab that is not open on that
page removes it the next time the page loads there. So that only one
tab at a time carries a signed-in reader’s dream on, the tab
doing so also keeps a short note on this device, with none of the
dream in it, that it renews every few seconds; the note is removed
when that tab closes, or by a later visit once it has gone a minute
without being renewed. A save that finishes after another tab has
taken the dream on leaves a note with the time, so that tab sends it
again. When the tab carrying the dream on starts over, it leaves a
note on this device holding the dream’s random identifier and
the time, none of its words, so that another tab still showing the
dream does not carry it on; a later visit removes it once a day has
passed. Signing out removes all of these notes. A guest’s
dream has none of them: each of its tabs goes on by itself. A dream
you saved keeps, on this device, a one-way tag of the last version
your account confirmed, so that opening it again does not send it
again. A saved dream begun while you were signed in keeps up with
your conversation about it as the conversation goes on; any other
saved dream changes only when you save it again. If this device
cannot keep a save (its storage is full), the save is still sent to
your account when you are signed in, and the page says that this
device’s copy could not be kept.
In a conversation with Sebastian, words you have typed but not yet
sent are kept only while you are signed in, so a reload of that tab
does not erase them: on this device, one copy for each tab (a
duplicated tab gets its own), shown only in that tab and only during
that sign-in. A guest’s unsent words are not kept, and words
typed as a guest are not kept after a sign-in either. A copy keeps
the first 40,000 characters, and the page says so when it had to
shorten one. A copy is removed when you send its words, empty the
box or start a new conversation, when you sign out, and, once four
hours have passed since its last change, the next time a
conversation with Sebastian is opened in this browser while you are
signed in.
Clearing your browser storage removes the identifier;
the server-side records remain but become unreachable from that
browser. To remove them, see “How to delete your data” below.
How long we keep data
Profile memory, saved readings, notes, and browser-linked threads remain until you delete them or ask us to delete them, because their purpose is continuity. Service logs are shorter lived: usage events and public Oracle query logs are purged after about 90 days; expired sessions and magic sign-in links are purged after about 30 days; forwarded feedback reports are purged after about 12 months. Donation/supporter records are kept for about one year, as described above. Dream-reading credit balances and their redemption markers expire after about ninety days. Aggregate daily-cost rows are not personal records.
Practitioner interview submissions are kept for editorial review and removed when a correction/removal request requires it; public directory pages are handled through the directory correction and removal process.
What we don’t collect
No advertising cookies. No fingerprinting. No session recording. No third-party analytics (Google Analytics, Facebook Pixel, etc.). No sale of data to any party.
How to delete your data
Anonymous visitors. Your records on the server
are keyed only by an opaque identifier — we have no way to
look you up by name or email. To request deletion, email
cody@seba.health and include
your identifier. You can find it in your browser’s devtools
under localStorage, the key seba.anon_uuid. We will
delete every record under that identifier.
Signed-in accounts. Email cody@seba.health from the address you signed up with and we will delete the account and all associated records.
In the Seba Dreams app. Account > Delete account deletes your account on Seba’s servers. If your account uses Sign in with Apple, it also asks Apple to disconnect Seba.
Payment, supporter, and reading-credit records. If you donated or purchased a reading credit and want the associated records removed, include the browser identifier and, if you have it, the Stripe receipt or Checkout Session reference. Records linked to the browser identifier can be removed. IP-keyed marks are only removable when the exact key is identifiable; otherwise they expire automatically.
Newsletter. Use the unsubscribe link in any email we send.
Clearing your browser’s site storage for seba.health removes the identifier from this device but does not delete the server-side records on its own — without the identifier we can’t find them to delete them. If you want them gone, send the identifier first.
Contact
Seba is operated by 702 Alliance LLC, doing business as Seba Health. Questions about privacy go to cody@seba.health. We respond to privacy and deletion requests within 30 days.