Routes
/scheduler— scheduler view (defaults to Cron Jobs tab)/scheduler/:jobId— opens the same view focused on a specific job’s editor
Backing RPC
cron.list— jobs listcron.add(config),cron.update(jobId, config),cron.remove(jobId)— CRUD (writes back toconfig.yamlschedulersection)cron.run(jobId)— trigger immediatelycron.runs(limit?)— recent executionscron.status(jobId)— single job statusscheduler.wake— wake a sleeping heartbeat agenttasks.list/tasks.complete/tasks.dismiss— extracted-tasks tab
What You See
The Scheduler view is organized into three tabs:Cron Jobs Tab
The main tab displays a list of all your scheduled jobs. Each row shows:- Job name — a descriptive name you gave the job.
- Agent — which agent runs the job.
- Schedule — the cron expression or interval in human-readable form (for example, “Every 1h” or a cron pattern).
- Status — a colored indicator showing whether the job is active (green), inactive (gray), or has errors (red). If a job has consecutive errors, the count is shown next to the status.
- Last Run — when the job last executed, shown as a relative time (for example, “3 minutes ago”).
- Next Run — when the job will run next (shown only for enabled jobs).
- Delete — a button to remove the job.
Heartbeat Tab
The Heartbeat tab shows per-agent health monitoring cards. Each card displays:- Agent name — which agent is being monitored.
- Enabled/disabled status indicator.
- Interval — how often heartbeat checks run for this agent.
- Last run — when the last heartbeat check occurred.
- Next due — when the next check is scheduled.
- Consecutive errors — how many checks have failed in a row.
- Recent Alerts — heartbeat alerts that were raised, with the agent name, classification (transient or permanent), reason, and timestamp.
- Recent Deliveries — heartbeat delivery records showing the agent, channel, outcome (delivered, skipped, or failed), and duration.
Extracted Tasks Tab
The Extracted Tasks tab shows tasks that your agents have identified from conversations. Each task displays a title, priority level (high, medium, or low), and current status (pending, completed, or dismissed). You can mark tasks as complete or dismiss them using the action buttons.Managing Jobs
1
Create a new job
Click the + New Job button at the top of the Cron Jobs tab. A form overlay appears where you can enter the job name, select an agent, set the schedule (cron expression or interval), and write the message the agent should process. Click Save when you are done.
2
Edit an existing job
Click any job row in the list. The editor overlay opens with the current settings. Modify the fields you want to change and click Save.
3
Delete a job
Click the Delete button on the right side of any job row. The job is removed immediately.
Checking Execution History
Switch to the Cron Jobs tab and scroll down to the Recent Executions section. Each execution record shows:- Timestamp — when the job ran.
- Job name — which job was executed.
- Result — green for success, red for failure.
- Duration — how long the execution took.
Consecutive errors: If a job fails multiple times in a row, the error count appears next to the job’s status indicator in the Cron Jobs list. This helps you quickly identify jobs that need attention — whether they need to be reconfigured, or temporarily disabled while you investigate the issue.
Wake-Gated Jobs
A cron job can carry a wake-gate — a small pre-run script that decides, on each fire, whether the model runs at all. A gate that finds nothing to do skips the fire: no model turn, no cost. This keeps a frequent poller cheap, but it changes how you read the job’s activity.A skipped fire is not a failure. When a wake-gate skips a fire, no model turn runs, so the fire does not appear as a failed execution and does not raise the consecutive-error count. A gate can also deliver a routine ✓ status straight to the channel with no model turn — that lands like any ordinary successful delivery. A wake-gated job that is quietly skipping most of its fires is working as designed, not stalling.
- Per-fire decision — the
cron.runsrun history records each gated fire, including the ones the gate skipped, with the tool-call and avoided-turn counts. - Per-job efficiency — the
comis fleethealth report rolls up the skip-rate, the model turns saved, and the gate’s own tool-call cost per agent (counts only, never the gate’s gathered findings). A gate stuck at a 100% skip-rate on a monitor you expect to fire is the signal to inspect.
Scheduling Tools
Learn how to configure automated tasks and cron expressions.
Agents View
View, configure, and manage your AI agents.
