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.
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.
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.
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 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.
interval · cron · once · webhook5m, */15 * * * *, or an ISO date.queue · skip · forceThe first two are loops — they come back. once is a single alarm; webhook fires when something outside calls in.
A loop is just a scheduled task with a repeating trigger. Here's the whole path.
interval 5m/2h/1d for "every N", cron 0 9 * * * for "every morning", or once for a single future run.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).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.
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.
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.
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.