Privacy
This website
The site sets no cookies, runs no analytics and, until you open the invite form, loads nothing from other companies: its fonts and scripts come from this site. Nothing is stored on your device while you read it. The site is served by Cloudflare, which sees your address and the pages you ask for to deliver them and to turn away floods; this site keeps no logs of its own.
Only when you sign in to download, your sign-in is kept in your browser for that visit (session storage, gone when the tab closes), because the download needs it. Signing in sends your email and password to Google's Firebase Authentication, which checks them for us.
The Yami app
Yami runs on your computer. These stay there and are never sent to Yami or its maker: your chats and their history, your files and project folders, your keys and sign-ins, what Yami remembers about you and your projects, and your notes, drafts, routines, settings, token counts and code maps. Yami has no analytics, no crash reports and no ads, and sends nothing about how you use it.
How they are kept: the keys you give Yami, and its own sign-ins, are sealed (AES-256) with a key in a file that only your user account on this computer (and an administrator) can read; Yami does not use the system keychain. Claude Code, Codex and the built-in engine keep their own sign-ins in their own folders. A chat you put a password on has Yami's own copy of it encrypted. The engine that answered it keeps its own record of the session in its own folder (~/.dsh for the built-in engine, ~/.claude for Claude Code, ~/.codex for Codex), and pictures attached to the chat and canvas pages are not encrypted.
Things leave your computer only when you use them, and go only to the service in question, under that service's own terms and privacy policy:
- The engine you pick for a chat. What the agent needs for an answer (your message, the parts of files it reads, the results of its tools) is sent to that engine's model, as it would be without Yami: DeepSeek for the built-in engine (DSH), whose provider stores data in the People's Republic of China; Anthropic for Claude Code; OpenAI for Codex; or the service you add an API key for (OpenAI, Anthropic, DeepSeek, OpenRouter, or any OpenAI-compatible service). With your DeepSeek key, Yami also asks DeepSeek for your balance to show it. Claude Code and Codex run as the programs you installed and signed in to, with their own settings. A model running on your own computer (Ollama, LM Studio, llama.cpp) receives the chat instead, and nothing goes out for it; web pages and searches the agent asks for still do.
- What the built-in engine adds. DeepSeek's engine sends, with every request, a random ID for this installation and one for the chat. Yami makes the installation ID new each time it opens, so it cannot tie your days together. The session log and plugin list the engine would also send are turned off, as is its telemetry.
- The web. Pages an agent reads when it needs to; its web searches, which go to DuckDuckGo and Bing (and YouTube for videos); sites you open in the built-in browser; and pictures in a reply, which load from where they are once you press them (pictures from Bing, Wikimedia, Google image previews and YouTube show at once). A YouTube link on its own line shows its preview picture and title from YouTube; other links show a plain icon, and nothing is fetched for them. Words typed in the built-in browser's address bar are searched on Google.
- Add-ons and skills. An add-on (MCP server) you connect talks to its own service, signed in by you. Browsing the add-on store searches the public MCP Registry and shows the add-ons' icons from DuckDuckGo; browsing skills searches GitHub, and a skill you add is downloaded from there.
- Remote. Your phone and your computer connect over your own Tailscale network, through Tailscale's service, never at a public address. If you turn on notifications, they reach your phone through its own push service (Apple, Google, Mozilla or Microsoft), encrypted so that service cannot read them; it sees only that a notification was sent.
With a beta account, Yami asks the beta's server when it opens and every few hours whether the account is still in the beta, and whether there is a new version. New versions are only downloaded when you press Update. Each download of an installer or an update is recorded with your account's email, the file and the time, and the record is deleted after 180 days. To limit downloads, a count per account and day is kept for two days.
If you send feedback with the cat at the foot of the sidebar, what you write and the face you picked are stored with your account's email address so the owner can read them, together with Yami's version and your system's name (for example darwin 24.6.0, arm64) unless you untick that box. Feedback is kept for a year at most. Nothing else from the app is sent: no chats, files, keys or usage.
Where the beta's data is
Access requests, feedback and the download records are stored in Google Firebase in the EU (Finland). Sign-in goes through Google's Firebase Authentication, which Google runs in the United States; it keeps your account's email address, password (hashed) and when you last signed in. Google's servers also keep ordinary request logs, including your IP address, for up to 30 days.
The beta's server and the installers are reached through Cloudflare (Cloudflare, Inc., certified under the EU-U.S. Data Privacy Framework). It stores the installers in the EU, checks that a request comes from a beta account and is not one of too many from one address, and passes it on to Google; on the way it sees your IP address and what you send, including your sign-in token. Its own log names only the download link (an ID the beta's server records with your account), the file and when it was used, and is deleted within a week.
Early access
Asking for access sends your email address and the note you may add to the beta's server. They are used to decide on and send your invitation and nothing else, and are deleted when you are invited, or at the latest when the beta ends. Ask for them to be removed at any time and they are deleted.
To stop the form being flooded, the server counts how often it is used from one connection, with a keyed hash of the connection's address and the day: the key exists only in the server's memory, so the count cannot be turned back into the address. The counts are deleted within about three days.
The invite form also uses Cloudflare Turnstile to tell people from bots. Its script loads from Cloudflare only when you open the form, and runs a short check in your browser that looks at signals from the browser and the device (such as your IP address, browser and system details, and how the page is used), but not at what you type. Most people see nothing; sometimes it asks you to tick a box. Cloudflare uses this data only for the check, under its Turnstile privacy addendum.
The invitation is an email with a link to set your password. Our emails (the invitation, a short note that we got your request, and a link to set a new password when you ask for one) are sent from noreply@yamicode.app by Resend (Resend, Inc., certified under the EU-U.S. Data Privacy Framework), which receives your email address and the email to deliver it and keeps a record of the delivery for up to 30 days. The emails have no tracking pixels or tracked links. Signing in, on this site or in the app, sends your email and password to Google's Firebase Authentication, which checks them for us.
Your rights
You can ask what is kept about you, have it corrected, or have all of it deleted: your access request, feedback, download records and account. You can also complain to your data protection authority (in Finland, the Data Protection Ombudsman, tietosuoja.fi).
Who is responsible, and contact
Yami and this site are made by Tupe, a private person, as a free hobby project. Tupe is responsible for the data described here. For anything about your data, or to use any of the rights above, write to hello@yamicode.app.