Audience: Individual developers, early adopters, power users
The idea
A morning briefing agent is the classic "always-on personal assistant" demo — but most implementations are a ChatGPT or Claude session that re-reasons about what to do every single morning. That's tokens for orchestration, not value.
The AINL version
The examples/ecosystem/clawflows/morning-briefing/ example compiles the morning routine into a deterministic AINL graph. It runs at 0 9 * * * on OpenClaw cron:
# morning-briefing/converted.ainl (simplified)
S core cron "0 9 * * *"
L_cron:
Call L_check_email ->email_summary
Call L_check_calendar ->cal_events
Call L_build_briefing ->briefing
R queue Put "notify" briefing
Ret "ok"
Each step is a node in the compiled graph. The graph is validated before deployment — the compiler catches missing adapters, unreachable nodes, and undeclared variables before they silently fail at 9 AM.
Key properties
- No LLM orchestration at runtime — the structure is compiled in. LLM calls happen only inside nodes that need them (e.g. summarisation), not to decide what to do next.
- Deterministic delivery — same inputs → same flow, every morning
- Memory-aware — steps write to the memory adapter, so the briefing can reference "yesterday's context" without ad-hoc prompting
- Easy to extend — add a
Call L_check_pricesnode and re-compile; nothing else changes
Try it
pip install ainativelang
git clone https://github.com/sbhooley/ainativelang.git
ainl check examples/ecosystem/clawflows/morning-briefing/converted.ainl --strict
ainl visualize examples/ecosystem/clawflows/morning-briefing/converted.ainl --output briefing.mmd
Then install on OpenClaw: How to install & setup OpenClaw
