Learn to code from the code AI writes for you
If an AI tool writes most of your project, the project can work while you still cannot say how. You find out when it breaks, when you need to change it, or when someone asks you to walk them through it. The way out is to read what it wrote, one small piece at a time, until you could have written it yourself.
Unvibe is not a code generator. It helps you understand the code you already have: pick New or Beginner and read your own project at your level.
A worked example
You ask a chatbot for a Python script that finds the most common words in a text file. It gives you this:
from collections import Counter
def top_words(path, n=5):
with open(path, encoding="utf-8") as f:
words = f.read().lower().split()
return Counter(words).most_common(n)
print(top_words("notes.txt"))The notes below are written by hand to show what is worth understanding in this script. They are not output from Unvibe.
from collections import CounterloadsCounterfrom Python's standard library, so there is nothing to install.n=5is a default value.top_words("notes.txt")returns five words;top_words("notes.txt", 10)returns ten.with open(...) as f:opens the file and closes it when the indented block ends, even if an error happens inside the block.f.read().lower().split()runs left to right: read the whole file into one string, make it lowercase, then split it on spaces, tabs and line breaks into a list of words.Counter(words).most_common(n)counts how often each word appears, then returns thenmost common as a list of (word, count) pairs, such as('the', 12).
Watch out: split() keeps punctuation, so done. and done count as two different words. The script runs without an error, so only reading it tells you.
How to learn from code AI wrote
None of these need an app.
- Ask for one small piece at a time. You can read a ten-line function in one sitting. You cannot read a whole app that way.
- Predict before you run. Write down what you expect the code to print, run it and compare. A wrong guess shows you exactly what to study.
- Change one thing and watch what happens: remove
.lower(), changen, point it at a file that does not exist. - Explain it back in your own words, as a comment above each line or out loud. The line you cannot explain is the one to look up.
- Look up each new name once in the official documentation (here,
Counterand thewithstatement) and keep a list of what you looked up. - Retype short pieces instead of pasting them. Typing makes you notice every symbol.
- Come back a few days later and explain it again without looking.
Doing it with Unvibe
- Select a function from your project, in your editor or in your browser.
- Press Control+U on a Mac or Ctrl+Alt+U on Windows. The panel opens beside your editor and the explanation streams in as it is written.
- Pick a depth. New, Beginner, Intermediate and Advanced are free; Expert is part of Pro. Switch any time and the same code is explained again at that depth.
- Type a follow-up under the explanation, such as “Why use with instead of calling open on its own?” The answer stays about the code you selected.
- Press Test me. It writes a question about this exact code, and up to three if you want more. Miss one and the lesson is saved to revisit later.
Lessons you keep are saved to your Library on your computer. The Today page sets a small daily goal: explain one piece of code and answer one question. On the Quiz page, pick a saved lesson and check what stayed with you, days after you first read it.
Yes. AI can be wrong even when it sounds sure. Each explanation sits next to the code it describes so you can check it, and Test me helps you spot what doesn't add up.
What leaves your computer
The code you select is sent to a cloud model to write the explanation. Only what you ask about: the selected code and its language, the file's path inside your project when Unvibe knows which file it came from (like src/lib/retry.ts), and the name of the project folder you last worked in with Unvibe. With Pro, some nearby code is added for context, and Briefs send the git changes you ask the AI to explain. Any question you type is sent too. Unvibe checks the code for keys and tokens on your computer first, and from version 0.1.44 your questions and Ask Vibe chat messages too. A known key stops the request. Your repo is never uploaded. If you add your own API key in Settings, the app sends the request straight to that provider instead.
Free and Pro
Free. 50 explanations in your first 30 days without signing in, then 50 explanations a month when you sign in. No card and no separate API key.
- Explain code you select in any app
- New, Beginner, Intermediate and Advanced depths
- Follow-ups and Test me
- Lessons saved to your Library
- Briefs of your Git changes, made on your computer
- “Why does this exist?” from your Git history
- Your code checked for keys and tokens on your device
Pro, $9 a month or $81 a year. One developer account. Your Free plan keeps working until then.
- Everything in Free
- Expert depth
- AI explanations of Git diffs and change Briefs
- Answers that use nearby files
- 200 AI explanations a month
Explain code beside your editor
Unvibe is a free app for Mac and Windows. In the app there is no pasting: select code in any app and press Control+U (Ctrl+Alt+U on Windows).
Install on Mac
curl -fsSL https://unvibe.site/install.sh | bashPaste into Terminal. Unvibe isn't notarized by Apple yet, so this is the smooth path.
Or download the .dmg · Intel Mac build · SHA-256 checksums
Opening the .dmg the first time
- Open the .dmg and drag Unvibe to Applications.
- Open it once; macOS says it can't verify it. Click Done.

Real screen, macOS 15 - System Settings › Privacy & Security › Open Anyway. Confirm, then enter your Mac password. The button shows for about an hour after you try to open Unvibe.

Real screen, macOS 15
The Terminal line checks the download against the published SHA-256 and Unvibe's self-signed signature before it installs anything. More help with the first open