Privacy
Last updated October 2026
Unvibe is a desktop app that helps you understand code. This page describes what it processes and why, in plain language. It reflects how the product actually behaves. It is a summary, not a substitute for the full policy.
What Unvibe processes
- Code you choose to review. When you activate Unvibe on a selection, that snippet and the limited surrounding context you approve is sent to generate an explanation. Before that code leaves your computer it is scanned on-device for secrets, and detected credentials block or warn first.
- Repository metadata such as file paths, structure, and git diffs, only when you explicitly review those scopes. Unvibe does not read your repository in the background.
- Learning records: which snippets you reviewed, comprehension results, concepts, and streaks.
- Account data: your email for sign-in and an authentication token.
- Feedback you send: your star rating and message, where it came from (the site or the app, with the page or app version), and your email only if you add it. Your IP address is used only in the server's memory, to stop repeated sends, and is not stored with your feedback. Each send is also counted as one PostHog event that carries only the star rating and where it came from, under a random ID that is new each time.
What Unvibe does not do
- It does not read your repository without an explicit action from you.
- It does not build its own model-training dataset from your private code.
- It does not log the contents of your private code in analytics.
- It does not perform screen recording, OCR capture, or keylogging.
Secret filtering, before code is sent
The code you select, the nearby code Pro adds to it, and the git changes in a Brief are scanned on your computer before they are sent: API keys, tokens, private keys, database URLs with passwords, password-style KEY= assignments, and high-entropy strings. A known credential blocks the request and shows you the rule and line so you can remove it. A string that only looks random is shown to you first, and nothing is sent unless you choose Send anyway. From version 0.1.44, follow-up questions, lesson questions and Chat messages are scanned too, and a Chat message or lesson question with any finding is not sent. Version 0.1.43 and older do not scan what you type, so keep keys out of it there. There is no file exclusion list: a file you select or open is sent once it passes the scan. In a Brief, untracked files that .gitignore covers are left out, because the app asks git only for files it does not ignore.
Consent and the cloud
Explanations are generated by a configured cloud AI provider, so the filtered snippet you approve is sent over an encrypted connection. Cloud analysis begins only after an explicit review action. During the beta, explanations are generated by the Google Gemini API, and Google's Gemini API terms decide how Google may use that content. If you add your own provider key in the app (Gemini, Anthropic, OpenAI, Grok, DeepSeek or Kimi), requests go to that provider under its terms instead. Full payload preview and per-repository controls are still being completed. A fully local, no-cloud mode is not available yet.
Storage, security, and your rights
Learning data lives on your computer and, when you are signed in, syncs to our backend where row-level security is designed to restrict direct reads to your account. Your auth token is encrypted at rest using the operating system keychain, and data is encrypted in transit. Backend at-rest and backup settings must be verified for the selected staging/production infrastructure. You can access and delete your data. See data controls and account deletion. We use no advertising trackers.
Without an account, the app sends a random install ID with each cloud explanation and with the usage check it makes when it starts, so we can count your free explanations. From version 0.1.44 it also sends your computer's system (Mac or Windows) and the app version. We store, under a hashed form of that ID: when the app first started, the system and the version it started on (from 0.1.44, stored once and never updated), how many explanations it has used, and when it first explained the setup sample, first explained your own code, and first explained code again on a later day of its first week. We do not store your code or prompts with it. Signed in, explanations carry your sign-in token instead of the install ID.
From version 0.1.44, the app also sends anonymous setup progress, one message per step the first time it happens: setup finished, Accessibility asked for and allowed (Mac only), signed in, the explanation level question answered, and the question about opening Unvibe when you log in shown and answered yes. Each message carries the step name with the same random install ID, system and app version as above, never your sign-in token. We keep only the step and the time it arrived (for signing in, only the day), never your code, file names, email or IP address. A step that does not get through is sent again on a later launch. To turn this off, open Settings, then Privacy & Data, and switch off Send anonymous setup progress. That switch does not cover the install ID, dates and counts in the paragraph above, which come with requests the app makes anyway.
If you redeem a promo code at /redeem, we keep a redemption record: a fingerprint of the code (not the code itself), your account and its email, the months of Pro it added, and the dates (when you redeemed it, your Pro end date before and after, and when the code was switched off, if it was). We keep it while your account exists. If you delete your account, the record stays so the code still counts as used, but the link to your account and the email are removed.
This website
unvibe.site uses Mixpanel and PostHog to understand how visitors use the site, including page views, clicks, and session replays. Both receive your IP address with each event and use it to estimate a rough location. Replays hide all page text and everything typed into forms. Emails, tokens, and codes (such as invite and sign-in codes) are removed from page addresses before they are sent. Admin pages and private stats links start no analytics; if you open one from another page on the site, replay recording stops, no analytics events from that page are sent, and the page's content is left out of any replay. Automated browsers send no analytics, and neither does a browser where you have opened any page with ?notrack=1 added to the address; ?notrack=0 turns analytics back on. We use this to fix confusing pages, not to sell or share your data. The desktop app does not send this kind of analytics. If you join a list or request a download email, we store your name and email to contact you about Unvibe. The install scripts send one anonymous 'installed' count to unvibe.site when they finish, with no code or personal data. If you use the Try it box on the site, the code you paste is sent to Unvibe's server, which refuses common key formats, and then to Google Gemini to write the explanation. To limit how often the box can be used, Unvibe keeps the time of each request and a hash of your IP address, not the code. Since 26 October 2026 that hash is keyed with a server secret, so it can't be matched to an address without that secret; requests from before then kept a plain hash, which is weaker.
Services we rely on
- Google Gemini generates explanations. In the app, it gets the snippet you approve after it is filtered on your computer. In the website's Try it box, it gets the code you paste after Unvibe's server checks it and refuses common key formats; nothing is filtered in your browser.
- Vercel hosts the website and API.
- Supabase stores accounts and synced learning records.
- Stripe processes payments. Unvibe never sees your full card number. When you delete your Unvibe account, Stripe keeps its own customer and payment records, as tax and fraud-prevention laws require.
- Resend delivers sign-in and product emails.
- GitHub hosts the installer downloads.
- Mixpanel and PostHog measure website usage.
Children
Unvibe is not directed at children under 13, and we do not knowingly collect their personal information. If you believe a child has given us data, email us and we will delete it.
Changes and contact
We will update this page when the product changes how it handles data, and note the date at the top. Questions or requests go to support@unvibe.site.
Platforms and scope
The Unvibe beta runs on Mac (Apple silicon and Intel) and Windows x64. Linux is not available yet. We claim no security certifications. Explanations are a learning aid, not a security audit. See the terms for the AI limitations disclaimer.