It forgets your patterns, repeats code, and breaks what worked. VibeDrift catches the drift before it spreads.
Agent quality over sessions
With VibeDriftWithout
Plays nice with
Claude CodeCursorGitHub CopilotWindsurfAntigravityOpenAI CodexKiroAny MCP clientClaude CodeCursorGitHub CopilotWindsurfAntigravityOpenAI CodexKiroAny MCP clientClaude CodeCursorGitHub CopilotWindsurfAntigravityOpenAI CodexKiroAny MCP clientClaude CodeCursorGitHub CopilotWindsurfAntigravityOpenAI CodexKiroAny MCP clientClaude CodeCursorGitHub CopilotWindsurfAntigravityOpenAI CodexKiroAny MCP clientClaude CodeCursorGitHub CopilotWindsurfAntigravityOpenAI CodexKiroAny MCP clientClaude CodeCursorGitHub CopilotWindsurfAntigravityOpenAI CodexKiroAny MCP clientClaude CodeCursorGitHub CopilotWindsurfAntigravityOpenAI CodexKiroAny MCP clientClaude CodeCursorGitHub CopilotWindsurfAntigravityOpenAI CodexKiroAny MCP clientClaude CodeCursorGitHub CopilotWindsurfAntigravityOpenAI CodexKiroAny MCP client
Your AI wrote both files, in two sessions. Both pass the linter. Together they teach it your project has no rules.
user_handler.ts
import { UserRepository } from '../repositories/user';
import { requireAuth } from '../middleware/auth';
export async function getUser(req: Request) {
requireAuth(req);
const user = await UserRepository.findById(id);
if (!user) throw new NotFoundError();
return user;
}✓ Uses the repository pattern
✓ Checks the user is logged in
✓ Proper typed error
order_handler.ts
import { db } from '../config/database';
export async function getOrder(req: Request) {
const id = req.params.id;
const rows = await db.query('SELECT * FROM orders...');
if (rows.length === 0) {
return { status: 404, error: 'not found' };
}
return rows[0];
}✗
Anyone can call it, no auth
8 checks~2sruns locally
A report tells you about drift after it lands. The VibeDrift MCP server stops it from landing at all. Mid-task, Claude Code and Cursor ask your codebase what it already does, and get an evidence-backed answer in under a second. That turns drift detection into drift prevention.
get_dominant_pattern
“
What's this repo's error-handling pattern?
”
find_similar_function
“
Does a function like this already exist?
”
check_file_drift
“
Does this file match the repo's conventions?
”
validate_change
“
Would this change introduce drift?
”
get_intent_hints
“
What conventions has the team declared?
”
Five tools. Local and free, your code never leaves your machine, no login.
Add it in one line (Claude Code, Cursor, Windsurf, any MCP client)
$ claude mcp add vibedrift -- npx -y @vibedrift/cli mcp
// Everything you get
One scan ranks what's wrong by how much it hurts, hands your agent a copy-paste fix, and leaves a memory it reads every session.
Find it. Fix it. In seconds.
0
drifts found
ranked by how much they hurt
my-saas-app
ERRORTwo patterns fighting
orderService.ts:42
ERRORMissing login check
admin/reports.ts:8
WARNSame function, two names
format.ts ↔ money.ts
+ 14 more, worst first
Three steps, no setup
1
Run npx @vibedrift/cli .
scans locally in ~2s
2
Read worst problems first
ranked by how much they hurt
3
Paste the fix into your agent
every finding ships with one
Agent memory
A .vibedrift/ folder your agent reads every session.
context.md
Patterns & open drifts
fix-prompts.md
One fix at a time
patterns.json
Machine-readable
Live checks (MCP)
Your agent asks your codebase mid-task, answer in under a second.
What's our error pattern?
↳
Typed errors, never raw 404s
Will this cause drift?
↳
It would. Use the repo pattern.
Watch mode
Refreshes the memory on every save. Zero network calls.
Open source
VibeDrift / VibeDrift
TypeScript★ 28⚖ MIT
// Proof
With and without VibeDrift, graded by an independent pass, it only changes things when the model would've gotten it wrong, and we show where it did nothing.
Conventions the agent could already infer
≈ 0
No measurable change.
When the model would match your conventions anyway, the signal does nothing, and we're not hiding that.
Conventions it couldn't see or wouldn't pick
Cut by a statistically significant margin.
95% CI
[0.57, 1.11] , clears zero.
// Local vs Deep
The free local scan catches the obvious drift in seconds. The deep scan reads what your code actually means, so it finds the deeper conflicts a quick scan can't, the kind that quietly pile up in big codebases.
Local scan
Free · Open source · Unlimited
Catches the stuff your code visibly does differently.
Deep scan
Pro · AI-powered
Catches the conflicts you can't spot by eye, the ones hiding in what the code means.
The deep scan helps most exactly where your AI agent can't see your conventions on its own, which is right when drift creeps in.
Local scans and the local MCP tools are free on every plan, forever. Paid plans add a deep-scan budget and in-editor checks.
Free
$0
Start free. No card needed.
1 deep scan / month
+Unlimited local scans
+Free MCP tools, forever
+Vibe Drift Score + reports
+Scan-over-scan delta
Most popular
Pro
$15/mo
For developers shipping every day.
Everything in Free, plus
12 deep scans / month
+Drift trend over time
+In-editor deep checks via MCP
+Coherence report + copy-ready fixes
+Watch mode + git pre-push gate
+Top-ups: 5 scans for $10
Enterprise
Let's talk
Regulated, air-gapped, or self-hosted.
Everything in Pro, plus
Self-host in your cloud (BYOC)
+Team seats + shared dashboard
+SSO / SAML
+Custom rules + SLA
+GitHub App, auto-PR
+Dedicated support
Out of deep scans? Top up 5 for $10, on any plan. Credits never expire.
// FAQ
Run npx @vibedrift/cli . in any project, no account, no config. Local scans are free and unlimited; sign in only when you want a deep scan or the dashboard.
Both. Every scan writes copy-ready fix prompts to .vibedrift/fix-plan.md so you, or your agent, can apply them. Deep scans add AI-synthesized fixes for the contradictions patterns can't see.
A 0–100 score across five categories, graded against your own codebase's dominant patterns, not a generic rulebook. It tells you how internally consistent your project is and which files drag it down.
Yes. The local scanner is MIT-licensed at github.com/VibeDrift/VibeDrift.
See what your codebase has been teaching your AI.
Not ready to scan? Get notified of updates.