Summary
Move three monitoring jobs from OpenClaw cron to clawhip native periodic events, routed to #work-intake (1506217431465463929).
Background
These were previously OpenClaw cron jobs but should live in clawhip since:
- clawhip is the event ingress layer
- clawhip survives OpenClaw restarts
- keeps monitoring independent of the system being monitored
New Periodic Monitors
1. Error Log Scanner
[[monitors.logwatch]]
name = "openclaw-gateway"
path = "/tmp/openclaw/openclaw-{date}.log"
patterns = ["ERROR", "FATAL", "crash", "panic", "unhandled", "ECONNREFUSED"]
interval_secs = 900 # 15 min
channel = "1506217431465463929" # #work-intake
mention = "<@1486621536520769547>" # 이연
format = "alert"
[[monitors.logwatch]]
name = "clawhip"
path = "/Users/iyen/.clawhip/clawhip.log"
patterns = ["ERROR", "FATAL", "panic"]
interval_secs = 900
channel = "1506217431465463929"
mention = "<@1486621536520769547>"
format = "alert"
Behavior:
- Scan last N lines (configurable, default 200) for pattern matches
- On match: emit
logwatch.{name}.alert event with matched lines
- Dedup: don't re-alert for the same error within cooldown window
- No match: silent
2. Config Change Health Check
[[monitors.filewatch]]
name = "openclaw-config"
path = "/Users/iyen/.openclaw/openclaw.json"
interval_secs = 600 # 10 min
on_change = "health_check"
health_url = "http://localhost:18789/health"
channel = "1506217431465463929"
mention = "<@1486621536520769547>"
Behavior:
- Track file mtime; on change, hit health_url
- If health check fails after config change: emit
filewatch.{name}.unhealthy
- If healthy: silent
3. Stale PR/Issue Scanner
[[monitors.stale]]
interval_secs = 604800 # weekly (or cron = "0 10 * * 1")
repos = ["IYENTeam/Hent-ai", "IYENTeam/clawhip", "IYENTeam/openclaw-extensions"]
stale_days = 3
channel = "1506217431465463929"
mention = "<@1486621536520769547>"
Behavior:
- Weekly scan of open PRs and issues via GitHub API
- Filter items with no update in
stale_days
- Emit
stale.report event with summary table
- No stale items: emit brief "all clear" or silent
Routing
All three emit events routed to #work-intake:
[[routes]]
event = "logwatch.*"
sink = "discord"
channel = "1506217431465463929"
format = "alert"
mention = "<@1486621536520769547>"
[[routes]]
event = "filewatch.*"
sink = "discord"
channel = "1506217431465463929"
format = "alert"
mention = "<@1486621536520769547>"
[[routes]]
event = "stale.*"
sink = "discord"
channel = "1506217431465463929"
format = "alert"
mention = "<@1486621536520769547>"
Relation
Acceptance Criteria
Summary
Move three monitoring jobs from OpenClaw cron to clawhip native periodic events, routed to #work-intake (1506217431465463929).
Background
These were previously OpenClaw cron jobs but should live in clawhip since:
New Periodic Monitors
1. Error Log Scanner
Behavior:
logwatch.{name}.alertevent with matched lines2. Config Change Health Check
Behavior:
filewatch.{name}.unhealthy3. Stale PR/Issue Scanner
Behavior:
stale_daysstale.reportevent with summary tableRouting
All three emit events routed to #work-intake:
Relation
Acceptance Criteria