Real-time status monitor for AI coding assistants with pixel art character display.
See at a glance what your AI coding assistant is doing — thinking, writing code, or waiting for input. A cute pixel art character visually represents the current state.
| Tool | Description |
|---|---|
| Claude Code | Anthropic’s official AI coding assistant |
| Kiro | AWS’s AI coding assistant |
| Field | Description | Example |
|---|---|---|
| State | Current activity state | working, idle, notification |
| Project | Active project directory | vibe-monitor |
| Tool | Currently executing tool | Bash, Read, Edit |
| Model | Active model | Opus 4.5, Sonnet |
| Memory | Context window usage | 45% |
| Platform | Description | Best For |
|---|---|---|
| Desktop App | Electron app with system tray | Daily use, always-visible monitoring |
| Web Simulator | Browser-based preview | Testing, no installation |
| ESP32 Hardware | Dedicated LCD display (experimental) | Hardware enthusiasts |

| Tool | Required For | Install |
|---|---|---|
| Python 3 | Hook scripts | Built-in on macOS/Linux |
| Node.js | Desktop App | brew install node / apt install nodejs npm |
npx vibe-monitor@latest
Or install globally:
npm install -g vibe-monitor
vibe-monitor
No installation required:
Online: https://nalbam.github.io/vibe-monitor/simulator/
Local:
open simulator/index.html
curl -fsSL https://nalbam.github.io/vibe-monitor/install.py | python3
The script configures hooks for Claude Code or Kiro automatically.
See Integration Guide for detailed manual setup instructions.
| State | Color | Description |
|---|---|---|
start |
Cyan | Session begins |
idle |
Green | Waiting for input |
thinking |
Purple | Processing prompt |
planning |
Teal | Plan mode active |
working |
Blue | Tool executing |
notification |
Yellow | User input needed |
done |
Green | Task completed |
sleep |
Navy | 5min inactivity |
See Features for animations, working state text, and more.
| Character | Color | Auto-selected for |
|---|---|---|
clawd |
Orange | Claude Code |
kiro |
White | Kiro |
Default port: 19280
Update monitor status:
curl -X POST http://127.0.0.1:19280/status \
-H "Content-Type: application/json" \
-d '{"state":"working","tool":"Bash","project":"my-project"}'
Get all windows’ status:
curl http://127.0.0.1:19280/status
Stop the application:
curl -X POST http://127.0.0.1:19280/quit
See API Reference for all endpoints.
| Mode | Description |
|---|---|
multi |
One window per project (max 5) - Default |
single |
One window with project lock support |
Switch via system tray menu or API:
curl -X POST http://127.0.0.1:19280/window-mode \
-H "Content-Type: application/json" \
-d '{"mode":"single"}'
Lock the monitor to a specific project (single-window mode only):
# Lock
python3 ~/.claude/hooks/vibe-monitor.py --lock
# Unlock
python3 ~/.claude/hooks/vibe-monitor.py --unlock
See Features for lock modes and CLI commands.
See ESP32 Setup for hardware setup instructions.
| Issue | Solution |
|---|---|
| Window not appearing | Check system tray, or run curl -X POST http://127.0.0.1:19280/show |
| Port already in use | Check with lsof -i :19280 |
| Hook not working | Verify Python 3: python3 --version |
MIT