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>
This commit is contained in:
97
.claude/hooks/README.md
Normal file
97
.claude/hooks/README.md
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
# 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.
|
||||||
@@ -33,10 +33,13 @@ PAYLOAD=$(jq -n \
|
|||||||
}')
|
}')
|
||||||
|
|
||||||
# Send to backend API (asynchronous, non-blocking)
|
# Send to backend API (asynchronous, non-blocking)
|
||||||
|
# Use CLAUDE_MONITOR_URL environment variable or default to localhost
|
||||||
|
MONITOR_URL="${CLAUDE_MONITOR_URL:-http://localhost:8000}"
|
||||||
|
|
||||||
curl -X POST \
|
curl -X POST \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d "$PAYLOAD" \
|
-d "$PAYLOAD" \
|
||||||
http://localhost:8000/api/events \
|
"${MONITOR_URL}/api/events" \
|
||||||
--max-time 2 \
|
--max-time 2 \
|
||||||
--silent \
|
--silent \
|
||||||
--show-error \
|
--show-error \
|
||||||
|
|||||||
@@ -27,10 +27,13 @@ PAYLOAD=$(jq -n \
|
|||||||
}')
|
}')
|
||||||
|
|
||||||
# Send to backend API (asynchronous, non-blocking)
|
# Send to backend API (asynchronous, non-blocking)
|
||||||
|
# Use CLAUDE_MONITOR_URL environment variable or default to localhost
|
||||||
|
MONITOR_URL="${CLAUDE_MONITOR_URL:-http://localhost:8000}"
|
||||||
|
|
||||||
curl -X POST \
|
curl -X POST \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d "$PAYLOAD" \
|
-d "$PAYLOAD" \
|
||||||
http://localhost:8000/api/events \
|
"${MONITOR_URL}/api/events" \
|
||||||
--max-time 2 \
|
--max-time 2 \
|
||||||
--silent \
|
--silent \
|
||||||
--show-error \
|
--show-error \
|
||||||
|
|||||||
@@ -21,10 +21,13 @@ PAYLOAD=$(jq -n \
|
|||||||
}')
|
}')
|
||||||
|
|
||||||
# Send to backend API (asynchronous, non-blocking)
|
# Send to backend API (asynchronous, non-blocking)
|
||||||
|
# Use CLAUDE_MONITOR_URL environment variable or default to localhost
|
||||||
|
MONITOR_URL="${CLAUDE_MONITOR_URL:-http://localhost:8000}"
|
||||||
|
|
||||||
curl -X POST \
|
curl -X POST \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d "$PAYLOAD" \
|
-d "$PAYLOAD" \
|
||||||
http://localhost:8000/api/events \
|
"${MONITOR_URL}/api/events" \
|
||||||
--max-time 2 \
|
--max-time 2 \
|
||||||
--silent \
|
--silent \
|
||||||
--show-error \
|
--show-error \
|
||||||
|
|||||||
@@ -21,10 +21,13 @@ PAYLOAD=$(jq -n \
|
|||||||
}')
|
}')
|
||||||
|
|
||||||
# Send to backend API (asynchronous, non-blocking)
|
# Send to backend API (asynchronous, non-blocking)
|
||||||
|
# Use CLAUDE_MONITOR_URL environment variable or default to localhost
|
||||||
|
MONITOR_URL="${CLAUDE_MONITOR_URL:-http://localhost:8000}"
|
||||||
|
|
||||||
curl -X POST \
|
curl -X POST \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d "$PAYLOAD" \
|
-d "$PAYLOAD" \
|
||||||
http://localhost:8000/api/events \
|
"${MONITOR_URL}/api/events" \
|
||||||
--max-time 2 \
|
--max-time 2 \
|
||||||
--silent \
|
--silent \
|
||||||
--show-error \
|
--show-error \
|
||||||
|
|||||||
@@ -24,10 +24,13 @@ PAYLOAD=$(jq -n \
|
|||||||
}')
|
}')
|
||||||
|
|
||||||
# Send to backend API (asynchronous, non-blocking)
|
# Send to backend API (asynchronous, non-blocking)
|
||||||
|
# Use CLAUDE_MONITOR_URL environment variable or default to localhost
|
||||||
|
MONITOR_URL="${CLAUDE_MONITOR_URL:-http://localhost:8000}"
|
||||||
|
|
||||||
curl -X POST \
|
curl -X POST \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d "$PAYLOAD" \
|
-d "$PAYLOAD" \
|
||||||
http://localhost:8000/api/events \
|
"${MONITOR_URL}/api/events" \
|
||||||
--max-time 2 \
|
--max-time 2 \
|
||||||
--silent \
|
--silent \
|
||||||
--show-error \
|
--show-error \
|
||||||
|
|||||||
@@ -27,10 +27,13 @@ PAYLOAD=$(jq -n \
|
|||||||
}')
|
}')
|
||||||
|
|
||||||
# Send to backend API (asynchronous, non-blocking)
|
# Send to backend API (asynchronous, non-blocking)
|
||||||
|
# Use CLAUDE_MONITOR_URL environment variable or default to localhost
|
||||||
|
MONITOR_URL="${CLAUDE_MONITOR_URL:-http://localhost:8000}"
|
||||||
|
|
||||||
curl -X POST \
|
curl -X POST \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d "$PAYLOAD" \
|
-d "$PAYLOAD" \
|
||||||
http://localhost:8000/api/events \
|
"${MONITOR_URL}/api/events" \
|
||||||
--max-time 2 \
|
--max-time 2 \
|
||||||
--silent \
|
--silent \
|
||||||
--show-error \
|
--show-error \
|
||||||
|
|||||||
Reference in New Issue
Block a user