Heartbeats
Heartbeats are cron-driven agent spawns that run on a schedule without any user prompt. Use them for proactive maintenance, daily summaries, dependency audits, or self-improvement — where an agent reads recent sessions and writes new slash command skills to improve the team over time.
Configuration
Heartbeat settings live in .agenties/config.json under the heartbeat key. You can edit them directly or through Settings → Heartbeats in the UI.
Cron expressions
Agenties uses standard 5-field cron syntax: minute hour day-of-month month day-of-week.
| Expression | Schedule |
|---|---|
0 9 * * 1-5 | Weekdays at 9:00 AM |
*/30 * * * * | Every 30 minutes |
0 */4 * * * | Every 4 hours |
0 8 * * 1 | Every Monday at 8:00 AM |
0 0 * * * | Every day at midnight |
0 18 * * 5 | Every Friday at 6:00 PM (end-of-week summary) |
Self-improvement mode
When selfImprovement: true, the heartbeat agent receives additional context: the last 7 days of session summaries from your vault, your current slash command library, and a meta-prompt instructing it to identify workflow friction and write new skills.
What the agent can write
The self-improvement agent has write access to ~/.claude/commands/, which is where Claude Code loads custom slash commands. It can create, update, or delete skill files in this directory.
Safety guardrails
Self-improvement agents can only write to ~/.claude/commands/. They do not have access to your project files, vault notes outside the sessions/ directory, or any other system paths. Permission requests for anything outside this scope are automatically denied.
What the heartbeat agent does
A standard (non-self-improvement) heartbeat agent runs a configurable taskPrompt. Common use cases:
Check interval
The renderer polls the cron schedule every minute using a setInterval in the Agenties window process. When the cron expression matches the current minute, a heartbeat spawn is triggered. The most recent heartbeat fire time is stored in config.json to prevent double-firing on rapid app restarts.
Heartbeat history
Every heartbeat run is logged in the Heartbeats panel (navigate with /heartbeats). You can see the run time, model used, token cost, and the full output stream. Heartbeat output is also posted as a status message to the mailbox and can be exported with /export.