Skip to main content

Scheduling

Schedules let you run agents or orchestrations automatically on a time-based trigger — either on a fixed interval or a cron expression.

Creating a schedule

Go to Settings → Schedules → Add Schedule.

Fields

FieldTypeDescription
NamestringDisplay name
DescriptionstringWhat this schedule does
Target typeagent or orchestrationWhat to run
TargetAgent / OrchestrationThe specific agent or orchestration
PromptstringInitial message or input sent to the target
Schedule typeinterval or cronHow to trigger
EnabledboolActive or paused
Missed run policyrun_immediately or skipWhat to do if a run was missed (e.g. while Synapse was down)

Interval schedules

Run every N minutes, hours, or days.

FieldDescription
interval_valueThe number (e.g. 30)
interval_unitminutes, hours, or days

Examples:

  • Every 30 minutes: interval_value: 30, interval_unit: minutes
  • Every 6 hours: interval_value: 6, interval_unit: hours
  • Every day: interval_value: 1, interval_unit: days

Cron schedules

Use standard 5-field cron syntax for precise timing.

FieldDescription
cron_expressionStandard cron (e.g. 0 8 * * 1-5)

Examples:

ExpressionMeaning
0 8 * * *Every day at 8 AM
0 8 * * 1-5Every weekday at 8 AM
0 9,17 * * *Twice daily at 9 AM and 5 PM
0 0 1 * *First day of each month at midnight
*/15 * * * *Every 15 minutes

Cron uses UTC by default.


What happens when a schedule fires

  1. Synapse creates a new session for the run
  2. Sends the configured prompt to the target agent or orchestration
  3. The agent runs its full ReAct loop
  4. Results are saved to logs
  5. If a messaging channel is configured on the target, the result is also sent to the channel

Manual trigger

To run a schedule immediately (without waiting for the next scheduled time):

  • In the UI: click Run Now on the schedule card
  • Via API:
curl -X POST http://localhost:8000/api/schedules/{schedule_id}/run

Missed runs

If Synapse was stopped and a scheduled run was missed:

PolicyBehaviour
run_immediatelyRun the missed job immediately on restart
skipSkip the missed run, wait for the next scheduled time

Example: Daily sales report

{
"name": "Daily Sales Report",
"description": "Run the sales report every morning at 8 AM",
"target_type": "orchestration",
"target_id": "orch-sales-report",
"prompt": "Generate the sales report for yesterday",
"schedule_type": "cron",
"cron_expression": "0 8 * * 1-5",
"enabled": true,
"missed_run_policy": "skip"
}

Example: Hourly health check

{
"name": "Hourly Health Check",
"target_type": "agent",
"target_id": "agent-monitor",
"prompt": "Check all services and report any anomalies",
"schedule_type": "interval",
"interval_value": 1,
"interval_unit": "hours",
"enabled": true,
"missed_run_policy": "run_immediately"
}