Skip to main content
Set deliver= on a scheduled agent and each result is pushed to a chat target — no gateway required.
“Run this agent every hour and text me the result on Telegram.” That used to mean wiring up the scheduler and the full BotOS gateway. Now it’s one parameter — the scheduler talks to the shared DeliveryRouter directly.
If praisonai-bot isn’t installed, delivery logs a single warning and no-ops. The scheduled run itself never fails because delivery failed.

Quick Start

1

Deliver to a specific chat

2

Deliver to the platform home channel

3

Async scheduler


Three Ways to Set the Target

The same delivery token works from Python, YAML, and the CLI.
every: is a new alias for interval: in the YAML schedule: block — both accept hourly, daily, weekly, */30m, or raw seconds.

Which surface fits which scenario?


Delivery Target Tokens

The deliver value is parsed by DeliveryTarget.parse() — the same serialisable model reused from the existing delivery machinery.
origin (and all) need request/session context from the full BotOS gateway. The lightweight scheduler path logs a warning and skips them — use an explicit platform or platform:chat_id token instead, or run under the gateway.
Swap telegram for discord, slack, or whatsapp — the grammar is identical.

How It Works

The scheduler runs the agent, then hands the result to SchedulerDelivery, which resolves the token and sends through the shared DeliveryRouter. SchedulerDelivery is built once per scheduler and reused across runs, so the router’s idempotency cache and rate limiters persist between ticks.

Reliability Guarantees

Delivery reuses the existing DeliveryRouter, so scheduled sends inherit the gateway’s guarantees.

Common Patterns

Deliver from a blueprint

deliver= on from_blueprint overrides the blueprint’s default delivery target.

Deliver to a thread


Best Practices

telegram:123456 targets a fixed chat and works without any request context. Reserve origin for interactive flows running under the full gateway — the lightweight scheduler path cannot resolve it.
Delivery needs the praisonai-bot package. Without it, the scheduled run still executes — only the push is skipped, with one warning. Install the bot extra to turn delivery on.
The router’s idempotency cache and rate limiters live on the scheduler’s delivery helper. Keep a single scheduler running so repeated identical results to the same target are deduplicated instead of re-sent.
Use Python inside an app, YAML for a config-file deploy, and the CLI for one-off terminal jobs — all three accept the same deliver token grammar.

Async Agent Scheduler

Run agents on a recurring schedule with async execution

Pre-Run Gate

Skip ticks when a cheap check says nothing to do

Schedule CLI

The --deliver / -d flag and other schedule commands

Gateway Inbound Hooks

Shares the same delivery target format