Integrations
Cron
Run AgentField reasoners from a server-side schedule.
The cron source runs a reasoner on a control-plane schedule. No external webhook endpoint or secret is required.
Source Surface
| Surface | Value |
|---|---|
| Source name | cron |
| Kind | Loop source |
| Secret | Not required |
| Config | expression, optional timezone |
| Event type | tick |
| Idempotency | <expression>@<scheduled-minute-utc> |
| Reasoner input | Schedule metadata as event, with trigger metadata in _meta |
Agent Code
from agentfield import Agent, on_schedule
app = Agent(node_id="scheduler")
@app.reasoner()
@on_schedule("*/15 * * * *")
async def run_every_fifteen_minutes(_input, trigger=None):
return {"fired_at": trigger.received_at.isoformat() if trigger else None}
app.run()UI Config
{
"expression": "*/15 * * * *",
"timezone": "UTC"
}The dispatched input looks like:
{
"event": {
"fired_at": "2026-06-15T10:30:00Z",
"expression": "*/15 * * * *",
"timezone": "UTC"
},
"_meta": {
"source": "cron",
"event_type": "tick",
"idempotency_key": "*/15 * * * *@2026-06-15T10:30Z"
}
}Supported Cron Syntax
AgentField supports the common 5-field cron subset:
*- integers
- ranges like
9-17 - lists like
1,2,3 - steps like
*/5or9-17/2
It does not support seconds, year fields, named months, named weekdays, or strings like @hourly.
Notes
- Event type is
tick. - Timezone defaults to
UTC. - Schedule execution uses the same dispatch path as webhook sources.