cron/. Harnest discovers them automatically in both ADK and LangGraph projects.
Folder layout
daily_report.py defines daily_report. Nested folders are unsupported; names beginning with _ or . are ignored. No import in agent.py is needed.
Declare an application-owned schedule
This example queues a report at 09:00 UTC, Monday–Friday:@task and pass JSON-safe arguments matching its signature.
Start the scheduler
Register the same storage instance with@lifecycle.storage.tasks and @lifecycle.storage.cron (setup), then run:
harnest run does not activate schedules.
Schedule contract
Tasks may retry; make their side effects idempotent. See task execution. Scheduled tasks that invoke an agent need an explicit service principal to access governed tools and MCP operations.
For schedules created by tools at runtime, see Dynamic schedules.