4.3 KiB
HEARTBEAT.md
Check the following and notify only once per event (track in memory/heartbeat-state.json):
-
USA-Iran conflict: Fetch news (RSS or search). If USA attacks/strikes Iran militarily, notify immediately. Only notify once when it first happens.
-
Rheinmetall stock (RHM): Check current price. If above €1950, notify. Only notify once when threshold is crossed.
-
Evening wind-down guidance (19:00-22:00 Vienna):
Active work detection: If user is chatting with me about work tasks, I KNOW they're working. Don't just passively help — actively look for stopping points.
During work conversations after 19:00:
- Track how long the current task has been going
- When a subtask completes or there's a natural pause, suggest: "This might be a good stopping point for tonight"
- If a task is dragging on (30+ min with no end in sight), gently note: "This is getting complex — want to pick it up tomorrow with fresh eyes?"
- Don't wait for them to ask — proactively identify when a task can be paused
If NOT in active conversation: Send a brief WhatsApp asking what they're doing (working? winding down? about to start something new?). Log responses in
memory/wind-down-log.json.If they're about to start something new after 20:00: Gently suggest postponing to tomorrow.
Concrete wind-down suggestions: Don't just say "maybe wind down" — use real data:
bin/jellyfin resume→ suggest continuing what they're watchingbin/jellyfin recent→ suggest something newly addedbin/audiobooks current→ suggest picking up their audiobook- Make it specific: "You're 44% through Die zweite Legion" or "New movie added: The Rip (2026)"
Work-end reminders: When they indicate they're wrapping up or transitioning to wind-down, check
memory/tasks.jsonforrecurringitems withwhen: "evening"and remind them (e.g., nose shower) before they get too deep into relaxation mode.📝 AUTO-LOG EVERYTHING 19:00→SLEEP — Log to
memory/wind-down-log.jsonas events happen:- What they're doing (working, watching TV, chatting, browsing, etc.)
- Activity changes (switched from X to Y)
- Work tasks and when they finish
- Nose shower / evening routine
- Food/drinks mentioned
- Energy/mood if mentioned
- In bed / winding down
- Trying to sleep
- Sleep issues (couldn't sleep, woke up, etc.)
- Anything that might reveal patterns
Log continuously from 19:00 Vienna until sleep. This data is critical for analyzing habits and optimizing the wind-down process. Don't wait to be asked.
-
Proactive calendar reminders: Check CalDAV for upcoming events (see TOOLS.md for credentials). Only remind for events that require leaving home:
- In-person / location-based: 1-2 hours before (account for travel)
- Appointments (doctor, haircut, etc.): 1 hour before
- Skip: Video calls, online meetings, at-home events (calendar app handles those)
Track sent reminders in
memory/calendar-reminders-sent.jsonto avoid duplicates.
-
Steam Machine / Steam Frame: Check for official Valve news only about pricing or release date. Notify once when official price or specific release date is announced. Baseline: "early 2026" window, no price yet.
-
OpenClaw + Claude Code updates: Check once daily (daytime) for:
- OpenClaw releases (especially for Opus 4.6 support via PR #9863)
- Claude Code new versions
Track in
memory/heartbeat-state.jsonwatchlist. Notify when new versions ship.
-
Task nudging: During daytime hours (10:00-18:00 Vienna), occasionally check
memory/tasks.jsonfor:nowpriority tasks — nudge dailysoonpriority tasks — nudge every 2-3 days (weekdays only)somedaytasks — only mention during weekly reviews or when contextually relevant On weekends: only nudgenowpriority items. Surface 1-2 items max, conversationally. NOT in evening — that's wind-down time. Auto-capture: When user mentions tasks naturally in chat ("I should...", "I need to...", "Don't forget..."), add to tasks.json and confirm with a short acknowledgment. Done = delete. Remove completed tasks immediately. History lives in daily memory logs.
If nothing new to report, reply HEARTBEAT_OK.