<> AutoAIDev
Loops
The calendar, and what it unlocks

A loop is work that comes back on its own

The task loop drains a list once. A loop in this sense is different: it's a task you put on an agent's calendar so it fires again and again on a cadence you choose — run this every morning, check the deploy every five minutes, sweep the inbox on the hour. You write it once; the calendar keeps bringing it back without a prompt from you.

Every agent has its own calendar. A small badge on the agent counts the schedules it's carrying, and each one shows when it last ran and when it's next due. Nothing here invents new behaviour — it's the same agent, the same task text, dispatched on a timer instead of by hand.

CADENCE
Interval, cron, or once

Pick how often it fires: a plain interval (30m, 2h, 1d), a full cron expression (0 9 * * * for 9am daily), or a single future moment.

COURTESY
It respects a busy agent

When a fire lands while the agent is mid-task you decide what happens: queue it for when it's idle, skip that fire, or force it through. A loop never has to trample live work.

SELF-PACING
Or let it pace itself

The Thought Giver is a loop with no task text: switch it on, pick an interval, and the agent is handed a grounded next step on a timer — a gentle self-pacing nudge rather than a fixed instruction.

The calendar
Where loops live

One place that remembers every recurring job

The calendar is the agent's list of scheduled tasks. It's where a loop is born, edited and switched off. Each entry carries a name, the task text that gets sent to the agent on every fire, the trigger that decides the cadence, and a couple of guard-rails. A schedule can be enabled or disabled without deleting it, fired once by hand to test it, and it records its last run and next due time so you can see the loop breathing.

Anatomy of a schedule
Task text
What the agent is asked to do on every fire.
Trigger
interval · cron · once · webhook
Value
e.g. 5m, */15 * * * *, or an ISO date.
If busy
queue · skip · force
Max turns
Optional cap per fire (blank = unlimited).
Conditions
Only fire when idle, when a status matches, or inside a time window.
triggers
# every five minutes
trigger: interval value: 5m
# every weekday at 9am
trigger: cron value: 0 9 * * 1-5
# one-off, a date in the future
trigger: once value: 2026-05-08T09:00:00Z
# fire from an external URL call
trigger: webhook value: <generated url>

The first two are loops — they come back. once is a single alarm; webhook fires when something outside calls in.

Screenshot: the Calendar panel for one agent, listing the loops it's carrying.
How to make a loop
Five steps

From idea to a recurring job in under a minute

A loop is just a scheduled task with a repeating trigger. Here's the whole path.

1
Open the agent's calendar. Click the calendar icon on the agent's card (or in Manage Agents) and choose New schedule.
2
Write the task text. Give it a name and type what the agent should do on every fire — e.g. "summarise today's commits and post it to the team channel." Short on words? ✨ Generate from a prompt drafts it for you; edit before saving.
3
Pick the cadence. Choose a Trigger type and Value: interval 5m/2h/1d for "every N", cron 0 9 * * * for "every morning", or once for a single future run.
4
Decide the manners. Set If agent busy — queue (run when idle), skip (drop this fire), or force. Optionally cap Max turns and add Conditions (only when idle, or inside a time window).
5
Save it enabled. The loop now fires on its cadence. The calendar badge counts it, and the row shows its last run and next due time. Use Fire now to test it once, or the toggle to pause it.
Screenshot: the recurring-task dialog — this is where a loop's cadence and task text are set.
Thought Giver
The self-pacing loop

🧠 An agent that hands itself the next step

Some work doesn't fit a fixed instruction — you just want the agent to keep moving. The Thought Giver is a per-agent, opt-in loop with no task text of its own. Flip it on for one agent, pick an interval, and on that timer the office hands that agent a single grounded next-step thought — one concrete task that keeps it productively moving. It is off by default, and it never fires while the agent is busy: a thought that lands mid-task simply waits. It's the closest thing to an agent that paces itself.

The point isn't to invent busywork — it's to keep an autonomous office moving forward on its own, without a human prompting every step. So each thought is drawn from what's really going on, shaped to fit the agent it's for, and handed out sparingly.

01 · GROUNDED
Drawn from what's actually happening

Every thought is grounded in the office's live state and the agents' recent chat replies — what they actually said — not low-level tool noise. The next step follows the real situation, so it reads like a sensible move rather than a random nudge.

02 · TAILORED
Fits the agent you gave it to

Each thought is tailored to the target agent's role, persona and assigned skills, and is limited to the tools and integrations that agent actually has enabled. It won't invent a Jira step if Jira isn't connected — it only suggests moves the agent can really make.

03 · MEASURED
It never piles on

Beyond skipping busy agents, an office daily-cap and a max-pending guard keep thoughts rate-limited, so no agent is ever buried under them. The switch is the kill-switch: off by default, off the moment you turn it off.

See exactly what it would produce before committing to it — Generate example previews the next thought it would hand over — and a small 🧠 brain indicator marks every agent that has the Thought Giver switched on.

The Thought Giver banner on an agent: the enable switch turned on, the interval picker (every 30m), the Show recent thoughts and Generate example buttons, and an example-thought preview card titled 'Draft user-facing quick-start guide for the upload feature'.
Screenshot: the self-pacing Thought Giver toggle, its interval picker and the example preview.
New here? Get an agent running first, then put a loop on its calendar.
Start here →