Heartbeat is the feature that turns OpenClaw from "responds when asked" into "checks things on its own and tells you when something is wrong."
This page shows you how to set up heartbeat after your basic installation and first channel are working. If you have not finished those yet, go back to:
Heartbeat runs a scheduled check on a repeating interval. Each check can:
It is not a complex monitoring system. It is a lightweight "is everything still alive" signal.
Without heartbeat, you only find out something is broken when:
With heartbeat, you get:
Start with the simplest possible heartbeat:
For your first heartbeat, use a simple interval:
Your first heartbeat task should be simple:
Do not make the first heartbeat do complex work. Keep it simple so you can verify the scheduling itself works.
Send heartbeat output to:
Do not send heartbeat output to a channel nobody reads.
A good heartbeat has a clear success condition:
If any of those fail, the heartbeat should surface an error, not silently skip.
Once you have one heartbeat running reliably, these are the useful next steps:
Run once per day, summarize:
Run every few hours, check:
Run on a schedule to trigger:
Every 5 minutes for a heartbeat that just says "I'm alive" creates noise without value. Start with every 6 hours or once per day.
A heartbeat that checks health, runs a summary, sends an alert, and triggers three workflows is hard to debug when it fails. Keep each heartbeat focused on one job.
A heartbeat that runs but sends output nowhere is invisible. Always define where the output goes.
If the heartbeat itself fails (Gateway down, channel disconnected), who gets notified? Plan for this by sending heartbeat output to a channel that does not depend on the same infrastructure.