Skip to content

Cron Scheduler

Wayland Core has a built-in scheduler. The cron subcommand manages jobs that fire on a schedule: a slash command, a message to a channel, or a skill invocation. Jobs persist to disk, and a background runner picks up changes on its next tick.

Every job needs a cron expression and exactly one target. The expression accepts the 5-field crontab shape or the 6-field form (with seconds).

Run a skill on a schedule:

Terminal window
wayland-core cron add "0 9 * * *" --skill hello

Run a slash command:

Terminal window
wayland-core cron add "*/15 * * * *" --slash "/status"

Send text to a channel (here, a daily 8am message to the team channel):

Terminal window
wayland-core cron add "0 8 * * 1" --channel team --text "Good morning"

--text is required with --channel. The --skill target takes an optional --args JSON object (default {}). The three targets are mutually exclusive.

Terminal window
wayland-core cron list # every persisted job, with its UUID
wayland-core cron remove <ID> # delete a job
wayland-core cron disable <ID> # keep on disk, skip on the runner
wayland-core cron enable <ID> # turn it back on

The UUID printed by cron add and cron list is what you pass to the other commands.

Terminal window
wayland-core cron status <ID> # id, expression, target, state, last fire
wayland-core cron history <ID> -n 10 # last N fire records
wayland-core cron logs <ID> -n 50 # fire records as structured log lines

history and logs read the JSONL ring buffer the runner writes alongside the job store.

Jobs persist to $WAYLAND_HOME/cron/jobs.json, falling back to ~/.wayland/cron/jobs.json. Fire history lands in history.jsonl in the same directory. Because the store re-reads from disk on every list call, the runner sees your edits without a restart.