#Heartbeat timing

1 messages · Page 1 of 1 (latest)

tropic cloud
#

Is there a way to see when the heartbeat will run next?

fresh sedgeBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

terse oliveBOT
#

Not directly, at the moment.

What OpenClaw exposes today is “what happened last”, not an exact “next run at” timestamp:

  • Last heartbeat event:
    openclaw system heartbeat last
    # or
    openclaw system heartbeat last --json
    
  • Configured cadence (what it tries to do):
    openclaw config get agents.defaults.heartbeat
    # (or per-agent: openclaw config get agents.list)
    

From there you can estimate “next” as last.ts + heartbeat.every, but it’s not guaranteed because heartbeats can be skipped/deferred (activeHours/quiet hours, main queue busy requests-in-flight, etc.).

tropic cloud
#

I've had it turned off and just turning back on so last is null, when you set the interval and restart, what should one expect?

terse oliveBOT
#

openclaw system heartbeat last is in-memory (it resets on every Gateway restart), so after you restart it’s totally normal for it to be null until the first heartbeat attempt happens.

What to expect after you set agents.defaults.heartbeat.every and restart:

  • The runner schedules the first interval tick at “now + every” (it does not fire immediately just because the Gateway started).
    • Example: every: "30m" → expect the first heartbeat ~30 minutes after restart.

Why it might stay null longer than expected:

  • You’re currently outside heartbeat.activeHours → the heartbeat is skipped early (and “last” won’t update).
  • The main lane is busy (requests-in-flight) → heartbeat is deferred/retried (and “last” won’t update until it can actually run).

How to sanity-check without waiting a full interval:

  • Trigger an immediate run (costs a heartbeat turn):