Skip to main content
Loops execute on the legacy runtime’s cloud sidecar. naive loops keeps working; new recurring work is naive teams schedule <team> "<cron>" "<goal>" --tenant <tu>, which answers 501 not_configured on this API build until the durable scheduler lands — see Teams. For a config-declared recurring run, declare agent({ loop: { cron, goal } }) in naive.config.ts — apply registers it with the hosted runtime’s cron scheduler; see the agent’s loop. A Loop is a recurring agent run. It’s a first-class object built on the trigger router: a cron-source subscription bound to an agent run. Creating a Loop records the binding and creates the backing cron job that executes it — the cloud sidecar cron.

Create a loop

schedule is a standard cron expression. The response includes the loop subscription and the cron_job_id of the backing executor (null if no runtime is reachable yet — the binding still persists and syncs later).

Manage loops

Loops vs. cron jobs

The lower-level cron API is a push-through to the runtime’s scheduler. A Loop is the governed, observable wrapper: it owns the binding registry row, surfaces in the trigger delivery-status feed, and pauses/resumes without touching the runtime directly.

Billing

Free — each scheduled run bills as a normal agent run.