Free
Join the beta and use the core learning loop without a subscription.
$0to start
- 50 AI explanations each month
- Study, progress, snippets, and notebook
- Comprehension checks do not use your allowance
Select any code, choose your depth, and learn what it does without leaving your workflow.
Mac first · Early beta · No credit card
Designed to work beside the tools and languages you already use
The gap
AI closes tickets fast. But merged code you cannot explain becomes tomorrow's mystery bug. Unvibe turns the diff you accepted into something you actually know.
1export async function getCart(userId: string) {2 const key = `cart:${userId}`;3 const cached = await redis.get(key);4 if (cached) return JSON.parse(cached);5 const cart = await db.cart.find(userId);6 await redis.set(key, JSON.stringify(cart), "EX", 60);7 return cart;8}cart:${userId}Namespaced cache key so each user's cart is stored separately.
if (cached) return ...Cache hit: skips the database entirely and returns early.
"EX", 60The cache expires after 60 seconds, so stale carts self-correct.
See the whole loop
Step through the exact flow — select code, choose a depth, read the explanation, and prove you understood it. Drive it manually, or let it play.
1function debounce<T extends (...args: any[]) => void>(2 fn: T,3 wait = 3004) {5 let timer: ReturnType<typeof setTimeout> | null = null;6 return (...args: Parameters<T>) => {7 if (timer) clearTimeout(timer);8 timer = setTimeout(() => fn(...args), wait);9 };10}Select the debounce helper and trigger Unvibe with a keystroke.
One snippet, five depths
Drag the depth from New to Expert and watch the explanation change. Nothing about the code moves — only how much it assumes you already know.
1function debounce<T extends (...args: any[]) => void>(2 fn: T,3 wait = 3004) {5 let timer: ReturnType<typeof setTimeout> | null = null;6 return (...args: Parameters<T>) => {7 if (timer) clearTimeout(timer);8 timer = setTimeout(() => fn(...args), wait);9 };10}debounce takes your function and returns a new version of it. Every time you call the new version it resets a countdown. Only when the countdown finishes without interruption does your original function actually run.
Unvibe follows the context
Move from the selected expression to the function, file, dependency, change, project, and concept worth learning next. Each step answers one useful question.
What this expression does
The early return ends this function before the database query below can run.
1 of 7 · Choose any context level
Try it yourself
This is the same kind of question Unvibe asks after an explanation. Read the code, pick an answer, and see how it reads a correct or missed response.
function debounce<T extends (...args: any[]) => void>( fn: T, wait = 300) { let timer: ReturnType<typeof setTimeout> | null = null; return (...args: Parameters<T>) => { if (timer) clearTimeout(timer); timer = setTimeout(() => fn(...args), wait); };}If you call the debounced function five times in quick succession within the wait window, how many times does fn run?
Unvibe is not another course catalog. It turns the code you already wrote — or your agent wrote — into explanations, checks, and a knowledge trail.
Privacy
You decide what to review. Before a request leaves your Mac, Unvibe scans the selection for common secrets.
API keys, tokens, and private keys are detected before anything is sent, and a hit blocks the request.
Unvibe starts from the selection you ask it to explain. It does not record your screen or read code in the background.
The product sends review context, not an entire repository. Read the policy for the exact current limits and controls.
Sent
Blocked
Exact behavior and current limitations are documented in the privacy policy.
Your progress, saved material, comprehension checks, and teaching tools never consume an allowance. Only cloud-generated explanations are metered.
Join the beta and use the core learning loop without a subscription.
$0to start
For an individual who wants more room for focused explanations.
$12/ person / month
For teams that want individual learning with a shared path forward.
$8/ person / month
Free mode does not require a Pro subscription. Paid plans are shown for clarity while billing and team administration are still being prepared for launch.
Private beta
Mac first. We’ll email you when an invite is ready.
FAQ
What Unvibe does, what it does not, and how it treats your code — no hedging.
Unvibe is a desktop AI learning layer for code. It lives beside your editor: select code, choose a depth, and get an explanation that stays open while you work. It also helps you save notes, track concepts, and turn real projects into study material. It is not a course platform or another chat window.
Join the private beta for a quieter way to understand the code you ship. We'll email you when a Mac invite is ready.
Mac first · Windows planned · No credit card during private beta