Owner-scheduled crons
You can ask Han AI to do anything on a schedule. It captures the schedule, persists it, and runs it via node-cron. Jobs survive reboots and run for as long as the schedule exists.
What it does
Lets you create, list, and cancel recurring tasks in natural language. Han AI maps your request to a cron expression and writes it to SQLite.
| Field | Value |
|---|---|
| Schema names | schedule_recurring, list_recurring, cancel_recurring |
| Runner | node-cron |
| Store | SQLite at /var/hanai/state/owner_cron.db |
| Survives reboot | Yes |
How you use it
You do not write cron syntax. You say what you want.
- “Every Monday at 9am, summarise last week and email it to me.”
- “On the 1st of every month, generate a property-portfolio PDF in executive style.”
- “Each Friday at 6pm, list anything I still owe a reply on.”
Han AI confirms the schedule in plain English, then it is live.
Listing and cancelling
- “What recurring jobs do I have?” →
list_recurring. - “Cancel the Friday digest.” →
cancel_recurring.
How it differs from the dreaming loop
| Feature | Dreaming loop | Owner crons |
|---|---|---|
| Who sets it | Han AI itself | You |
| Schedule | Fixed (06:30 daily) | Whatever you ask for |
| Output | Insights | Whatever you ask for |
| Stored at | dreams.jsonl | owner_cron.db |
Limits
- Cron resolution is one minute.
- A scheduled job that calls a tool that is later removed (e.g. SMTP credentials revoked) will log a capability gap when it next fires.
- Sub-minute pacing or single-fire timers are not the design — use plain conversation for one-off reminders.