Install
openclaw skills install claude-watchdogMonitor the Claude API for outages and latency spikes with rich Telegram alerts. Status monitoring, latency probes, and automatic recovery notifications.
openclaw skills install claude-watchdogMonitor the Anthropic/Claude API for outages and latency spikes. Sends rich alerts to Telegram — no agent tokens consumed for status checks.
status-check.py)status.claude.com every 15 minutes via cronlatency-probe.py)Run the interactive setup script:
bash /path/to/skills/claude-watchdog/scripts/setup.sh
You'll need:
https://api.telegram.org/bot<TOKEN>/getUpdatespython3 -c "from pathlib import Path; import json; print(json.load(open(Path.home() / '.openclaw/openclaw.json'))['gateway']['auth']['token'])"
18789The setup script writes config, installs cron jobs, and runs an initial check.
To uninstall (removes cron jobs, optionally config/state):
bash /path/to/skills/claude-watchdog/scripts/setup.sh --uninstall
Stored in ~/.openclaw/skills/claude-watchdog/claude-watchdog.env. To reconfigure, either re-run setup.sh or edit this file directly — changes take effect on the next cron run (within 15 minutes).
TELEGRAM_BOT_TOKEN=...
TELEGRAM_CHAT_ID=...
OPENCLAW_GATEWAY_TOKEN=...
OPENCLAW_GATEWAY_PORT=18789
MONITOR_MODEL=sonnet
PROBE_MODEL=openclaw
PROBE_AGENT_ID=main
| Variable | Default | Description |
|---|---|---|
TELEGRAM_BOT_TOKEN | (required) | Telegram bot token from @BotFather |
TELEGRAM_CHAT_ID | (required) | Target chat for alerts |
OPENCLAW_GATEWAY_TOKEN | (required) | Auth token for the local OpenClaw gateway |
OPENCLAW_GATEWAY_PORT | 18789 | Port the OpenClaw gateway listens on |
MONITOR_MODEL | sonnet | Model name to match in status incidents (e.g. "sonnet", "haiku") |
PROBE_MODEL | openclaw | Model alias sent to the gateway for latency probes. openclaw uses the gateway's default model routing |
PROBE_AGENT_ID | main | Value of the x-openclaw-agent-id header sent with probes |
FILTER_KEYWORDS | (none) | Comma-separated keywords to filter out of status alerts (e.g. "skills,Artifacts,Memory"). Empty = receive all alerts |
Scripts also accept these as environment variables (env file takes priority).
The env file contains sensitive tokens (Telegram bot token, gateway token). The setup script sets permissions to 600 (owner-only read/write). If you create or edit the file manually, ensure restricted permissions:
chmod 600 ~/.openclaw/skills/claude-watchdog/claude-watchdog.env
Status incident:
🟠 Anthropic Status: Partially Degraded Service
📌 Elevated error rates on Claude 3.5 Haiku (not our model)
Status: Investigating
Update: "We are investigating increased error rates..."
Components:
🟠 API: partial outage
🔗 https://status.claude.com
Latency spike:
🟡 Anthropic API — High Latency Detected
Current: 12.3s
Baseline: 3.1s (median of last 19 samples)
Ratio: 4.0×
Slow responses are expected right now.
Recovery:
✅ Anthropic API — Latency Back to Normal
Current: 2.8s
Baseline: 3.1s
Was: 12.3s when alert fired
All state and log files are stored in ~/.openclaw/skills/claude-watchdog/:
| File | Purpose |
|---|---|
claude-watchdog-status.json | Status check state |
claude-watchdog-latency.json | Latency probe state & samples |
claude-watchdog-status.log | Status check log |
claude-watchdog-latency.log | Latency probe log |
Edit constants at the top of latency-probe.py:
| Constant | Default | Meaning |
|---|---|---|
ALERT_MULTIPLIER | 2.5 | Alert if latency > N× baseline median |
ALERT_HARD_FLOOR | 10.0s | Always alert above this absolute threshold |
RECOVER_MULTIPLIER | 1.5 | Clear alert when below N× baseline |
BASELINE_WINDOW | 20 | Rolling sample window size |
BASELINE_MIN_SAMPLES | 5 | Minimum samples before alerting starts |
PROBE_TIMEOUT | 45s | Give up on probe after this long |