Skip to main content

Routines

Automate recurring tasks on a schedule.

Routines let you schedule repeating tasks that run automatically — from daily summaries to weekly cleanup. Each routine has a cron trigger and an action that executes when the schedule fires.

How Routines Work

A routine is defined by three things:

  1. Name — what the routine does (e.g., "Morning email summary")
  2. Schedule — a cron expression defining when it runs (e.g., 0 9 * * 1-5 = weekdays at 9 AM)
  3. Action — what happens when the schedule fires

Routines run in the background. Each execution creates a run record with status, duration, and any errors. You can view the full history in the routine detail page.

Action Types

Chat

Opens a new conversation and sends a prompt to the agent. This is the most powerful action type — the agent can use all its tools, connections, and skills.

Example: "Summarize my unread emails every morning at 9 AM"

action:
type: chat
prompt: "Check my Gmail inbox for unread emails and give me a brief summary of each one."

The chat action can optionally specify a provider, model, and role to use for the conversation.

Archive

Archives chats matching a filter. Useful for keeping your chat list clean.

Example: "Archive chats older than 30 days"

action:
type: archive
filter:
olderThan: 30

Flag / Unflag

Flags or unflags chats matching a filter.

action:
type: flag
flag: true
filter:
nameContains: "important"

Label

Adds or removes a label from chats matching a filter.

action:
type: label
labelId: "review"
filter:
archived: false

Filters

Archive, flag, and label actions accept filters to target specific chats:

FilterDescription
olderThanChats older than N days
nameContainsChat name contains text
hasLabelChat has a specific label
archivedOnly archived / not archived chats
flaggedOnly flagged / not flagged chats

Filters can be combined. If multiple filters are set, all must match (AND logic).

Creating Routines

Go to Routines in the sidebar and start a new routine chat. The Routine Assistant walks you through a guided questionnaire:

  1. What should the routine do?
  2. When should it run? (natural language → cron)
  3. Any filters or conditions?

The assistant creates the routine for you — no need to write cron expressions or JSON by hand.

You can also create routines programmatically through the WebSocket API.

Cron Expressions

Routines use standard 5-field cron expressions:

┌───────── minute (0-59)
│ ┌─────── hour (0-23)
│ │ ┌───── day of month (1-31)
│ │ │ ┌─── month (1-12)
│ │ │ │ ┌─ day of week (0-6, Sun=0)
│ │ │ │ │
* * * * *

Common patterns:

ExpressionSchedule
0 9 * * *Every day at 9:00 AM
0 9 * * 1-5Weekdays at 9:00 AM
*/30 * * * *Every 30 minutes
0 0 * * 0Sundays at midnight
0 18 * * 5Fridays at 6:00 PM
0 8 1 * *First of every month at 8:00 AM

Management

Enable / Disable

Toggle a routine on or off from the routine list or detail page. Disabled routines keep their schedule but don't execute.

Run Now

Trigger any routine manually from the context menu. Useful for testing before enabling the schedule.

History

The detail page shows recent runs with:

  • Status — done, error, or running
  • Duration — how long the run took
  • Chat — link to the conversation (for chat actions)
  • Error — what went wrong (for failed runs)

Delete

Remove a routine and all its run history from the context menu.

Execution Details

  • Each chat action creates a new conversation per run
  • Routines use the same timeout as regular agent turns
  • Multiple routines can run concurrently
  • Only failure notifications are shown (successful runs are silent)
  • The scheduler checks every minute for routines that need to run
  • Disabled routines are skipped during scheduling