Automation and cron
Sigil can schedule work to run later or on a repeat. Jobs live on the graph as CronJob
nodes (no jobs.json); each fire records a CronRun.
From chat
Just ask — "every morning summarize my notes", "in 2 hours check the build", "on a cron
at 9am email me". The agent calls schedule_task, and you manage jobs with
list_scheduled / cancel_scheduled.
Schedule kinds
| Kind | Spec | Example |
|---|---|---|
at |
a relative time (30m, 2h, 1d), ISO timestamp, or epoch-ms |
one-shot; auto-deletes after a successful run |
every |
interval in seconds | every 3600 = hourly |
cron |
a 5-field cron expression (+ optional tz) | 0 9 * * * = 9am daily |
From the CLI
sigil cron add <name> <at|every|cron> <spec> "<task>" [tz] [channel]
sigil cron list
sigil cron show <name>
sigil cron runs <name> # run history
sigil cron rm <name>
sigil cron enable|disable <name>
sigil cron tick # fire any due jobs now
Firing the scheduler
cron_tick fires all due jobs. In production it's driven by the jac-scale scheduler
(server mode); locally you can run it from an external cron/daemon or hit the tick
manually. Each fire runs the job's task through the normal solve/agent path and records
the outcome as a CronRun (visible via sigil cron runs <name> and the tasks ledger).
Delivery
A job may name a channel; its result can be delivered there (see channels).
The unified background ledger — sigil tasks list / tasks show <n> — shows solve
attempts and cron fires together, newest first.