The short version
- No Mochi account is required.
- Your temporary station profile expires after 90 days.
- A new browser may receive a visible, removable state-and-country suggestion inferred approximately from its network connection.
- Local music files stay in your current browser session and are not uploaded to Mochi.
- Mochi’s general product analytics contain fixed, aggregate events. When public-service listening counts are on, a separate 90-day table groups Spotify and YouTube plays by a random browser ID.
- You can delete the temporary server profile and its linked public-service play history with Reset saved settings on the station page.
What Mochi stores for 90 days
Mochi creates a random browser credential in a secure, HttpOnly, same-site cookie. It connects this browser to a temporary profile stored in Cloudflare D1. The profile contains your music-provider choice, entered or accepted approximate place, selected interests, bulletin timing and length, presenter style and voice, intro preference, and whether music pauses for a bulletin.
The profile does not contain your name, email address, music files, Spotify credentials, bulletin source links or pasted AI-profile text. When public-service listening counts are on, a separate table stores each started Spotify track or YouTube item with the same random browser ID, service identifier, title, artist or channel, count and latest-play time. This is pseudonymous browser listening history: it can group plays from one browser and can be joined to that browser’s temporary profile, but it does not establish who the person is. Each per-browser play row expires 90 days after its latest play; shared aggregate item totals remain after that link expires.
Approximate place suggestion
On a new browser, Cloudflare may infer a country and first-level region such as a state from the network request. Mochi uses only those two coarse fields to suggest a visible place. It does not request browser location permission, return network-derived city, postcode or coordinates, or use the suggestion as an exact weather location. The suggestion can be changed or removed before use.
What stays in this browser
Mochi also remembers some station settings in browser storage, including the last YouTube link and Spotify source. If you connect Spotify, the public Client ID for your own Spotify developer app and Spotify’s authorisation tokens remain in this browser. They are not added to the 90-day Mochi profile.
Reset saved settings removes those browser values, disconnects the players and deletes the temporary Mochi profile. Clearing a token from this browser does not revoke the underlying permission at Spotify; you can also remove your developer app from your Spotify account’s authorised-apps page.
What leaves your browser
- News briefings
- Your approximate entered place, selected interests, bulletin length and presenter style are sent through Mochi’s Worker to OpenAI to find current reporting and write the requested bulletin.
- Weather
- Your weather search and selected coordinates are sent to Open-Meteo for place search and forecast data.
- Spotify
- Sign-in, authorisation, catalogue search and playback use Spotify’s services. Mochi never needs your Spotify password or Client Secret.
- YouTube
- A pasted video or playlist plays through YouTube’s visible official player. YouTube may receive the usual player and browser information under its own policies.
- Voice
- Kokoro is downloaded through Mochi’s same-origin proxy. If you explicitly select the experimental Pocket TTS option, its pinned model files and WebAssembly runtime are downloaded directly from Hugging Face and jsDelivr. The May Low option additionally downloads a small frozen voice state from Mochi; it does not run voice cloning in your browser. Both engines generate speech in a separate worker in your browser, and Mochi does not upload bulletin text for speech synthesis.
Product analytics and issue logs
Mochi records a small fixed set of first-party aggregate events such as page views, music-source setup, playback starts and stops, coarse playback controls, bulletin outcomes, voice readiness, place-search outcome, profile-import outcome, coarse failure type and completed listening-session length. An event may include the chosen provider, manual or scheduled mode, bulletin type, or bulletin-length band.
When the Advanced setting for anonymous public-service listening counts is on, Mochi records a shared aggregate count after Spotify or YouTube content actually starts and a 90-day per-browser count using the random temporary-profile ID. The owner-only dashboard can therefore group public-service plays from the same browser. It does not store an IP address, account identity, source URL or local filename with a play. You can turn this setting off at any time; local files are never included.
To diagnose failures, Mochi keeps a private issue log for up to 30 days. It can contain a coarse issue type, error text, a scrubbed code stack, the page path without its query string, and the time. It does not store an IP address, browser user agent, listener or profile identifier, entered place, topics, music data, credentials, source links or bulletin content. Reports are rate-limited and the downloadable log is owner-only.
The general first-party Analytics Engine events do not include your location, topics, pasted profile, search terms, source URLs, credentials, music metadata or a persistent listener ID. The separate owner-only D1 views can show public-service plays grouped by the temporary browser ID and counts of entered places in active temporary profiles; those values are not copied into Analytics Engine.
Google Analytics 4 also measures normal site traffic using its own pseudonymous browser cookie and may derive approximate location and device information under Google’s policies. Mochi sends GA4 only coarse product events: provider, manual or scheduled bulletin mode, bulletin type and length, broad failure type, generic interaction action, and completed listening-session seconds. Mochi does not send GA4 track titles, artists, service identifiers, entered location, temporary-profile credential, listening choices, bulletin content, Spotify data or custom per-listener events.
Feedback and contact
If you use the feedback form, Mochi emails the message to its monitored Gmail inbox. Your reply address is optional. The form submission is not added to product analytics, the listener profile or Mochi’s D1 database. Cloudflare processes the request and applies a short-lived abuse limit; Gmail retains the resulting email under its normal account settings.
You can also write directly to hello@mochiradio.com. Do not send passwords, Spotify tokens or other secrets.
Delete and reset
On the station page, go to Set the dial and choose Reset saved settings. Mochi stops active playback, clears its saved station and provider values from this browser, deletes the linked server profile and per-browser public-service play rows, and expires its cookie. Shared aggregate song and video totals cannot identify that browser and remain. If the server deletion cannot be confirmed, Mochi says so and asks you to retry instead of claiming that it succeeded.
You can also clear all data for mochiradio.com in your browser. Mochi is currently an early MVP without accounts or profile export. For a privacy question or deletion request concerning a message you sent, use hello@mochiradio.com.