vibe-monitor

Features

Characters

Character Color Description Auto-selected for
clawd Orange Default character with arms and legs Claude Code
kiro White Ghost character with wavy tail Kiro

Character is auto-detected based on the IDE hook events. You can also manually change it via the system tray menu.

States

State Background Eyes Text Trigger
start Cyan ■ ■ + ✦ Hello! Session begins
idle Green ■ ■ Ready Waiting for input
thinking Purple ▀ ▀ + 💭 Thinking User submits prompt
planning Teal ▀ ▀ + 💭 Planning Plan mode active
working Blue 🕶️ (sunglasses) (tool-based) Tool executing
notification Yellow ● ● + ? Input? User input needed
done Green > < Done! Tool completed
sleep Navy ─ ─ + Z Zzz… 5min inactivity

Working State Text

The working state displays context-aware text based on the active tool:

Tool Possible Text
Bash Running, Executing, Processing
Read Reading, Scanning, Checking
Edit Editing, Modifying, Fixing
Write Writing, Creating, Saving
Grep Searching, Finding, Looking
Glob Scanning, Browsing, Finding
Task Thinking, Working, Planning
WebFetch Fetching, Loading, Getting
WebSearch Searching, Googling, Looking
Default Working, Busy, Coding

State Timeout

From State Timeout To State
start, done 1 minute idle
idle, notification 5 minutes sleep

Desktop only: After 10 minutes in sleep state, the window automatically closes.

Animations

Window Mode

The Desktop App supports two window modes:

Mode Description
multi One window per project (max 5) - Default
single One window with project lock support

Multi-Window Mode (Default)

Single-Window Mode

Switching Modes

Use the system tray menu or API:

curl -X POST http://127.0.0.1:19280/window-mode \
  -H "Content-Type: application/json" \
  -d '{"mode":"single"}'

Project Lock

Lock the monitor to a specific project to prevent display updates from other projects.

Note: Project lock is only available in single-window mode.

Lock Modes

Mode Description
first-project First incoming project is automatically locked
on-thinking Lock when entering thinking state (default)

CLI Commands

# Lock current project
python3 ~/.claude/hooks/vibe-monitor.py --lock

# Lock specific project
python3 ~/.claude/hooks/vibe-monitor.py --lock my-project

# Unlock
python3 ~/.claude/hooks/vibe-monitor.py --unlock

# Get current status
python3 ~/.claude/hooks/vibe-monitor.py --status

# Get/Set lock mode
python3 ~/.claude/hooks/vibe-monitor.py --lock-mode
python3 ~/.claude/hooks/vibe-monitor.py --lock-mode on-thinking

Desktop App Features

Always on Top Modes

Mode Description
active-only Only active states (thinking, planning, working, notification) stay on top - Default
all All windows stay on top regardless of state
disabled No windows stay on top

When active-only is selected:

Change via system tray menu: Always on Top → Select mode

Click to Focus Terminal (macOS)

When running Claude Code in multiple terminal tabs, clicking a Vibe Monitor window automatically switches to the corresponding terminal tab.

Supported Terminals:

Requirements:

System Tray Menu

Build

cd desktop

npm run build:mac     # macOS (DMG, ZIP)
npm run build:win     # Windows (NSIS, Portable)
npm run build:linux   # Linux (AppImage, DEB)
npm run build:all     # All platforms