db and fire from the same FastAPI process that serves your agents.
agno_schedules every scheduler_poll_interval seconds, fires due jobs, retries failures, and persists state.
Two ways to create schedules
Agent-driven
Give an agentSchedulerTools and it can schedule its own work via chat:
Startup-registered
For schedules that should always exist (the daily digest, the hourly sync, the nightly cleanup), register them in your app’s lifespan:Workflows for multi-step jobs
Schedules fire single endpoints. When the work is multi-step — research, then outline, then draft, then review — you reach for a workflow. Workflows aren’t strictly a scheduling feature, but they’re the most common thing a schedule fires. A workflow is a typed pipeline. Steps run in order.Parallel runs them concurrently. Loop repeats until a condition holds. Router picks one branch.
/workflows/<id>/runs POST endpoint, schedulable, traced, persisted in the same db.
For worked examples, see Demo OS.
Schedule runs and observability
When a schedule fires, AgentOS:- Looks up the schedule in
agno_schedules. - Hits the configured endpoint (
POST /agents/<id>/runsorPOST /workflows/<id>/runs) inside the same process. - Records the result in
agno_schedule_runs(status, duration, error if any) and the underlying run inagno_sessionsandagno_traceslike any other run.
run_id from agno_schedule_runs back to agno_traces. See Observability for the full data model.