Privacy
This page is what the corein apps (the phone, the web and desktop apps, the dsh plugin) and corein Cloud do with your data. It is short because they do little with it. Where it matters, the one thing you decide is a switch: Settings → Data controls.
Everything stays on your device
The agent runs inside the app: on the phone, in a Linux root file system in the app's private storage; on a computer, in the runtime you installed. Conversations, memory, files the agent writes, scheduled tasks, skills and settings are stored there and, where you mount them, in folders you chose. There is no analytics, no crash reporting to us and no telemetry of any kind. The only corein server is the optional relay described below, and the apps work fully without it.
What leaves the device
- Your model provider. Messages, attached images and tool results are sent to the model endpoint you configured (Alibaba Cloud Bailian, DeepSeek, OpenAI, OpenRouter, your own vLLM or Ollama, …), under that provider's terms, with the API key you entered. The key is stored on your device only.
- corein Cloud, if you signed in. Sign in (free) on the first screen (or Settings → corein Cloud) signs you up with a phone number or an e-mail address and a code, and the app then uses our relay as a model provider: free, ¥10 of model use per account (community members: no limit; each new person who signs up with your invite code and makes a first request adds ¥5 to your allowance and ¥5 to theirs), paid by the developer; corein is a non-profit community project and never charges. The relay forwards your messages to the model (Alibaba Cloud Model Studio). What it keeps about the account: a salted hash of your address, the address itself encrypted so the person running the relay can see whose account it is (the database file alone shows nothing), a masked hint such as
s***@example.com, the hash of the key issued to this device, the kind, model and token count of each request, your invite code with the ids of accounts that used it, and, so your devices wear the same one, the agent's name and look (which face; for one drawn in the avatar studio, its five small pictures). With each sign-in, request, timeline event and device it also records the network address the request came from and the client software (theUser-Agent: the Android app and its version, the runtime on Windows, macOS or Linux, a browser), and the account keeps its first and last address and when it was last seen; the person running the relay sees these on the operator's page, per account and per address, to tell one person on two accounts from two people on one address and to see a problem's shape. What it keeps of the conversations themselves is governed by two switches, described next. It does not receive your location: the apps never send it. Next to an address, the operator's page shows the country, province and city that address belongs to, read from an offline copy of ip2region's public database on the relay's own disk when the page is drawn; no third party is asked and the place is not stored. Signing out revokes the key; deleting the account removes all of it, addresses included. The relay's source is in the repository undercloud/, and docs/cloud.md says how to run your own. Nothing about the relay applies when you use your own key. - The project site (fomo.corein.in), if you visit it. Its web server keeps an access log for seven days and then deletes it; a script turns it into counts per day: pages viewed, how many visitors, downloads per file, which sites linked here. A visitor is counted once a day through a hash of the address and browser string under a random salt made for that day and discarded after two; no address is stored beyond the week the raw log lives, nothing is shared with anyone, there are no cookies and no third-party analytics. The relay's own operator page shows counts of sign-ins and accounts per day, from the same records described above; nothing more is collected for it.
- The showcase (demo.fomo.corein.in), if you try it. The page sets no cookie and its web server keeps no access log. Starting a Muse there means signing in to corein Cloud first, through the showcase's gateway: the relay records that sign-in as described above, with your address, which the gateway passes on. The gateway's own database then keeps, per account: the account's id, the relay's masked hint, whether it was a phone number or an e-mail address, how many times you signed in, and the address and browser string of your first and your latest sign-in or demo; and one row per demo started: when, from which address, with which browser, whether you brought your own key, how it ended, and how many model calls, tokens, pictures and clips it used. Your browser holds a sign-in ticket good for thirty days; the gateway stores its hash. What you say to the Muse goes through the gateway to the model the operator configured (Alibaba Cloud Model Studio on the public showcase); the gateway counts calls and tokens and keeps no message content, and a key of your own lives in its memory for that session only and is never written down. The Muse runs in a container made for your session and removed with it, and everything in it, after thirty minutes or ten quiet ones; your browser's time zone name travels with the start so the Muse's clock is yours, and is not kept. The gateway's log names sessions by id and visitors by the masked hint, never by address, and Docker keeps at most 100 MB of it. The account and demo rows stay until the operator deletes them; there is no automatic deletion. The person running the relay sees them on its operator page, beside the account. The source is under
demo/showcase/in the repository, and its README says what each limit is. - Data controls: "Help improve corein's AI models". Settings → Data controls on every app holds one switch. While it is on, the relay keeps the text of your chats with the corein Cloud models to train the community's own open model: what you wrote, what the model answered, and the tool calls it chose, together with the model, the token counts, and the app's platform and language from the request headers. It does not keep the system prompt (your memory, SOUL and instructions), what tools returned, pictures, audio or clips (those are replaced by a marker), and the turns are tied to your account id only; exports for training carry no account id, address or hint. On
cloud.fomo.corein.inthe switch is on for accounts created from relay 0.9 on; accounts that existed before keep whatever they had chosen. The switch says so right next to it, and a relay you run yourself chooses withIMPROVE_DEFAULT. Turn it off at any time (nothing more is kept from then on), delete everything kept so far with one tap on the same page, and deleting the account deletes it too. Nothing about the allowance depends on this switch. - Synced conversations: on by default when you are signed in (relay 0.19 on). The text of your conversations is stored on corein Cloud so every device of your account shows the same chats. Files and images are not uploaded. Settings → Data controls turns it off and deletes what is stored; deleting a chat on one device deletes it on all of them. Nobody but your devices can read it; the operator sees counts, not text. (What is stored, exactly: each conversation's title and which device started it, each message's role, text, time and device, and the names and sizes of attached files; never the files, never a picture, never what a tool returned. Chats addressed to another device, or run on this one for another, are not synced. The relay keeps at most 20 000 messages per account and cuts a message at 16 KB. docs/cloud.md has the details.) Since 0.1.38 only the main conversation is synced by default: side chats stay on the device that made them, and other devices' side chats do not arrive, unless you turn on Also sync side chats on that device. While one of your devices is answering, the others are told so (kwai is working…); that note goes through the relay's memory, is never stored, and is forgotten after ten minutes.
- The web, when the agent uses it. Web search, page fetches, the in-app browser, MCP servers and command-line tools reach the sites and services they are for. What the agent sends is what you asked it to do.
- Update check. Phones, the standalone harness and older desktop shells ask the project's download index at
fomo.corein.in/dl/index.json, then the GitHub API when it does not answer. A runtime you run yourself (nanomuse serve, Docker) checks once a day;server.update_check = falsestops that check. The Windows x64 desktop app checks Windows update metadata after startup and every six hours, first on the download mirror and then on GitHub, with a manual refresh in Settings. Its update library sends a random local staging identifier with metadata requests, and theUser-Agentnames the app and its version. Automatic downloads are on by default and can be switched off in Settings. Windows' network cost is read locally; metered or unknown connections wait for a manual download, and this classification is not sent to the update sources. No conversations, account credentials or settings are sent to the update sources. - Backups. If you back up to a remote destination (SMB, WebDAV, SFTP, S3, FTP), the backup goes there, encrypted with the password you chose.
Permissions
Each permission is asked for when a feature needs it and is used for that feature only: notifications for the agent's status and reminders; accessibility for operating other apps' screens, which is off until you turn it on; storage folders you mount; the microphone for voice input; contacts, calendar and location for the tools of the same names, each callable only after you granted them. Nothing is read in the background.
What the agent may do without asking
Before anything it cannot take back (deleting your files, sending a message or data out, paying), the agent stops and a card asks you, in the shell, in the browser and on the phone's screen alike. What you may remember from that card comes in three tiers, and Settings → Permissions → Remembered approvals lists everything you remembered, grouped the same way, one line each, tap to revoke:
- Runs, then tells you: installing software. Never asks; the agent says so afterwards.
- Asks first; you may remember it: deleting and sending. Allow for this chat or Always allow for X (one folder, one recipient, one site or app).
- Highest: asks at the moment of paying, every time: buying, ordering, booking, trading, transferring. There is no "for this chat". Remember and run next time in X exists, for one app or site only, and asks for your screen lock (fingerprint, face, PIN) before it takes; it is listed first on the permissions page, and every payment that runs on it is said out loud in the chat.
Passwords, verification codes and card numbers are never typed by the agent; those screens are handed to you. Anything alarming in a command (wiping a disk, force-pushing history, a download piped into a shell) is asked about every time and cannot be remembered. Shopping and trading are fine when you asked for exactly that; nothing unlawful or harmful is done, however it is worded; the agent refuses and says why.
Feedback
Bug reports go to GitHub Issues from Settings → Feedback; the report is pre-filled with the app version and the device model and nothing else. Do not paste API keys or private conversations into an issue.
Changes
This page changes when the apps' behaviour changes; the history is in the repository. The same text is at fomo.corein.in/privacy, in English and Chinese.
