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

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.