Last updated: 2026-09-06
What is an Automation?
An automation is an agent or a pod set to run on a cadence rather than by hand. It carries what runs, the context documents each run is seeded with, an optional opening prompt, the cron expression and timezone, and the window it is allowed to fire in.The API and the domain model call this an Automation. The dashboard calls the same thing a Schedule wherever you actually work with one (the task box’s Schedule chip, the When to run popover, the Save schedule button), even though its sidebar link is labelled Automations.
/api/schedules/* is an alias over the automation handlers, not a second implementation: the underlying table and the background ticker still say automation.Automations, agents, and sessions
An automation does not run in some separate scheduling layer: firing it creates an ordinary run, through the same path as starting a run by hand. The readiness gate, spend caps, the credit gate, the concurrency cap and usage metering all apply exactly as they do to a run you start yourself. A schedule is never a way around those gates. Each firing opens a session that says it came from the automation, so the run sits in your normal Sessions list beside anything you started by hand.Lifecycle and states
An automation is one of three statuses:
An automation created through the API starts active, on the schedule it was given. Configuring a cadence is treated as the decision to run on it, and stopping it again is one request away. The one exception is a template install, which creates its automations stopped, so a copied workspace does not start spending on a schedule its new owner has never seen.
- Start
- Stop / pause
- Run now
POST /api/automations/{id}/start sets the status to active and recomputes the next run from the schedule starting now; there is no catch-up for time the automation was off, so a schedule stopped on Monday and started on Friday does not owe Monday’s run. Starting also clears the automation’s consecutive-failure count.400 rather than sitting in the list looking healthy. A start date may not fall before today in the automation’s own timezone: automations run forward from when they are set up and never backfill.
If the automation’s target is deleted, the next firing that discovers this disables the automation (disabledReason of agent_deleted, pod_deleted, or no_agents_remaining, plus disabledAt). A disabled automation must be pointed at a working target before it can be started again.
Missed slots
Each conductor replica checks for due automations roughly every 30 seconds. A slot more than one whole period late (an hour late matters to an hourly automation; it does not to a nightly one) is not caught up on. It is recorded as aninterrupted firing and the schedule rolls forward to its next future slot, so a schedule that was offline for a while runs once at its next real slot rather than backfilling everything it missed.
If the previous firing’s run is still going when the next slot comes due, the new slot is skipped rather than queued, and recorded as skipped_overlap.
Memory between firings
Every automation has a small, hidden agent working behind it that reads what happened after each run and rewrites one short note for the run that follows.- The note is written by that hidden agent, not by a fixed template, so what is worth remembering can differ per automation and you can read, tune or correct it.
- It writes a note even for a run that crashed, by reading the run’s own record (status, failure reason, last thing said) rather than depending on the worker run to report on itself.
- The note is capped at 8KB, is seeded into the next firing’s run alongside the automation’s attached contexts, and is distinct from those contexts: a context is configuration you attached by hand, the memory note is something an agent wrote.
Firings and history
Every scheduled slot is recorded as a firing, whether or not it started a run. A slot that quietly does nothing would otherwise be indistinguishable from a schedule that is broken, so even a skipped slot is written down with its reason.
A firing costs up to two runs: the worker run itself, and the memory agent’s short follow-up run. Both are joined onto the firing at read time, so duration, tokens, and billed cost stay available without a second copy that could drift.
outcome groups firings for a history view: ok, failed, or skipped. Omit automation to list firings across every automation.
API
There is no CLI or SDK surface for automations today; use the dashboard or the REST API directly.Create
List, get, update, delete
Turning cadence into cron
422 rather than approximated.
Related
Pods
Target a pod instead of a single agent.
Workflow orchestration
DAG-based multi-agent runs, for work with parallel or ordered subtasks.
Conductor API reference
Full route reference for the conductor’s
/api/* surface.