Files
claude-code-monitor/.claude/hooks/README.md
felix.zoesch 8b35d95e9b Make hooks configurable for remote/VM deployments
All hooks now use CLAUDE_MONITOR_URL environment variable to allow
configuration for remote deployments. Defaults to http://localhost:8000
for local development.

Changes:
- All hooks now read CLAUDE_MONITOR_URL from environment
- Added README.md with installation instructions for local and remote setups
- Includes troubleshooting guide for common issues

Usage:
  export CLAUDE_MONITOR_URL="http://vm-ip:8000"
  cp -r .claude/hooks/* ~/.claude/hooks/
  chmod +x ~/.claude/hooks/*.sh

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-15 16:16:43 +01:00

2.2 KiB

Claude Code Monitor Hooks

These hooks capture Claude Code events and send them to the monitoring backend.

Installation

Local Installation (localhost)

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

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

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

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

    echo $CLAUDE_MONITOR_URL
    
  2. Verify backend is reachable:

    curl $CLAUDE_MONITOR_URL/health
    
  3. Check hook permissions:

    ls -la ~/.claude/hooks/*.sh
    
  4. Test hook manually:

    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.