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.
Add a job
Section titled “Add a job”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:
wayland-core cron add "0 9 * * *" --skill helloRun a slash command:
wayland-core cron add "*/15 * * * *" --slash "/status"Send text to a channel (here, a daily 8am message to the team channel):
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.
List, remove, enable, disable
Section titled “List, remove, enable, disable”wayland-core cron list # every persisted job, with its UUIDwayland-core cron remove <ID> # delete a jobwayland-core cron disable <ID> # keep on disk, skip on the runnerwayland-core cron enable <ID> # turn it back onThe UUID printed by cron add and cron list is what you pass to the other commands.
Inspect a job
Section titled “Inspect a job”wayland-core cron status <ID> # id, expression, target, state, last firewayland-core cron history <ID> -n 10 # last N fire recordswayland-core cron logs <ID> -n 50 # fire records as structured log lineshistory and logs read the JSONL ring buffer the runner writes alongside the job store.
Where jobs live
Section titled “Where jobs live”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.