Skip to content
Projects

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.

How these counts are measured

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
Five Lab Original Dr. Vibes coding, celebrating and levitating

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.

License: AGPL-3.0 Art: CC BY-NC-SA 4.0 Version 2.0.0 Platform: Windows Built with Tauri 2

Download for Windows

drvibe.io  ·  All releases  ·  Privacy  ·  Claude Code  ·  Skins  ·  Contributing

Dr. Vibe beside a code editor: he codes along, comments on a hotspot file, then celebrates a commit while the heat bar turns red

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 overview with streak, momentum, water and mastery progress Dashboard achievements tab with the closest unlocks
Dashboard (tray → Dashboard): streak, momentum, mastery, today's session, personal bests, achievements, time per language and history.
Achievement, hydration and break notifications

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.

A visiting Pirate Dr. Vibe walks on, waves, and walks off

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.

  1. Download DrVibe_2.0.0_x64-setup.exe from drvibe.io/downloads or the releases page.
  2. Run it. It installs for your user only (no admin prompt) into a DrVibe folder. 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 in SHA256SUMS if you want to verify the download.
  3. Dr. Vibe appears above your taskbar and a short setup wizard opens.
Setup wizard: Pick your look, with the 12 Lab Originals

First run. The wizard has eight steps, and you can skip any of them or close it:

  1. Meet Dr. Vibe
  2. Pick your look: one of the 12 Lab Originals, a skin tone, a size and a voice
  3. Your coding setup: the apps that count as coding and the folders that hold your projects
  4. What Dr. Vibe watches: git tracking, Claude Code, and hiding while you share your screen
  5. Wellness: which reminders you want
  6. What Dr. Vibe sends: project name, activity times, coding right now, the weekly recap and crash reports
  7. Who can see it: your profile, leaderboards, search engines, the Vibe Map and visits
  8. 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 tab

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

Settings, Appearance tab with the 12 Lab Originals

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.

Make your own Dr. Vibe: a design passing all 17 row checks

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):

@hardheadhackerhead on Dr. Vibe

[![@hardheadhackerhead on Dr. Vibe](https://drvibe.io/api/v1/users/hardheadhackerhead/card.png)](https://drvibe.io/u/hardheadhackerhead)

Build from source

Prerequisites and commands

You need:

  • Node.js 22
  • Rust stable, with clippy and rustfmt
  • 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