Which tool for which job
| Scheduled tasks | Heartbeat checks | |
|---|---|---|
| Fires | At an exact time, in a timezone you choose | On a polling interval, hourly by default |
| Best for | The 9am digest, the Friday report, the one-off reminder | "Has anything changed?" checks that tolerate drift |
| History | Success or failure recorded per run | Surfaces only when a check finds something |
| Managed in | The Scheduler and Calendar sections | The agent's Heartbeat card and its checks file |
Reach for a scheduled task when the time matters. Reach for a heartbeat check when the question matters but the minute does not - and when you would rather batch a dozen small checks than create a dozen jobs.
Creating a scheduled task
- Open Scheduler and press New task. Choose a Schedule type first: Recurring or One-time.
- Build the schedule without cron. Recurring offers Minutes (every N), Hourly (every N hours at a chosen minute past the hour), Daily, Weekly (toggle the weekdays), Monthly (day of month), or Custom raw cron for power users. One-time uses a real date and time picker, constrained to future dates. Everything is minute resolution.
- Check the plain-language summary. As you edit, the builder writes out what it will do - "Runs every 2 hours at :20", "Runs once on Friday, June 19 at 09:00". If that sentence is not what you meant, fix it before saving; an incomplete or past-dated schedule blocks the save anyway.
- Pick the timezone. A searchable list of every zone with its current offset, defaulting to your own zone rather than UTC, with your zone and UTC pinned at the top.
- Write the message the agent receives. This is the prompt that fires - the agent reads it as an instruction, exactly as if you had typed it in chat.
- Choose the agent and save. Tasks belong to one agent, and the sidebar Scheduler badge counts the active jobs across the fleet.
Managing tasks
Every job carries a source badge. Saved means it was created here (or by an agent asking to schedule something). Config means it is baked into the agent's own configuration - typically part of an archetype you installed. Both are fully manageable from this list: pause, resume, edit the name, message or schedule, and delete. Config jobs write back to the agent's configuration and apply live.
Each card has a Run now button that fires the job immediately, ignoring its schedule, and records the run in history like any other. That is the fastest way to test a task you have just written - do not wait until 9am to find out the prompt was ambiguous.
Tasks can be disabled without being deleted, which is the right move for anything seasonal. Editing can also switch a task between recurring and one-time; the builder clears whichever field no longer applies.
An agent's own recurring jobs can also be edited from its detail page, in the Schedule card on the Overview tab. Those are the same jobs the Scheduler shows tagged Config - two doors into one room.
The calendar view
The Calendar section shows the same tasks as a day, week or month calendar. Recurring jobs are expanded onto every day they fire; one-time jobs land on their date. Each occurrence shows its fire time, the task name and a one-line excerpt of the prompt, with a glyph marking recurring runs.
Click any occurrence to open the same task dialog the Scheduler uses - detail, edit, history, delete. Filters hide recurring or one-time tasks, and an agent filter narrows to the agents you care about. You can also schedule straight from the grid: a per-day + button pre-fills a one-time run at 09:00 on that day.
The calendar is the better view for spotting collisions - three agents all reporting at 9am, or a Monday with nothing on it.
Heartbeat checks
Heartbeat is the scheduler's lightweight sibling: a list of recurring checks the agent walks through on a polling interval while the runtime is up, hourly by default. Enable it and pick the interval from the Heartbeat card on the agent's Overview tab - the change applies live, with no restart, and "System default" inherits the deployment-wide setting.
The checks themselves have no dashboard form. Manage them by editing the agent's checks file in the Files section, or - much easier - by asking the agent in chat: "add a heartbeat check for whether the overnight import completed", "check the heartbeat every 15 minutes", "turn off heartbeat polling". The agent has tools for exactly this.
A check that finds nothing stays silent. When one does find something, it surfaces as a reminder on the dashboard rather than firing a message at you - which is what makes it safe to have twenty of them.
Recurring reports
Some reporting is built in. The Insights section keeps a work journal navigable by day, with a ranked per-agent breakdown and an optional written digest of what actually happened - conversations handled, scheduled tasks completed, checks run, hand-offs between agents. A Daily / Weekly / Monthly toggle switches between the per-day view and rollup reports, which generate on their own each week and month.
The most recent day's digest also appears on Overview as Daily highlights, written automatically each morning for the day just finished, with a button to regenerate today on demand.
Anything beyond that is a scheduled task. "Every Monday at 8am, summarise last week's support conversations and email it to the team" is one job with one prompt, and the agent already has the tools to do each part.
Writing a task that works
- Say what to do and where to put it. "Check competitor pricing" leaves the agent to guess the destination. "Check the three competitor pages listed in the knowledge base and post a summary to the team Slack channel" does not.
- Say what silence looks like. For monitoring jobs, tell the agent to say nothing when there is nothing to report. Otherwise you get a daily message confirming that nothing happened, and you will start ignoring the channel.
- Test with Run now. Then read the run history entry and the resulting conversation before trusting the schedule.
- Mind the timezone. The zone is per task. A team spread across offices should agree on one zone for reports rather than setting each job in the author's local time.
- Expect approvals to wait. If a scheduled run reaches a tool that needs a human, it pauses and the request lands in the approvals inbox on Overview - it does not proceed unattended. See chapter 8.
One thing that is deliberately not capped: message rate limits apply to inbound messages from people, not to scheduled or autonomous work. A busy schedule will not lock your agent out of its own inbox.