# Scheduled Jobs & Automations

Cron-style automations that run a prompt at a set time.





A scheduled job is a prompt that runs on a cron schedule. Same prompt you'd type into a Slack channel or call from the API, just fired automatically. Good for digests, recurring reports, monitoring loops, and anything you'd otherwise nag yourself to remember.

Find them under [Automations](https://app.nairi.ai/agents/automations).

## Creating a scheduled job [#creating-a-scheduled-job]

1. Open **Automations** in the sidebar (under Agents).
2. On the **Scheduled Tasks*&#x2A; tab, click **+ Create Task**.
3. Fill in the form (covered below).
4. Click **Create Task**.

The job appears in the list. If **Enabled** is on, it'll fire at its next scheduled time.

## The form, field by field [#the-form-field-by-field]

### Platform [#platform]

Pick where the job's output should go:

* **Slack** — posts to a Slack channel.
* **Discord** — posts to a Discord channel.
* **API** — runs against a specific agent. No output channel, just a job you can query via the API. Useful when the prompt itself dispatches notifications.

The rest of the form changes based on what you pick here.

### Schedule (Cron Expression) [#schedule-cron-expression]

A five-field cron expression:

```
*  *  *  *  *
│  │  │  │  └── day of week (0–6, Sun–Sat)
│  │  │  └───── month (1–12)
│  │  └──────── day of month (1–31)
│  └─────────── hour (0–23)
└────────────── minute (0–59)
```

The dashboard renders a human-readable version under the field as you type ("Every weekday at 9:00 AM"). If you write an expression that fires more often than once per minute (e.g. `* * * * *` with seconds), the form warns you and refuses to save.

### Worked examples [#worked-examples]

| Expression       | Meaning                               |
| ---------------- | ------------------------------------- |
| `0 9 * * 1`      | Every Monday at 09:00                 |
| `0 9 * * 1-5`    | Weekdays at 09:00                     |
| `*/15 * * * *`   | Every 15 minutes                      |
| `0 0 1 * *`      | First of the month at midnight        |
| `0 9-17 * * 1-5` | Hourly during business hours, Mon–Fri |
| `30 6 * * *`     | Daily at 06:30                        |

### Timezone [#timezone]

Searchable dropdown of IANA timezones (e.g. `America/New_York`, `Europe/Sofia`, `Asia/Singapore`). Defaults to your org's timezone.

Two things to watch out for:

* **UTC vs local.** A schedule of `0 9 * * 1-5` in `UTC` is 09:00 UTC, which is the middle of the night on the US east coast. Be explicit about timezone for any time-of-day schedule.
* **Daylight saving transitions.** Jobs scheduled at 02:00 local time can skip or repeat on the day the clocks change. If you really need a specific UTC moment, use UTC.

### Post in thread &#x2A;(Slack / Discord only)* [#post-in-thread-slack--discord-only]

Controls where the job's output ends up in the channel.

* **On.** Each run posts a short top-level message ("Scheduled job triggered…") and puts the actual agent output as a reply in a thread under it. The channel stays scannable; only people who care about the details click in. Good for monitoring loops, status checks, debugging runs, anything that fires often.
* **Off.** The job's output goes straight to the channel as a top-level message that everyone sees in their feed. Good for weekly reports, broadcast announcements, anything you actually want people to read on their next channel visit.

If you're not sure, default it on for noisy jobs and off for jobs the team should see.

### Enabled [#enabled]

Toggle. When off, the job stays in the list but never fires. Easier than deleting if you're temporarily silencing something.

### Prompt [#prompt]

The instruction the agent receives. Same wording you'd type in chat. The agent has its full toolset for the run: rules, skills, MCPs, vaults.

Prompts are sent verbatim. There are no template variables (`{{date}}`, `{{now}}`, etc.) today. If you need a time-aware prompt, tell the agent to figure out the relevant time window itself:

```
Summarise yesterday's Linear activity:
- Total tickets opened / closed
- Bugs vs features
- Anything stuck for more than 7 days

Use the Linear MCP and post the result to #updates.
```

## Where to see past runs [#where-to-see-past-runs]

Click into a scheduled job and you'll see **Recent runs**. Each row links to the corresponding task on the [Tasks](https://app.nairi.ai/agents/tasks) page, where you can see the full transcript.

If a run failed, the row is flagged. The transcript shows the error.

## Recipe: daily standup digest [#recipe-daily-standup-digest]

Every weekday morning, summarise yesterday's work in Linear and GitHub and post the digest to a Slack channel.

**What you need**

* A Slack channel with an agent bound to it.
* A Linear MCP and a GitHub MCP attached to that agent.

**The prompt**

```
Summarise yesterday's team activity for the morning standup:
- Linear: tickets opened, closed, and stuck for more than 3 days
- GitHub: PRs opened, merged, and waiting on review

Format as 3 short sections (Linear, GitHub, Blockers) and post to this channel.
```

**Schedule**

```
0 9 * * 1-5
```

**Timezone:** your team's working timezone.

**Post in thread:** off — you want this on top-level so people see it.

## Common pitfalls [#common-pitfalls]

* **Schedule never fires.** Check **Enabled** is on. Check the timezone matches what you expect.
* **Output goes to the wrong channel.** The channel selector shows every channel in every workspace you've connected. Double-check the workspace/server in the dropdown label.
* **Prompt assumes today's date.** Without template variables, the agent has to compute time itself. Don't say "yesterday" if you mean a specific date.
* **API jobs without a result destination.** API platform doesn't post anywhere. If you want a notification, the prompt itself has to send one (e.g. via the Slack MCP).

## Related [#related]

* [API: Scheduled Jobs](/api/scheduled-jobs/overview)
* [Schedule rules reference](/api/scheduled-jobs/schedule-rules)
* [How to deploy an agent](/help/building-agents/how-to-deploy)

***

*Can't find what you're looking for? Email [support@nairi.ai](mailto:support@nairi.ai).*
