HardHeadHackerHead/DrVibe has 35 GitHub stars and 4 forks. GitHot measured 0 in 7 days. Last checked 2026-11-11 04:24 UTC. Last push 2026-11-02.
A pixel-art mad scientist who lives on your desktop and reacts to your coding. Free and open source. Tauri 2, Windows.
Measured star growth
- in 24h
- Update delayed
- in 7 days
- 0
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Original
Dr. Vibe
A pixel-art mad scientist who lives on your desktop and reacts to your coding.
He types when you type, cheers your commits, notices when Claude Code is hammering the same file, and reminds you to drink water. Free, open source, and fully offline unless you choose to join the community.
drvibe.io · All releases · Privacy · Claude Code · Skins · Contributing
What it does
Dr. Vibe sits in a small transparent window on top of your taskbar. Everything below works offline, with no account.
- Reacts while you code. He switches to his coding animation when one of about 25 editors, IDEs and terminals has focus (VS Code, Cursor, Zed, the JetBrains IDEs, Neovim, Emacs, Windows Terminal, Warp, PowerShell and more), gets tired late in a long session, and levitates while Antigravity is active.
- Momentum heat bar. The bar under him runs from cold to fire as files change in your project folders and in Claude Code sessions.
- Claude Code aware. Optional hooks feed Claude Code's file activity in, so he calls out hotspot files, fix-test-fix loops, big refactors and new files, and sums up each session. More below.
- Git. Commit celebrations, branch changes, and reminders that get more insistent the longer changes sit uncommitted, in the project folders you add in Settings → Tracking and, if you choose, the repos Claude Code works in. Temp and system folders are never tracked.
- Focus and wellness. Pomodoro or activity-based breaks, focus mode
(
Ctrl+Shift+F), hydration, 20-20-20 eye breaks, posture checks, fatigue and stuck detection, overwork warnings, and late-night and weekend nudges. Every one can be switched off. - Progress. 41 achievements, 5 mastery tracks, daily streaks with personal bests, time per language, a weekly summary and a "Today's Wins" recap when you quit.
- Hides when it should. He steps aside during screen shares and fullscreen apps.
- Sound. Eight procedural voices, synthesized live. No audio files.
![]() |
![]() |
| Dashboard (tray → Dashboard): streak, momentum, mastery, today's session, personal bests, achievements, time per language and history. |

Notifications. Achievements, breaks and reminders arrive as small toasts. Snooze them, move them to any corner of the screen, change how long they stay, or choose which kinds pop up in Settings → Behavior. Longer messages come from Dr. Vibe himself, in a speech bubble.
Visits
Friends on drvibe.io can send their Dr. Vibe to your desktop. The visitor walks on along the taskbar, the two wave, and you can wave back.

Visits wait while you're in focus mode, a pomodoro work block, a screen share or a fullscreen app. At most five walk on per hour; the rest become a "visited while you were away" note. You choose who can visit you (everyone, followers or nobody) in Settings → Privacy. Visits need a linked account.
Install
Windows 10 or 11 (x64). macOS and Linux builds aren't shipped yet.
- Download
DrVibe_2.0.0_x64-setup.exefrom drvibe.io/downloads or the releases page. - Run it. It installs for your user only (no admin prompt) into a
DrVibefolder. The installer and the app are Authenticode-signed (with a timestamp). New releases can still trip SmartScreen for a few days while Microsoft builds up the file's reputation; if you see "Windows protected your PC", choose More info → Run anyway. Each release lists SHA-256 checksums inSHA256SUMSif you want to verify the download. - Dr. Vibe appears above your taskbar and a short setup wizard opens.

First run. The wizard has eight steps, and you can skip any of them or close it:
- Meet Dr. Vibe
- Pick your look: one of the 12 Lab Originals, a skin tone, a size and a voice
- Your coding setup: the apps that count as coding and the folders that hold your projects
- What Dr. Vibe watches: git tracking, Claude Code, and hiding while you share your screen
- Wellness: which reminders you want
- What Dr. Vibe sends: project name, activity times, coding right now, the weekly recap and crash reports
- Who can see it: your profile, leaderboards, search engines, the Vibe Map and visits
- Join the community (optional): link GitHub or Discord, or skip it
Skipping or closing the wizard saves none of its choices: the defaults apply, so the Claude Code hooks and crash reports stay off. Each choice has the same wording in Settings, and Settings → Privacy → Run setup again goes through it once more.
After that, everything lives in the tray icon: right-click it for Settings, Dashboard, Session Stats, Make your own Dr. Vibe, About and Quit. Drag Dr. Vibe to move him; he walks along the taskbar on his own when you're idle.
Updates: Dr. Vibe checks drvibe.io for a new version 30 seconds after start and every 4 hours and tells you when one is out. Before installing it shows the new version and its release notes and asks you (also from About → Check for Updates). Updates are signed, and the app refuses one with a bad signature.
Privacy
Dr. Vibe watches window titles and file changes so it can react, and all of that stays on your computer. Without an account, nothing about your coding leaves your machine. The only network calls are the update check and, if you switch them on, crash reports (the error text and app version, with folder paths, web addresses and keys removed, sent only to drvibe.io).
If you link an account, the app sends your coding totals, streaks, achievements, momentum, your Dr. Vibe's look and whether you're coding right now, every 15 minutes. It never sends window titles, file names, file contents or code. A project name (the folder name of the tracked git repo you're in) is sent only if you switch on Send my project name (off by default). Send my activity times and Send when I'm coding right now (both on by default) hold that data back on your computer when off, and Sync my stats off sends nothing at all while you stay linked.

Settings → Privacy has:
- Pause tracking for an hour, until tomorrow or until you resume (also in the tray menu)
- What Dr. Vibe sends: who can see your profile, leaderboards, Send my project name, Send my activity times, Send when I'm coding right now, the Vibe Map, who can visit you, Share my weekly recap (on; you see the first card before it's posted), Send crash reports (off until you choose) and, once linked, Sync my stats
- Hide Dr. Vibe while I share my screen (on by default)
- What will be sent next: the next sync, waiting events, the next recap and queued crash reports, built by the same code that sends them; Show my last sync displays the exact payload last sent, with a button to copy it
- What Dr. Vibe sees: everything it looks at, in plain words
- Your local data: export it, forget project history or tracked repos, delete all of it, or delete your account on drvibe.io; and Run setup again
The full list of what's collected, where it's stored and what each switch does is in docs/privacy.md.
Claude Code
Dr. Vibe reads Claude Code's activity through hooks.
It's off until you switch it on (in setup or Settings). Then, if Claude Code is
installed (there's a ~/.claude folder), Dr. Vibe copies a small bash script to
~/.dr-vibe/claude-code-hook.sh and registers it in ~/.claude/settings.json for
PostToolUse (Write, Edit, NotebookEdit and Bash), SessionStart, SessionEnd and
Stop. Inside the repos Dr. Vibe tracks, the script appends one line per event (event
type, tool, file path, session ID, working folder) to
~/.dr-vibe/claude-code-events.jsonl, which the app reads every few seconds; anywhere
else it writes nothing. It never sees your prompts, Claude's replies, commands or file
contents, never logs files Claude only reads, and nothing from the log is sent
anywhere. Without Claude Code, Dr. Vibe doesn't touch ~/.claude at all.
With the hooks in place, Dr. Vibe:
- fills the heat bar from Claude's edits as well as yours
- comments on hotspot files, rewrite sprees, new files and cross-cutting changes
- spots fix-test-fix loops and celebrates when the tests finally pass
- sums up each session (files changed, top language, most-edited file)
- marks pair-programming milestones when you and Claude are both working
Turn it on or off in Settings → Tracking → Follow Claude Code (off by default).
Off removes Dr. Vibe's hooks from ~/.claude/settings.json and deletes the log and
scripts in ~/.dr-vibe; on puts them back, and Repair hooks puts them back if they went missing. Also
track the repos Claude Code works in (off by default, needs the hooks) adds the repo a
Claude Code session starts in to the tracked repos. Restart Claude Code after a change.
While it's on, the hooks stay in place when you quit Dr. Vibe: the script only appends
to the local log (capped at 5 MB, then rotated) and always exits at once, so Claude
Code doesn't notice. It does nothing while tracking is paused or once Dr. Vibe is
uninstalled, and the uninstaller removes the hooks and ~/.dr-vibe. On Windows the hooks run through Git Bash, which Claude Code needs
anyway. Details: docs/claude-code.md.
Codex. OpenAI's Codex CLI isn't tracked. Dr. Vibe uses Codex (or Claude Code) only for Make your own Dr. Vibe below, and only when you ask it to.
Skins and making your own

Twelve Lab Originals ship with the app and are free for everyone, offline, for good: Dr. Vibe, Classic, Alien, Arctic, BridgeMind, Cyberpunk, Firefighter, Mad Scientist, Pirate, Retro '80s, Tuxedo and Wizard. Each takes a skin tone. Switch in Settings → Appearance.
Tray → Make your own Dr. Vibe… opens the workshop:
- Generate with AI using your own Claude Code or Codex CLI, so it runs on your plan and costs nothing extra. Your description goes to Anthropic or OpenAI through that CLI (a one-time notice says so), and the agent works in a private temporary folder with limited tools.
- Draw it yourself: download the sprite template, import a PNG, or open the built-in sprite editor.
- Preview all 17 rows, then wear it right away or save it to your designs.
- Submit to the Incubator (linked accounts): players vote, and when each season starts the favourites graduate into the Machines on drvibe.io with your name on them.

A skin is one PNG sprite sheet: 32 × 32 frames, 4 columns, 16 rows (128 × 512), plus
an optional 17th levitating row (128 × 544), up to 2 MB. The row order, timings, the
optional .anim.json sidecar and the sprite editor are covered in
docs/skins.md.
The Dr. Vibe character and the Lab Originals are licensed separately from the code, under CC BY-NC-SA 4.0 (LICENSE-ART.md). Designs you make are yours.
Account linking and drvibe.io (optional)
Dr. Vibe is complete without an account. Linking adds the community at drvibe.io:
- Vibe Points for coding (a commit, a finished pomodoro and so on), plus daily and weekly quests on the dashboard
- The Machines to pull new Dr. Vibes with your points, the Store, trades, and your collection, switchable from the tray under My Companions
- Your profile and Lab: a public page with your stats and a Lab you can decorate
- Friends and visits, the Vibe Room, leaderboards and seasons
- The Incubator for player-made Dr. Vibes
To link, open Settings → Account and community → Continue with GitHub or
Continue with Discord (13+). Your browser opens drvibe.io, and after you sign in the
site hands the app back a one-time code through a dr-vibe:// link (PKCE, so the code
is useless to anyone else). The app trades it for a per-device token, kept in Windows
Credential Manager and never shown to the app's web views. Every request that changes
something is signed with that token. Offline, events queue on disk and send later.
Unlink from the same tab, or revoke the device from the website.
Your Vibe Card
Every profile on drvibe.io comes with a Vibe Card: your decorated Lab and your Dr. Vibe, above your streak, hours, commits and top language. It updates as you code. Put it in your GitHub profile README (Profile → Share → Copy README badge):
[](https://drvibe.io/u/hardheadhackerhead)
Build from source
Prerequisites and commands
You need:
- Node.js 22
- Rust stable, with
clippyandrustfmt - The Tauri 2 prerequisites for your OS (on Windows: Microsoft C++ Build Tools and WebView2, which Windows 11 already has)
git clone https://github.com/HardHeadHackerHead/DrVibe.git && cd DrVibe
npm ci
npm run dev:prod # run the app against https://drvibe.io
npm run build # release build: NSIS installer in src-tauri/target/release/bundle/nsis/
npm run dev runs the same app against a Dr. Vibe server on http://localhost:8080.
The server isn't part of this repository; without one, every offline feature works and
community features simply show as offline. Debug builds can switch server in Settings →
Developer (tick Admin Mode in the title bar to show it). Release builds always talk
to drvibe.io.
The app shares its API types with the server through the drvibe-protocol crate in
crates/drvibe-protocol/, a path dependency of src-tauri/,
so a plain clone builds.
The npm run dev* scripts run with the identifier com.drvibe.companion.dev
(src-tauri/tauri.dev.conf.json), so a dev build keeps its own settings, stats, skins
and account link, apart from an installed Dr. Vibe, and the two can run side by side.
They do share ~/.dr-vibe and the Claude Code hooks.
Tests
npm run check # everything below, with a list of failures at the end
npx vitest run # JS unit and integration tests (tests/unit, tests/e2e)
cd src-tauri
cargo fmt --check
cargo clippy --all-targets -- -D warnings
cargo test
cd ../crates/drvibe-protocol
cargo fmt --check
cargo clippy --all-targets --all-features --locked -- -D warnings
cargo test --all-features --locked
There is no CI, so npm run check is the gate before a pull request. tests/live/ runs
end to end against a real local server and is skipped unless DRVIBE_E2E_BRIDGE is set
(see scripts/e2e-live.sh).
Project structure
src/ webview side: vanilla JS, HTML5 canvas, Web Audio (no bundler)
app.js the main window; wires every feature to the EventBus
core/ EventBus, TauriBridge, Database, PollClient, AccountState, error reporter
core/api/ endpoints.js (every server call), client.js, contract.js
features/ one folder per feature: character, activity, timer, session,
achievements, streak, focus, hydration, posture, eyestrain,
sound, visits, economy, companion, presence, privacy, make, ...
ui/ panels, the dashboard's Community tab, "What Dr. Vibe sees"
config/ animation rows and timing, skin tones, Lab Original names
assets/sprites/skins/ the 12 Lab Originals (PNG + .anim.json)
*.html one file per window: settings, dashboard, setup wizard, make,
character workshop, sprite editor, visitor, toasts, speech, ...
src-tauri/src/ Rust side (Tauri 2)
main.rs setup and command registration
api.rs the one HTTP client: device token, request signing
account.rs server URL, OS keyring token, PKCE device linking
sync.rs the profile sync payload
claude_hooks.rs Claude Code hook install and event log
skins.rs local skin library and imports
generator.rs Make your own Dr. Vibe via the claude / codex CLI
presence.rs screen share and fullscreen detection
projects.rs, watcher.rs project markers, git inspection, file watcher
repos.rs which repo a path is in; places never tracked
tray.rs, panels.rs tray menu and panel windows
updates.rs What's New and the auto-updater
error_reports.rs crash report queue and panic hook
crates/drvibe-protocol/ API payload types shared with the server
tools/ Claude Code hook scripts, generator prompt
scripts/ check, release, skin baking, installer images
tests/ vitest suites
Modules talk through the EventBus rather than calling each other. JavaScript never
calls the server itself: it names a call in src/core/api/endpoints.js, and Rust adds
the token, signs it and checks the body against drvibe-protocol. See
CONTRIBUTING.md for how to add a feature, and
STATE-REFERENCE.md for what triggers each animation.
Contributing
Bug reports, fixes and features are welcome. Start with
CONTRIBUTING.md, run npm run check before you open a pull request,
and keep Dr. Vibe's voice: short, warm, second-person hype ("Five files and counting!").
Security issues: see docs/security.md. Releases are cut by the
maintainer (RELEASING.md).
License
- Code: GNU AGPL-3.0.
- Art: the Dr. Vibe character, the 12 Lab Originals and the brand art (icons,
installer images, screenshots and GIFs in
docs/images/) are CC BY-NC-SA 4.0. Fork the app freely; don't sell the character. - Fonts: Pixelify Sans, Geist Sans and Geist Mono, under the SIL Open Font License
(
src/assets/fonts/). - The names "Dr. Vibe" and "drvibe.io" aren't licensed for forks to use as their own.
How it started
Dr. Vibe began at the BridgeMind hackathon in February 2026: a small pixel scientist who sat on the taskbar and reacted to a coding session. The BridgeMind Lab Original is a nod to where he was born. Version 2.0 grew that hackathon project into the full app and the drvibe.io community.
Credits
Dr. Vibe is made by Quad H (HardHeadHackerHead) and the Dr. Vibe contributors. Questions, press or art licensing: [email protected]. Built with Tauri; type set in Pixelify Sans and Geist. Releases are code-signed with QwickCert.
Explore related projects
n8n-io/n8n
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
210,087 starslanggenius/dify
Build Agentic workflows, RAG pipelines, with rich AI model and tool support on one collaborative workspace. Deploy on cloud, VPC, or self-hosted, so teams move from prototype to production without rebuilding the stack.
160,773 starsmicrosoft/PowerToys
Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows
140,833 starsstablyai/orca
Orca is the place for working with a fleet of agents (e.g. Grok Bot, Claude Code). Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.
121,781 stars

