API keys
The app has two sources of keys:- The server key is used only on the server and is never sent to the browser.
- The user key is sent to the app server with each request in an
Authorization: Bearerheader. The server forwards it to the model provider and doesn’t store it. - When a request has both a user key and a server key, the user key takes priority.
- The sentence of the day is generated with the server key only.
Where your content goes
Every request goes through the app server first and is then forwarded to the recipient. The app server doesn’t persist original text, images, translations, or chats.
Data stored in your browser
The following data is stored only in the visitor’s browser local storage and is never uploaded to the server:- The 50 most recently analyzed texts
- Today’s sentence of the day
- Model, language, theme, and text-to-speech preferences
- API keys the user entered
Umami analytics
The app loads Umami only when bothNEXT_PUBLIC_UMAMI_SRC and NEXT_PUBLIC_UMAMI_WEBSITE_ID are configured. When enabled, analytics records only whether a feature was used, which provider and model were used, whether it succeeded or failed, and how long it took.
Recorded events
Each event carries only metadata such as the provider, the model name, and the output mode (streaming or all at once).
error_category takes only one of these values: timeout, auth, rate_limit, server, request, invalid_response, network, or unknown.
What is never recorded
- Input text, images, and text extracted from images
- Vocabulary, definitions, and translations
- Chat content
- Raw error messages
- API keys
Access password
When you setCODE, only visitors who enter the correct password can call the model endpoints. The session cookie is HttpOnly and valid for 7 days. For details, see Configuration.