Skip to main content

Automate With Cron

Cron is Anyy's resident scheduler. Use it for reminders, recurring agent turns, scheduled skill work, notification-style jobs, and script jobs that run inside the gateway runtime.

For the full behavior reference, see Cron.

Resident runtime required

Cron runs inside the resident gateway. Creating or editing jobs writes local state, but scheduled work only fires while the gateway scheduler is running.

Choose The Right Job Shape

NeedUse
One reminder messageAsk in chat, or create a notify/reminder job.
Recurring agent workanyy cron create --prompt ... or ask Anyy to schedule it.
Repeatable skill workflowAdd --kind skill --skills name1,name2.
No LLM neededCreate a script job under <home>/scripts.

A scheduled prompt is not your current foreground chat. Put the sources, instructions, output format, delivery expectation, and quiet-case behavior in the job itself.

Create A Reminder

From chat:

Remind me in 30 minutes to check the build.

From CLI:

anyy cron create \
--name "Check build" \
--schedule "30m" \
--kind notify \
--prompt "Check the build."

Model-created reminders store as notification-style cron jobs with reminder metadata. CLI-created notify jobs use the stored prompt as the delivered message.

Create A Recurring Agent Job

Use a simple interval:

anyy cron create \
--name "Hourly inbox check" \
--schedule "every 1h" \
--prompt "Check what needs my attention and summarize it."

Use the supported advanced cron subset when you need a wall-clock minute or hour:

anyy cron create \
--name "Morning summary" \
--schedule "0 9 * * *" \
--prompt "Send my morning summary."

The current parser accepts five-field expressions only when day, month, and weekday are *; minute and hour may be * or a single number. Examples:

0 9 * * * # every day at 09:00
30 * * * * # every hour at minute 30
* 14 * * * # every minute during hour 14

Calendar-style recurrence is not supported yet. Advanced cron schedules require a reliable IANA timezone. If Anyy cannot resolve one, creation is rejected instead of silently guessing.

Run A Script Job

Use script jobs when the script already produces the output you want and no model reasoning is needed.

Put executable scripts under the profile's scripts/ directory:

mkdir -p ~/.anyy/scripts
$EDITOR ~/.anyy/scripts/check-build.sh
chmod +x ~/.anyy/scripts/check-build.sh

Then schedule the script by name:

anyy cron create \
--name "Build watchdog" \
--schedule "every 30m" \
--script check-build.sh \
--delivery-target current_user_default \
--delivery-channel telegram

The runtime resolves the script inside <home>/scripts, runs it with the subprocess environment, and stores stdout/stderr as the cron result. A script path that resolves outside the scripts directory is rejected.

Deliver To A Channel

Deliver through a configured channel:

anyy cron create \
--name "Weixin digest" \
--schedule "0 9 * * *" \
--prompt "Send my morning digest." \
--delivery-target current_user_default \
--delivery-channel weixin

The channel must already be configured and able to deliver messages through the gateway. current_user_default also needs a matching default channel binding.

Other delivery targets are gateway, origin, and none. none is available for CLI-created jobs but is rejected by model-created automation tools because it is reserved for internal scheduler jobs.

Inspect History

List jobs:

anyy cron list
anyy cron list --include-disabled

From a conversation, ask Anyy to list scheduled automations or show recent automation history. The model-visible automation tools expose job creation, updates, deletion, run-now, and history for user-visible job kinds. Script jobs are intentionally CLI-created rather than model-created.

Edit Or Delete

Pause:

anyy cron update --id cron_123 --disable

Resume:

anyy cron update --id cron_123 --enable

Change schedule or prompt:

anyy cron update \
--id cron_123 \
--schedule "every 2h" \
--prompt "Send a shorter summary."

Delete:

anyy cron delete --id cron_123

Use --role, --workspace, or --all-scopes when the job was created under a different runtime scope than the CLI default.

Troubleshooting

SymptomCheck
Job did not runConfirm anyy gateway status and anyy doctor; cron runs inside the resident runtime.
Cron expression rejectedUse a duration, every <duration>, an RFC3339 timestamp, or the supported minute/hour cron subset.
No channel deliveryConfirm the channel is configured, channels doctor passes, and the delivery target can resolve.
Job is not listedPass --include-disabled, --role, --workspace, or --all-scopes.
Script job failedConfirm the script is executable, lives under <home>/scripts, and does not rely on missing environment.