Install
openclaw skills install durable-schedulerUse when the user needs durable, audited job scheduling beyond OpenClaw's built-in cron -- SQLite-backed scheduler with shell + agent steps, retries, approvals, and full run history. External service that calls the gateway over HTTP; survives gateway restarts.
openclaw skills install durable-schedulerA durable orchestration runtime for OpenClaw agents and shell workflows. SQLite-backed, runs as a separate launchd service (ai.openclaw.scheduler), keeps full run history, and supports chains like shell check -> agent diagnosis -> human approval -> remediation.
Source: github.com/amittell/openclaw-scheduler -- MIT Service label: ai.openclaw.scheduler (LaunchAgent or LaunchDaemon) Default location: ~/.openclaw/scheduler/ Runtime: Node.js 22+ (ESM), SQLite via better-sqlite3, cron via croner
Reach for openclaw-scheduler when one or more of these apply:
If the user just wants one cron line that fires occasionally, built-in OpenClaw cron is enough. Don't suggest the scheduler.
npm install -g openclaw-scheduler
openclaw-scheduler init
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ai.openclaw.scheduler.plist
openclaw-scheduler jobs list
The init step creates ~/.openclaw/scheduler/scheduler.db and the launchd plist. jobs list confirms the service is talking to its DB.
openclaw-scheduler jobs add \
--name "weekly digest" \
--cron "0 9 * * 1" \
--kind agent \
--to "@channel-id" \
--prompt "Summarize last week's incidents and post to #digest"
For shell jobs, swap --kind agent --prompt ... with --kind shell --command ....
Workflows chain steps with explicit retries and approvals:
openclaw-scheduler workflows add disk-watcher \
--step shell:check --command 'df -h | awk "$5+0>85"' \
--on-output --step agent:diagnose --to "@ops" \
--prompt "Investigate the failing disk and propose a fix" \
--then --step approval --approver "@alex" --timeout 30m \
--on-approve --step shell:remediate --command 'sudo /opt/sbin/cleanup-tmp.sh'
Each step persists state, retries on failure, and surfaces the run in jobs runs.
Agent jobs require the gateway to be reachable. The dispatcher calls waitForGateway(timeoutMs, intervalMs) before delivering; jobs queue up if the gateway is restarting and fire when it's ready again. Shell jobs run independently of gateway health.
openclaw-scheduler jobs list -- running, scheduled, pausedopenclaw-scheduler jobs runs <id> -- full run history with stdout/stderropenclaw-scheduler jobs approve <id> / reject <id> -- for approval stepsopenclaw-scheduler jobs pause/unpause <id> -- disable without deletingopenclaw-scheduler workflows list -- multi-step workflow statusThis tool replaces OpenClaw's built-in cron/heartbeat for hosts that need durability. It is not bundled with OpenClaw and not loaded as a plugin. The two can coexist (built-in cron handles agent heartbeats, openclaw-scheduler handles operator workflows), or operators can disable built-in cron and route everything through the scheduler.