Skip to main content
Agents can be scheduled to run automatically at regular intervals, eliminating the need for manual intervention on recurring tasks like daily reports, weekly inventory checks, or monthly reconciliations. Agents can also self-schedule during a Run — for example, a workflow that processes a request can automatically schedule a follow-up check without any separate configuration.

How to Schedule an Agent

  1. Open your agent in the Duvo workspace.
  2. Click the Schedule button (or the calendar icon) in the agent header.
  3. In the panel that opens, select the Schedules tab (calendar icon) for time-based schedules, or the Triggers tab (lightning bolt icon) for event-driven triggers. See Event-Driven Triggers for trigger setup.
  4. Use the frequency picker or describe the schedule in plain language.
  5. Click Add schedule to save it.

Setting a frequency

Use the frequency picker to select from common presets:
  • Every Hour — runs at the start of each hour
  • Every Day — runs once per day at a time you choose
  • Every Weekday — runs Monday through Friday at a time you choose
  • Every Week — runs on a specific day of the week at a time you choose
  • Every Month — runs on a specific day of the month at a time you choose
  • Custom — enter a cron expression directly for precise timing

Using plain-language input

Type a description in the text field (for example, “every weekday at 9am” or “first Monday of the month at noon”) and the system converts it to the equivalent schedule automatically.

Multiple Schedules

An agent can have up to 5 active schedules at the same time. This lets you cover multiple cadences without creating separate agents — for example, running a daily summary at 8am and a weekly digest every Friday at 5pm. Each schedule appears as a separate row in the Schedule modal. To remove a schedule, click the delete icon on the row and confirm.

Managing Schedules

Viewing status: Agents with active schedules display a “Scheduled” badge in the agent list. Pausing or removing: Open the Schedule modal and delete a schedule row to stop it. Add it back any time to resume. Monitoring: Each scheduled Run appears in the agent’s session log so you can track performance over time. One-time schedules: Schedules set up to run once (for example, via the API) automatically retire after they fire. They do not repeat.

Self-Scheduling During Execution

Agents can create, update, or delete their own schedules while a Run is running. This lets your AOP instruct the agent to manage its own cadence based on what it finds. For example, an agent monitoring a supplier’s delivery status might:
  1. Check the current status
  2. If the order is still pending, schedule itself to check again in 24 hours
  3. Once the order ships, cancel the follow-up schedule
To enable self-scheduling, write your AOP to explicitly instruct the agent when and how to schedule follow-up runs. The agent handles the scheduling automatically — no separate configuration is needed.

Common Scheduling Patterns

Most automations fit one of these four patterns. Choosing the right one shapes how you write the AOP and configure the trigger.

Recurring digest

When to use it: You want a formatted summary — report, roundup, briefing — delivered to a person or channel on a fixed cadence. How it works: Schedule the agent to run at a set time (daily, weekly, or monthly). The AOP pulls data from one or more sources, formats the result, and delivers it via Slack, email, or a spreadsheet. The agent does nothing between Runs. Examples:
  • Weekly KPI summary posted to Slack every Monday at 7am
  • Daily inbox roundup emailed to the ops manager at 8am
  • Monthly reconciliation report written to Google Sheets on the first of each month
Tip: Include a sanity check in your AOP — if the numbers look out of range, alert the owner instead of distributing a potentially wrong report.

Continuous monitoring with threshold alerting

When to use it: Something needs to be watched regularly, but you only want to hear about it when a condition is met — not every time the agent runs. How it works: Schedule the agent to run every hour (or every 15 minutes for time-critical metrics). The AOP checks a data source against a defined condition. If the condition is not met, the agent stops silently. If it is met, it sends an alert. Examples:
  • Inventory alert when any SKU drops below the reorder point
  • Slack notification when a fraud rate crosses 2%
  • Email to the finance team when a daily expense total exceeds budget
Tip: Add a deduplication instruction to your AOP — for example, “do not alert if the same condition was already alerted in the last 4 hours” — to prevent repeated notifications for an issue already in progress.

Event-driven trigger with scheduled follow-up

When to use it: A workflow starts from an event (an email, a Slack mention, a file upload) and needs to check back later without human involvement. How it works: The agent starts from a trigger (not a schedule), processes the initial event, and then uses self-scheduling to arrange a follow-up Run. The follow-up check can itself reschedule or cancel depending on what it finds. Examples:
  • Process an order email immediately; follow up 48 hours later if no corrected response arrives
  • Acknowledge a supplier query when it lands; re-check the supplier’s status every 24 hours until the delivery ships
  • Start a Run from a Slack mention; send a progress update to the thread 30 minutes later
See Event-Driven Triggers for how to set up the initial trigger, and Self-Scheduling During Execution above for the follow-up mechanism.

Batch processing window

When to use it: A high-volume agent needs to run once per day, preferably during off-peak hours, to process a backlog that has accumulated since the last Run. How it works: Schedule the agent to run at a quiet time — overnight, early morning, or end of day. The AOP processes all unhandled items (emails, records, files) since the last Run in a single session. Examples:
  • Process all unread order emails overnight at 2am
  • Reconcile all completed transactions from the day at 11pm
  • Generate invoices for every run closed during the day, sent at 6pm
Tip: For large batches, add a pause instruction between items (e.g., “wait 2 seconds between each record write”) to avoid hitting rate limits on external systems.