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

# Schedules and triggers

> Manual vs cron schedules, time zones, pause, and next run

Routines use the same **linear designer** as workflows. The orange **trigger** node on the left defines *when* the first step may run. Scheduled routines also expose **Activate schedule** in the toolbar.

![SET TRIGGER panel with schedule presets and Activate schedule in the designer](https://raw.githubusercontent.com/ctrlnode-ai/ctrlnode/docs/product-screenshots/docs/product-screenshots/13-routine-set-trigger.png)

## SET TRIGGER panel

Select the trigger node (dashed orange card) to open **SET TRIGGER** on the right:

| Control      | Purpose                                                     |
| ------------ | ----------------------------------------------------------- |
| **Manual**   | No automatic cron — runs only when you start one explicitly |
| **Hourly**   | Repeat every N hours                                        |
| **Daily**    | Once per day at a chosen time                               |
| **Weekdays** | Monday–Friday at a chosen time                              |
| **Weekly**   | One weekday + time                                          |
| **Custom**   | Pick specific weekdays + time                               |

Presets are stored as a **cron expression** with an optional **IANA time zone** (for example `Europe/Madrid`). The designer shows **Next run** when a schedule is configured.

Under **Triggers**, you see which **steps** the timer node links to (for example **Step 1**). Those links are created on the canvas; the panel lists them for clarity.

<Note>
  For definitions that belong to a **Routine** record, the trigger may be read-only in the designer with a link to **Edit Routine Settings**. Change cron and time zone on the routine detail page in that case.
</Note>

## Activate schedule

When the definition has a schedule (timer node or stored cron metadata), the top toolbar shows **▶ Activate schedule** instead of only **Run now**.

| State                         | What it means                                                                                            |
| ----------------------------- | -------------------------------------------------------------------------------------------------------- |
| **Activate schedule** (green) | Cron is **off** — the definition is saved but the platform will **not** auto-start runs at `next_run_at` |
| **● Live · click to pause**   | Cron is **on** — the scheduler may fire when the next run is due                                         |
| **Saving…**                   | Toggle is persisting — wait before leaving the page                                                      |

Activating or pausing the schedule **does not require Bridge**. Bridge is still required when a run actually **dispatches tasks** to agents.

Manual presets still allow **Run now** (or API) for an immediate run even when the schedule is paused.

## Schedule types (summary)

| Preset       | Behavior                                                  |
| ------------ | --------------------------------------------------------- |
| **Manual**   | Runs only when you click **Run now** (or trigger via API) |
| **Hourly**   | Every N hours (configurable interval)                     |
| **Daily**    | Once per day at a chosen time                             |
| **Weekdays** | Monday–Friday at a chosen time                            |
| **Weekly**   | One day per week at a chosen time                         |
| **Custom**   | Select specific weekdays + time                           |

## Enable / pause (routine list)

From the routines list you can also **Pause** a routine — the definition stays saved but automatic runs stop until re-enabled. That is equivalent to keeping the designer schedule **not Live**.

## What triggers a run

| `triggered_by` | Meaning                                                                                |
| -------------- | -------------------------------------------------------------------------------------- |
| `manual`       | You clicked **Run now** in the app (or an API/manual start)                            |
| `scheduler`    | Background scheduler started a run because cron was **Live** and `next_run_at` was due |

<Tip>
  If Bridge is offline, scheduled or manual runs may fail to dispatch agents — fix connectivity under [Bridge Setup](/getting-started/bridge-setup) first.
</Tip>

## Step dependencies

How steps link to each other (sources and destinations) is documented in [Steps & activation](/workflows/steps-and-activation#linking-steps-sources-and-destinations) — the same designer is used for multi-step routines and workflows.

## Calendar view

`/projects/{projectId}/routines/calendar` shows upcoming and past scheduled events for all routines in the project.

Next: [Runs & history](/routines/runs-and-history)
