# Claude Code Monitor Hooks These hooks capture Claude Code events and send them to the monitoring backend. ## Installation ### Local Installation (localhost) ```bash # Copy hooks to Claude Code directory cp -r .claude/hooks/* ~/.claude/hooks/ # Make hooks executable chmod +x ~/.claude/hooks/*.sh ``` The hooks will automatically use `http://localhost:8000` as the backend URL. ### Remote/VM Installation For remote installations, set the `CLAUDE_MONITOR_URL` environment variable: ```bash # Add to your shell profile (~/.bashrc, ~/.zshrc, etc.) export CLAUDE_MONITOR_URL="http://your-vm-ip:8000" # Or for a specific domain export CLAUDE_MONITOR_URL="http://monitor.example.com:8000" # Then copy and enable hooks cp -r .claude/hooks/* ~/.claude/hooks/ chmod +x ~/.claude/hooks/*.sh ``` ### Docker Deployment with Port 3000 If you're running the monitor with Docker (frontend on port 3000), use: ```bash # For VM with IP 192.168.1.100 export CLAUDE_MONITOR_URL="http://192.168.1.100:8000" # Or if backend is exposed via nginx on port 3000 export CLAUDE_MONITOR_URL="http://192.168.1.100:3000" ``` ## Verification Test if hooks are working: ```bash # Check if environment variable is set echo $CLAUDE_MONITOR_URL # Manually test a hook echo '{"session_id":"test","timestamp":1234567890}' | ~/.claude/hooks/session_start.sh # Check backend logs for the test event curl http://your-backend:8000/api/events | jq ``` ## Available Hooks - `pre_tool_use.sh` - Before tool execution - `post_tool_use.sh` - After tool execution - `user_prompt.sh` - When user submits a prompt - `session_start.sh` - Session initialization - `session_end.sh` - Session termination - `subagent_stop.sh` - Agent completion ## Troubleshooting ### No events appearing in dashboard 1. Check if `CLAUDE_MONITOR_URL` is set correctly: ```bash echo $CLAUDE_MONITOR_URL ``` 2. Verify backend is reachable: ```bash curl $CLAUDE_MONITOR_URL/health ``` 3. Check hook permissions: ```bash ls -la ~/.claude/hooks/*.sh ``` 4. Test hook manually: ```bash echo '{"session_id":"test","timestamp":1234567890}' | ~/.claude/hooks/session_start.sh ``` ### Events only work locally Make sure to set `CLAUDE_MONITOR_URL` in your shell profile and restart your terminal.