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.
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
| Need | Use |
|---|---|
| One reminder message | Ask in chat, or create a notify/reminder job. |
| Recurring agent work | anyy cron create --prompt ... or ask Anyy to schedule it. |
| Repeatable skill workflow | Add --kind skill --skills name1,name2. |
| No LLM needed | Create 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
| Symptom | Check |
|---|---|
| Job did not run | Confirm anyy gateway status and anyy doctor; cron runs inside the resident runtime. |
| Cron expression rejected | Use a duration, every <duration>, an RFC3339 timestamp, or the supported minute/hour cron subset. |
| No channel delivery | Confirm the channel is configured, channels doctor passes, and the delivery target can resolve. |
| Job is not listed | Pass --include-disabled, --role, --workspace, or --all-scopes. |
| Script job failed | Confirm the script is executable, lives under <home>/scripts, and does not rely on missing environment. |