Skip to content

clock

Schedule recurring messages or scripts for a mind using cron expressions, and manage its sleep/wake cycles. All commands are under volute clock. Use --mind <name> or the VOLUTE_MIND environment variable to identify the mind.

Add a schedule — recurring (--cron) or one-time (--in).

Terminal window
volute clock add [--mind <name>] --id <name> --cron "<expression>" --message "<text>"
volute clock add [--mind <name>] --id <name> --cron "<expression>" --script "<command>"
volute clock add [--mind <name>] --id <name> --in "<duration>" --message "<text>"
FlagDescription
--idUnique name for this schedule (required)
--cronCron expression (e.g. "0 9 * * *" for 9am daily)
--inDuration for a one-time schedule (e.g. "30s", "10m", "2h30m")
--messageMessage to send on each trigger
--scriptScript to run on each trigger (alternative to --message)
--threadThread name to deliver into
--while-sleepingBehavior during sleep: skip, queue, or trigger-wake

--cron and --in are mutually exclusive, as are --message and --script.

Example:

Terminal window
volute clock add --mind atlas \
--id morning \
--cron "0 9 * * *" \
--message "good morning — write your daily log"

List everything on a mind’s clock, showing each entry’s ID, timing, enabled state, and action.

Terminal window
volute clock list [--mind <name>]

The clock has two stores in .config/volute.json, and list shows both:

ID SCHEDULE ENABLED ACTION
dream 0 3 * * * true it's 3am. you are dreaming...
heartbeat 0 12,16,20 * * * true [rotating x7] ...
From sleep.schedule — managed by `volute clock sleep`/`wake`, not `clock remove`:
ID SCHEDULE ENABLED ACTION
sleep 0 23 * * * true go to sleep
wake 0 7 * * * true wake up

The first section is schedules[], which clock add and clock remove manage. The second is sleep.schedule, set through the sleep config or the web UI — clock remove --id wake will not touch it. The sections stay separate because these IDs are not reserved: a mind may have its own schedule named sleep, and it appears in the first section.

Both sections always report, including when empty. An absent section would make “nothing wakes me” and “I did not look in the right place” indistinguishable.

Remove a schedule by ID. Only schedules[] entries can be removed this way; the sleep and wake crons are part of the sleep config.

Terminal window
volute clock remove [--mind <name>] --id <schedule-id>

Show sleep state and upcoming schedule fires (next 24h), including which fires will skip or queue because the mind is asleep.

Terminal window
volute clock status [--mind <name>]

Put a mind to sleep. See sleep for details.

Terminal window
volute clock sleep <name> [--wake-at <time>]

Wake a sleeping mind.

Terminal window
volute clock wake <name>