Daily Brief

Category: Daily Automation Example Model: balanced or cheap Updated: 2026-05-25

Send a short morning brief to an allowlisted channel. This works best when the Gateway stays local or Tailscale-only and delivery happens through Telegram, Discord, email, or another configured channel.

Quick Start

Prerequisites

  • Weather source configured.
  • Calendar or task source configured, if you want those sections.
  • Delivery channel configured and allowlisted.
  • A cheap or balanced model available in agents.defaults.models.

Add The Job

openclaw cron add \
  --name "daily-brief" \
  --cron "30 7 * * *" \
  --timezone "America/Los_Angeles" \
  --session isolated \
  --message "Generate my daily brief. Weather: [YOUR_CITY]. Calendar: next 24 hours from [YOUR_CALENDAR_SOURCE]. Tasks: top active items from [YOUR_TASK_SOURCE]. Flag anything due today or stale for more than 24 hours. Keep it short, use clear headings, skip empty sections, and deliver to [YOUR_CHANNEL]."

Replace:

  • [YOUR_CITY] with your city.
  • [YOUR_CALENDAR_SOURCE] with your calendar source.
  • [YOUR_TASK_SOURCE] with your task source.
  • [YOUR_CHANNEL] with the delivery target.

Test

openclaw cron list
openclaw cron run <job-id> --wait

Use the job ID from openclaw cron list.

Full Prompt

Generate my daily brief.

Check:
1. Weather for [YOUR_CITY]
   - current condition
   - high and low
   - alerts or notable travel conditions

2. Calendar for the next 24 hours from [YOUR_CALENDAR_SOURCE]
   - meetings with times
   - events starting within 2 hours
   - all-day events

3. Tasks from [YOUR_TASK_SOURCE]
   - top 3 to 5 active items
   - due today
   - stale for more than 24 hours

Format:
- clear headings
- short bullets
- no tables unless the delivery channel handles them well
- skip empty sections
- keep it readable in 30 seconds

Deliver to [YOUR_CHANNEL].
Return HEARTBEAT_OK only if there is truly nothing to report.

Notes

  • Use an isolated session so the brief does not pollute the main conversation.
  • Use a cheaper model if the sources are simple and stable.
  • Keep the dashboard off the public internet. Use Tailscale for Control UI access, or use a local Gateway plus a messaging channel for remote briefs.
  • Run the job manually for a few days before relying on it.
  • Keep the brief short enough to read from a phone notification.

What This Does

Problem: Calendar, weather, tasks, and reminders are spread across different places. By the time you check all of them manually, the morning context is already fragmented.

Solution: One scheduled run collects the useful pieces and sends a compact brief to the channel you already check.

What Worked

  • A consistent time made the brief easier to trust.
  • Short sections worked better than a long narrative.
  • Skipping empty sections kept the brief from feeling noisy.
  • Isolated cron sessions kept the main conversation cleaner.

What Did Not Work

  • Minute-by-minute calendar updates were not reliable enough to treat this like an alerting system.
  • Long task lists made the brief easier to ignore.
  • Pulling from too many sources made the job slower and more expensive.

Gotchas

  • Calendar sync delays are real.
  • Weather APIs can fail or rate-limit.
  • Delivery channels handle Markdown differently.
  • If the prompt does not say to skip empty sections, the agent may produce filler.

Troubleshooting

ProblemFix
Runs at the wrong timeCheck the timezone in openclaw cron list
Too verboseAdd a hard section limit and word limit
Empty sections are noisyTell the prompt to skip empty sections
Channel formatting is poorAvoid Markdown tables and long nested lists
Job cannot access dataCheck plugin/channel config and auth profiles

Changelog

  • 2026-02-09 - Initial version
  • 2026-05-25 - Updated for current cron commands, isolated sessions, and Tailscale-first access