원클릭으로
automation
Schedule recurring tasks (cron) and periodic agent check-ins (heartbeat).
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Schedule recurring tasks (cron) and periodic agent check-ins (heartbeat).
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Interact with companion devices (phones, laptops, headless servers) connected to Suzent.
Render rich interactive UI surfaces (tables, forms, cards, buttons) in the sidebar canvas or inline in chat using the render_ui tool.
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.
Create a new Suzent AgentSkill, or improve an existing one. Use when the user wants to author a skill from scratch, scaffold a SKILL.md with supporting scripts/references/assets, or refine a skill's description so it triggers reliably.
Install a Suzent AgentSkill from a Git repo, ZIP URL, or owner/repo GitHub shorthand. Use when the user wants to add a third-party or community skill to Suzent. Fetches and copies only; never executes fetched code at install time.
| 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} |