with one click
automation
Schedule recurring tasks (cron) and periodic agent check-ins (heartbeat).
Menu
Schedule recurring tasks (cron) and periodic agent check-ins (heartbeat).
| name | automation |
| description | Schedule recurring tasks (cron) and periodic agent check-ins (heartbeat). |
Suzent has two separate automation systems:
| Cron | Heartbeat | |
|---|---|---|
| Purpose | Execute a specific task at a specific time | Periodic "wake up, check if anything needs attention" |
| Session | Isolated (cron-{id}) — fresh, stateless | Per-session — executes in the target chat's context |
| Timing | Cron expression (precise) | Configurable interval (default 30 min) |
| Config | Per-job prompt | Per-session heartbeat.md instructions |
| Batching | One job = one task | One tick can check multiple things |
| Context | No conversation history | Sees recent check history in that chat session |
Use Cron when: The user wants a scheduled action — daily reports, weekly summaries, timed reminders.
Use Heartbeat when: The user wants ambient monitoring — "check my inbox", "anything urgent?", "scan for problems". One heartbeat replaces many small cron jobs by batching checks in a single agent turn.
cron-{id})┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sun=0)
│ │ │ │ │
* * * * *
Common patterns:
*/5 * * * * — every 5 minutes0 * * * * — every hour0 9 * * * — daily at 9:00 AM0 9 * * 1-5 — weekdays at 9:00 AM0 9,18 * * * — twice daily at 9 AM and 6 PMsuzent cron list [--verbose]
suzent cron add --name "daily-summary" --cron "0 9 * * *" --prompt "Summarize today's agenda"
suzent cron trigger <job_id>
suzent cron toggle <job_id>
suzent cron remove <job_id>
suzent cron status
Use the Bash tool to run these CLI commands in host mode.
In sandbox mode the suzent CLI is not available. Use $SUZENT_BASE_URL with requests or curl instead:
| Action | Method | Path |
|---|---|---|
| List jobs | GET | /cron/jobs |
| Create job | POST | /cron/jobs |
| Update job | PUT | /cron/jobs/{id} |
| Delete job | DELETE | /cron/jobs/{id} |
| Trigger job | POST | /cron/jobs/{id}/trigger |
| Cron status | GET | /cron/status |
import os, requests
base = os.environ["SUZENT_BASE_URL"]
# List
jobs = requests.get(f"{base}/cron/jobs").json()
# Create
requests.post(f"{base}/cron/jobs", json={
"name": "daily-report",
"cron_expr": "0 9 * * *",
"prompt": "Summarize today's activity",
"delivery_mode": "announce", # or "none"
})
# Trigger immediately
requests.post(f"{base}/cron/jobs/{job_id}/trigger")
# Delete
requests.delete(f"{base}/cron/jobs/{job_id}")
heartbeat.md instructions configured for that chat, checks each itemHEARTBEAT_OK (notification suppressed and history rolled back)The checklist lives in the chat config itself. Keep it concise:
# Heartbeat Checklist
- Quick scan: anything urgent in recent conversations?
- If a task was left incomplete, note what is missing.
- Check for any pending follow-ups.
The user configures this from the specific chat's sidebar.
Rules for the agent during heartbeat:
HEARTBEAT_OK if nothing needs attentionsuzent heartbeat status -c <chat_id>
suzent heartbeat enable -c <chat_id>
suzent heartbeat disable -c <chat_id>
suzent heartbeat run -c <chat_id>
suzent heartbeat interval <minutes> -c <chat_id>
| Action | Method | Path |
|---|---|---|
| Get status | GET | /heartbeat/status?chat_id={id} |
| Enable | POST | /heartbeat/enable {"chat_id": "..."} |
| Disable | POST | /heartbeat/disable {"chat_id": "..."} |
| Trigger now | POST | /heartbeat/trigger {"chat_id": "..."} |
| Set interval | POST/PUT | /heartbeat/interval {"chat_id": "...", "interval_minutes": 15} |
Become a helpful co-worker in the workspace. Use it whenever you need to access, manage, or reference files.
Access and maintain the notebook knowledge base with Obsidian markdown conventions.
Render rich interactive UI surfaces (tables, forms, cards, buttons) in the sidebar canvas or inline in chat using the render_ui tool.
Interact with companion devices (phones, laptops, headless servers) connected to Suzent.
Enables the agent to speak using text-to-speech.
Social messaging guidelines for Telegram, Slack, Discord, and Feishu. Best practices for formatting, character limits, and platform-specific features.