The AI wakes up periodically to check on things β you don't have to ask.
- A
node-cronscheduler fires at your chosen interval (default: every 30 minutes) - The AI reads
~/.openwhale/HEARTBEAT.mdif it exists for task context - It runs a full agent turn with tool access β can check inboxes, run commands, etc.
- If nothing needs attention, it replies
HEARTBEAT_OK(suppressed, you won't see it) - If something needs your attention, the alert appears in your dashboard chat
Implementation: src/heartbeat/
From the Dashboard:
- Go to Settings
- Find the π Heartbeat card
- Check Enable Heartbeat
- Choose your interval, model, and active hours
- Click Save Heartbeat Settings
Create ~/.openwhale/HEARTBEAT.md with tasks for the AI to monitor:
# Heartbeat Tasks
- [ ] Check if the staging server is still running
- [ ] Look for new GitHub issues on my repo
- [ ] Remind me about the meeting at 3pmThe AI reads this file every heartbeat tick and acts on it. If the file is empty or only has headers, the tick is skipped to save API calls.
| Setting | Default | Description |
|---|---|---|
| Enabled | Off | Toggle heartbeat on/off |
| Interval | 30m | 5m, 10m, 15m, 30m, 1h, 2h |
| Model | Default | Use a cheaper model to save costs |
| Active Hours | Always | e.g., 08:00β24:00 to skip overnight |
| Custom Prompt | (built-in) | Override the default heartbeat instructions |
When the AI has nothing to report, it responds with HEARTBEAT_OK. These replies are automatically suppressed so you only see alerts when something actually needs your attention. This keeps your dashboard clean and saves you from notification fatigue.