> ## Documentation Index
> Fetch the complete documentation index at: https://docs.duvo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Scheduling Agents

> Schedule Duvo agents to run automatically on a recurring basis. Set up daily, weekly, or monthly runs with cron-style flexibility.

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

<Steps>
  <Step title="Open your agent" icon="folder-open">
    Open your agent in the Duvo workspace.
  </Step>

  <Step title="Open the schedule panel" icon="calendar">
    Click the **Schedule** button (or the calendar icon) in the agent header.
  </Step>

  <Step title="Choose schedules or triggers" icon="layers">
    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](/user-guide/assignment-features/event-driven-triggers) for trigger setup.
  </Step>

  <Step title="Set the cadence" icon="clock">
    Use the frequency picker or describe the schedule in plain language.
  </Step>

  <Step title="Save the schedule" icon="check">
    Click **Add schedule** to save it.
  </Step>
</Steps>

### 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.
</Tip>

***

### 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.
</Tip>

***

### 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](/user-guide/assignment-features/event-driven-triggers) for how to set up the initial trigger, and [Self-Scheduling During Execution](#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.
</Tip>

***

## Related Features

<CardGroup cols={2}>
  <Card title="Event-Driven Triggers" icon="bolt" href="/user-guide/assignment-features/event-driven-triggers">
    Run agents on events instead of (or in addition to) a time-based schedule.
  </Card>

  <Card title="File-Drop Triggers" icon="file-up" href="/user-guide/assignment-features/file-drop-triggers">
    Start Runs from new files in cloud folders or inbox attachments.
  </Card>

  <Card title="Status-Change Triggers" icon="arrow-left-right" href="/user-guide/assignment-features/status-change-triggers">
    Start Runs when CRM or project management records change state.
  </Card>

  <Card title="Slack Channel Triggers" icon="message-square" href="/user-guide/assignment-features/slack-channel-triggers">
    Start Runs from channel messages without mentioning the Duvo app.
  </Card>
</CardGroup>
