Cron
Run the agent on a schedule with a cron expression and a prompt.
The cron trigger runs the agent on a schedule rather than in response to an external event:
triggers:
- type: cron
schedule: "0 9 * * 1" # every Monday 09:00
prompt: Post a summary of open issues.configs:
agent-yaml:
content: |
handle: summary-bot
description: Posts a weekly summary of open issues.
model:
provider: openai-compatible
id: gpt-5.4-mini
purpose: |
Each run, summarize the open issues and deliver the summary.
triggers:
- type: cron
schedule: "0 9 * * 1" # every Monday 09:00
prompt: Post a summary of open issues.
services:
summary-bot:
image: ghcr.io/loopedautomation/agent:latest
configs:
- source: agent-yaml
target: /agent/agent.yaml
env_file: .env # the model's API key
volumes:
- summary-bot-data:/data
restart: unless-stopped
volumes:
summary-bot-data:Each tick runs the agent with prompt as input. Results are logged and recorded in the run history — a configurable result sink is planned; until then, when the result needs to go somewhere, have the agent deliver it itself through an allowlisted API or CLI (Permissions).
Every run reports its status, steps and tokens, and limits cap what an unattended schedule can spend.
A schedule never overlaps itself. If a tick fires while the previous run is still going, the new firing waits for it to finish, and at most one firing waits; anything past that is skipped with status: rejected. A 6am summary that runs long produces a single catch-up run, and the skipped ticks stay visible in the audit trail.
A cron trigger is the operator's schedule: it lives in the config, gets reviewed like code and survives a wiped data volume. When the schedules: block is on, the agent can also create schedules of its own in conversation ("remind me Thursday").
Multiple triggers
triggers: is a list, and an agent can declare as many as it needs, including two of the same type. A daily prompt and a weekly prompt can live side by side:
triggers:
- type: cron
schedule: "0 9 * * *" # every day 09:00
prompt: Post a summary of yesterday's open issues.
- type: cron
schedule: "0 9 * * 1" # every Monday 09:00
prompt: Post a summary of the past week.This also works across types: the same agent can listen on Discord, serve a webhook and run a schedule at the same time. Whatever wakes it, the same purpose, permissions and run history apply, and conversation keys stay per source, so a Discord thread and a webhook caller never share memory.
Are you an AI? Visit llms.txt — these docs as plain markdown.