vibemon-app

Features

Agent Support

VibeMon normalizes multiple agent ecosystems into one display model. The rendering layer is shared, but the integration path is not.

Agent Integration path Best signal source Observability quality Important limitation
Claude Code Native hooks Session, turn, and tool hooks High None significant for basic monitoring
Codex Native hooks and non-interactive JSON output Interactive hooks for sessions, codex exec --json for automation Medium in interactive mode, high in automation Interactive tool hooks are currently Bash-focused
Kiro Native hooks Prompt, tool, and stop hooks High Fewer lifecycle events than Claude Code
OpenClaw Plugin bridge Plugin SDK hooks Medium to high Internal hooks are not enough by themselves for full tool-loop visibility

Bridge Types

Agent-Specific Notes

Characters

Character Color Description Auto-selected for
clawd Orange Default character Claude Code
codex Green Terminal robot Codex
kiro White Ghost character Kiro
claw Red Antenna character OpenClaw

All characters use image-based rendering (128x128 PNG). Character is auto-selected by bridge, not by the core display runtime. 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
packing Gray ▀ ▀ + 💭 Packing Context compacting
notification Yellow ● ● + ? Input? User input needed
done Green > < Done! Tool completed
sleep Navy ─ ─ + Z Zzz… 5min inactivity
alert Red ■ ■ + ! Alert Critical error/failure (ESP32: triggers alert light if configured)

Working State Text

The working state displays fixed text based on the active tool:

Tool Text
Bash Running
Read Reading
Edit Editing
Write Writing
Grep / WebSearch Searching
Glob Scanning
WebFetch Fetching
Task Tasking
Default Working

State Timeout

From State Timeout To State
start, done 1 minute idle
planning, thinking, working, packing, notification, alert 5 minutes idle
idle 5 minutes sleep

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

Display Behavior

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

# Claude Code example: lock current project
python3 ~/.claude/hooks/vibemon.py --lock

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

# Unlock
python3 ~/.claude/hooks/vibemon.py --unlock

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

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

# Reboot ESP32 device
python3 ~/.claude/hooks/vibemon.py --reboot

For Codex or Kiro, use the equivalent bridge path:

python3 ~/.codex/hooks/vibemon.py --lock
python3 ~/.kiro/hooks/vibemon.py --lock

OpenClaw uses its plugin bridge instead of a Python hook CLI.

Desktop App Features

Always on Top Modes

Mode Description
active-only Only active states (thinking, planning, working, packing, notification, alert) 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 VibeMon 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