Skip to content

Scheduling & loops

ExoHuman has four ways to run work without someone typing in a chat:

ToolRunsTimingSet up by
ScheduleRepeatedlyCron expressionPeople (Schedules tab), API, MCP, templates
LoopUp to 100 times, one after anotherStarting nowPeople (Loops tab, Workspace), API, MCP
ReminderOnceA future momentThe agent itself (MCP)
Fan-outN tasks in parallelNowAgents and API

All of them are bounded by the agent’s execution timeout, guardrails and parallel capacity, and every run appears in the agent’s Tasks tab with status, duration, cost and model.

Open the agent’s Schedules tab and click Create Schedule:

  1. Enter a name and a cron expression (5 fields — 0 9 * * 1-5 is weekdays at 09:00). Presets: Daily 9 AM, Weekly Mon, Every 6h, Every 30m. The expression is validated as you type.
  2. Choose a timezone (any IANA name such as Europe/Madrid).
  3. Write the message. Best practice is a single line that invokes one of the agent’s skills, for example /daily-briefing, so the logic lives in the versioned skill.
  4. Optionally set a model override, timeout (no longer than the agent’s), allowed tools, and retries (0–5 attempts, 30–600 s apart).
  5. Save, and enable the schedule.

Run now triggers a schedule immediately. Each schedule shows its history and analytics (success rate, duration, cost). Enabling, disabling and triggering are owner/admin actions; people an agent is shared with can view schedules.

If the platform restarts, schedules missed within the last hour are caught up once.

A schedule can deliver its result to a person’s Workspace — for example a morning briefing that lands in their chat with the agent.

A loop runs the same task against one agent repeatedly, strictly in order — for example “process the next backlog item” × 20. Start it from the agent’s Loops tab (Run Loop) or from the Workspace rail:

SettingRangePurpose
Message template—Supports {{run}} (run number) and {{previous_response}} (last 2,000 characters of the previous answer)
Max runs1–100Upper bound on iterations
Stop signaltextEnd early when the answer contains it, e.g. [[DONE]]
Delay between runs0–3600 sPacing
Timeout per run10–7200 sCannot exceed the agent timeout
Max durationsecondsWall-clock deadline for the whole loop
Max costUSDSpend budget, checked between runs
No-progress thresholddefault 3Stop after N identical answers in a row

Stop is cooperative: the current run finishes, then the loop ends. A loop reports why it ended — run limit, stop signal, deadline, budget, no progress, failures or stopped by you.

A running agent can schedule a one-shot future run of itself — “check this pull request in 2 hours” — with the set_reminder MCP tool (fire_at timestamp or delay_seconds). Reminders survive restarts. Limits: 25 pending and 100 created per day per agent. There is no UI; fired reminders appear in the agent’s Tasks.

fan_out dispatches several independent tasks to an agent in parallel, waits for all of them and returns the aggregated results — useful for batch analysis. Concurrency is bounded by the agent’s parallel capacity.

EndpointMethodPurpose
/api/agents/{name}/schedulesGET / POSTList or create schedules
/api/agents/{name}/schedules/{id}GET / PUT / DELETEManage a schedule
/api/agents/{name}/schedules/{id}/enable · /disablePOSTToggle
/api/agents/{name}/schedules/{id}/triggerPOSTRun now
/api/agents/{name}/schedules/{id}/executionsGETHistory

MCP tools: list_agent_schedules, create_agent_schedule, update_agent_schedule, delete_agent_schedule, toggle_agent_schedule, trigger_agent_schedule, get_schedule_executions. See Schedules API.

On ExoHuman Cloud, scheduled and looped runs are billed like any other run: per minute of the agent’s compute profile while it is running (Billing).