Routines

Scheduled work declared alongside the workspace.

Scheduled work, declared next to the workspace that runs it.

# routines.yml
routines:
  - id: daily-digest
    app: analyst
    schedule: "0 8 * * 1-5"
    message: "Summarise yesterday's numbers and post them to #general."
    enabled: true

The routines surface
The routines surface

A routine is a message sent to an agent on a schedule. Everything that happens when a person asks — tools, gates, streaming, the reply landing in a channel — happens here too. There is no second execution path to keep in sync.

Why a file

Because the schedule is something a person should be able to read, review in a diff and turn off without a deploy. A routine hidden in a database row is one nobody can audit.

The store is a protocol, so if your routines genuinely do belong in a database you can put them there — but the file stays the default.

Timezones

schedule is evaluated in the workspace's timezone, not the server's. A digest at 8am should arrive at 8am for the people reading it.

Failure

A routine that raises is retried with backoff and then left until its next scheduled run. It does not spin, and it does not silently stop — failures land in the activity feed with the exception.