How it works
Ready to set up a machine? All CLI commands →
What makes it different
- Proof you build with AI. A public record of the days you coded with AI and the commits you shipped, checked against GitHub for the verified badge, that employers and clients can find and you can put on your README, LinkedIn or résumé.
- Shipped work, not spend. The main board ranks consistency and commits shipped with an AI co-author (the
Co-Authored-Bytrailer Claude Code, Codex, Copilot and others add, and for Cursor its own record of commits holding AI-written lines). Token and cost leaderboards reward whoever burns the most; this rewards showing up and shipping. - One person, many accounts. Link every GitHub account you commit from (work and personal) and every machine you code on. Machines add up; a commit two machines both hold counts once.
- Private repos count, privately. Commits are read from your local git history, so private and work repos count without connecting them to anything, and without their names leaving your machine.
- A live card. Your heatmap as an image for your GitHub README, refreshed by a daily background sync.
What the CLI sends
per day and tool : messages, tool calls, sessions, input/output/cache tokens, model names per commit : a keyed hash of its id, its day, the AI agent in its co-author trailer per machine : a random id, its name, its timezone
Never prompts, responses, code, file paths, repo names, commit messages or email addresses. Run npx vibestreak collect --json to see exactly what would be sent before you sync, or read the CLI's source.
Where the numbers come from
- Claude Code:
~/.claude/projects. Rows copied into another session (a fork, a resume) count once; each API request's tokens count once. - Codex:
~/.codex/sessionsandarchived_sessions: the growth of each session's token total; cached input counted as cache. - Cursor: its editor database (each chat and agent message, with tokens and tools) and its AI code-tracking database (accepted agent and Tab edits count as tool calls). Cursor adds no co-author trailer, so a commit counts as shipped with Cursor when Cursor itself scored it as holding lines its AI wrote.
- Copilot: Copilot CLI's session logs (
~/.copilot/session-state: turns, tool calls, tokens per model) and Copilot Chat sessions in VS Code (turns and tool calls; VS Code keeps no token counts). - Gemini CLI: the chat records in
~/.gemini/tmp/*/chats. - Antigravity:
~/.gemini/antigravity/conversations: your messages, the model's replies, the agent's actions, and each model call's tokens (read from an undocumented format, so a best effort). - OpenCode: its database (
~/.local/share/opencode): each message's model, tokens and tool calls, whichever model provider it used (DeepSeek, Kimi, Qwen and others included). - Commits:
git log --allin the repos under your usual folders, kept to the addresses you list (emails scanshows them all) plus your linked accounts' GitHub noreply addresses.
Where you can see it
- On the web: your profile (public unless you hide it), the leaderboard, and your streak card, which updates with every sync.
- In your terminal:
npx vibestreakfor your streak, heatmap and rank;npx vibestreak boardfor the leaderboard;npx vibestreak todayfor who's coding today. All terminal views. - In your AI assistant: vibestreak is an MCP server at
https://vibestreak.dev/mcp. Connected to Claude, ChatGPT or Claude Code, it answers questions about the leaderboard, any public profile and today's activity (toolsget_leaderboard,get_profile,get_today), and, with your token, your own profile even when hidden (get_my_profile). Read-only. Setup for each assistant.
Scores
- Active day: a day with AI coding messages, or a commit shipped with an AI co-author.
- Streak: consecutive active days ending today or yesterday, in your own timezone.
- Streak nudge: with
autosync on, the CLI syncs at 09:17, 13:17 and 17:17, and at 20:30 checks your streak: if it ran through yesterday and today has nothing yet, your computer shows a notification. Once a day at most;vibestreak nudge offturns it off. - Ship rate: AI co-authored commits per million output tokens: how much shipped work the tokens became.
Ranking
- Consistency (the default board) ranks active days in the window: today, 7, 30 or 90 days, or your own dates, each in the person's own timezone.
- All time ranks the share of days active since each person's first active day, counted over at least 90 days. A raw count would only reward starting early; the minimum keeps a few perfect weeks from topping people who kept it up for months.
- Ties go to the steadier person: more active days, then more days shipped with AI (days, not commits, so volume doesn't decide it), then the longer live streak, then whoever started earlier.
Checks
Each day is capped (messages, tool calls, tokens, commits) far above any real person's day; a machine's upload replaces its own earlier upload, so re-syncing never inflates anything; commits are keyed per person so they cannot be copied between profiles.