Skip to content

Scheduler

IO includes a cron-based scheduling engine that runs recurring prompts automatically.

How It Works

Every 60 seconds, the scheduler checks all registered schedules against the current time. When a schedule is due, its prompt is sent to Io as a regular message.

Creating Schedules

Via Chat

"Schedule a daily standup summary every morning at 9am"
"Every Friday at 5pm, remind me to review open PRs"

Via API

bash
curl -X POST http://localhost:7777/api/schedules \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Daily Standup",
    "cron": "0 9 * * *",
    "prompt": "Summarize what the my-app squad accomplished yesterday",
    "enabled": true
  }'

Cron Syntax

Standard 5-field cron expressions:

┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-7, 0 and 7 = Sunday)
│ │ │ │ │
* * * * *

Examples

ExpressionSchedule
0 9 * * *Every day at 9:00 AM
0 9 * * 1-5Weekdays at 9:00 AM
*/30 * * * *Every 30 minutes
0 17 * * 5Fridays at 5:00 PM
0 0 1 * *First of every month at midnight

Managing Schedules

Schedules can be managed via the web dashboard (Schedules view), chat, or API:

bash
# List all schedules
curl http://localhost:7777/api/schedules

# Update a schedule
curl -X PUT http://localhost:7777/api/schedules/:id \
  -H "Content-Type: application/json" \
  -d '{"enabled": false}'

# Delete a schedule
curl -X DELETE http://localhost:7777/api/schedules/:id

Released under the MIT License.