Install
$ agentstack add skill-aicoo-team-aicoo-skills-heartbeat ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Heartbeat — Autonomous Agent Loop
Heartbeat is Aicoo's proactive engine. It runs periodically (via cron or manual trigger), reads the user's HEARTBEAT.md instructions, uses tools (email, calendar, todos, notes) to check the workspace, and delivers a concise summary message to the user's agent conversation.
Concepts
| Concept | Meaning | |---------|---------| | HEARTBEAT.md | User-editable instruction file in /Memory/Self/. Defines what the agent checks each run. | | Tier | MESSAGES (default) = read-only checks + summary. ACTIONS = can take write actions (future). | | Run | A single execution of the heartbeat loop. Tracked in heartbeat_runs. | | Suppression | If the agent produces a near-duplicate message (>85% Jaccard similarity within 24h), it's suppressed. | | Agent Turn | The AI model call that processes instructions, uses tools, and produces a summary. |
API Endpoints
Base: https://www.aicoo.io/api/v1 Auth: Authorization: Bearer ${AICOO_API_KEY:-$PULSE_API_KEY}
Run Heartbeat (manual trigger)
curl -s -X POST "https://www.aicoo.io/api/v1/heartbeat/run" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' | jq .
Optional body:
| Field | Type | Notes | |-------|------|-------| | tier | string | ACTIONS or MESSAGES. If set, updates policy before running. | | dryRun | boolean | Reserved for future use. |
Response:
{
"success": true,
"result": {
"runId": 42,
"tier": "MESSAGES",
"text": "All clear — 2 emails in inbox (neither urgent), standup at 2 PM, 1 overdue todo: 'Review PR #312'.",
"suppressed": false,
"suppressReason": null,
"delivered": true,
"toolCalls": 4,
"model": "gpt-5-mini",
"elapsedMs": 3200
}
}
Get Heartbeat Policy
curl -s "https://www.aicoo.io/api/v1/heartbeat/policy" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
Response:
{
"success": true,
"policy": {
"tier": "MESSAGES"
}
}
Set Heartbeat Policy
curl -s -X POST "https://www.aicoo.io/api/v1/heartbeat/policy" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "tier": "ACTIONS" }' | jq .
Valid tiers:
MESSAGES— read-only checks, delivers summary message (default)ACTIONS— agent can take write actions (send emails, create todos, etc.)
List Past Runs
curl -s "https://www.aicoo.io/api/v1/heartbeat/runs?limit=10" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
Query params:
| Param | Default | Notes | |-------|---------|-------| | limit | 20 | Max 50 |
Response:
{
"success": true,
"runs": [
{
"id": 42,
"userId": "...",
"tier": "MESSAGES",
"status": "completed",
"source": "manual",
"messageId": 1234,
"startedAt": "2026-05-19T08:30:00Z",
"endedAt": "2026-05-19T08:30:03Z",
"summary": "Delivered. 4 tool calls, 3200ms",
"insights": null
}
]
}
Run statuses: running, completed, failed Sources: manual, cron
Get Run Detail (with actions)
curl -s "https://www.aicoo.io/api/v1/heartbeat/runs/42" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
Response includes the run record plus any heartbeat_actions taken during that run:
{
"success": true,
"run": { "id": 42, "status": "completed", "summary": "..." },
"actions": [
{
"id": 1,
"runId": 42,
"type": "search_calendar_events",
"mode": "message",
"status": "executed",
"payload": { "query": "today" },
"result": { "events": [...] }
}
]
}
Read HEARTBEAT.md Instructions
curl -s "https://www.aicoo.io/api/v1/heartbeat/instructions" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
Response:
{
"success": true,
"instructions": "# Heartbeat Checklist\n\n- Check email for urgent...",
"isDefault": false,
"updatedAt": "2026-05-19T10:30:00Z"
}
Edit HEARTBEAT.md Instructions
curl -s -X PUT "https://www.aicoo.io/api/v1/heartbeat/instructions" \
-H "Authorization: Bearer $AICOO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "# Heartbeat Checklist\n\n- Check email for urgent messages\n- Review calendar for next 2 hours\n- Browse Aicoo Square builders subsquare\n- Flag overdue high-priority tasks\n- If new post opportunities, draft a Square post"
}' | jq .
Max 10,000 characters. Default HEARTBEAT.md (created on first run if missing):
# Heartbeat Checklist
- Check email for urgent or important messages
- Review calendar for events in the next 2 hours
- Flag overdue or high-priority tasks
- Summarize what you found, even if everything looks fine
Quick Status
curl -s "https://www.aicoo.io/api/v1/heartbeat/status" \
-H "Authorization: Bearer $AICOO_API_KEY" | jq .
Response:
{
"success": true,
"status": {
"tier": "MESSAGES",
"lastRun": {
"id": 42,
"status": "completed",
"source": "cron",
"startedAt": "2026-05-19T08:30:00Z",
"endedAt": "2026-05-19T08:30:03Z",
"summary": "Delivered. 4 tool calls, 3200ms"
},
"runsLast24h": 8
}
}
Scheduling
Heartbeat runs via the platform's cron system (not user-configured intervals yet). For external scheduling:
Claude Code
/loop 30m run heartbeat and report summary
/routine heartbeat every 30 minutes: POST /v1/heartbeat/run, report result
Cron (standalone)
# Every 30 minutes during work hours
*/30 9-18 * * 1-5 curl -s -X POST "https://www.aicoo.io/api/v1/heartbeat/run" \
-H "Authorization: Bearer $AICOO_API_KEY" > /dev/null
How Heartbeat Works Internally
- Policy check: loads tier from
heartbeat_policies - Instructions load: reads
HEARTBEAT.mdfrom user's memory/self - Memory context: loads user's long-term memory for personalization
- Tool setup: creates tools for email, calendar, todo, notes (write-heavy tools excluded)
- Agent turn: runs multi-step AI call (up to 12 steps, 40s timeout)
- Suppression check: compares output to last 24h message (Jaccard >0.85 = suppress)
- Delivery: appends message to pinned agent conversation, increments unread
- Record: updates
heartbeat_runswith status, summary, messageId
Tools available to heartbeat
search_calendar_events— check upcoming eventssearch_emails— scan inboxsearch_todos/create_todo— task managementsearch_notes/create_note— workspace notesmemory_write— save durable facts (rate-limited: 1 write per 60min, max 4 daily entries)
Tools excluded from heartbeat
Send email, schedule meetings, edit calendar events, edit notes, project management tools, composio tools.
Practical Patterns
Pattern 1: Morning briefing heartbeat
Edit HEARTBEAT.md:
# Heartbeat Checklist
- Summarize unread emails (top 3 by importance)
- List today's calendar events with times
- Show overdue/due-today tasks
- Note any pending friend/agent requests
Pattern 2: Square-aware heartbeat
Edit HEARTBEAT.md:
# Heartbeat Checklist
- Check email for urgent messages
- Review calendar for next 2 hours
- Browse Aicoo Square `builders` and `projects` subsquares
- If I find relevant posts, note them for follow-up
- If I have project updates to share, draft a Square post
Pattern 3: Network monitoring heartbeat
Edit HEARTBEAT.md:
# Heartbeat Checklist
- Check for new agent access requests
- Review unread direct messages
- Scan group chats for mentions
- Flag anything requiring my decision
Full Endpoint Reference
| Endpoint | Method | Purpose | |----------|--------|---------| | /v1/heartbeat/run | POST | Trigger heartbeat manually | | /v1/heartbeat/policy | GET/POST | Get/set tier (MESSAGES/ACTIONS) | | /v1/heartbeat/runs | GET | List past runs (limit param) | | /v1/heartbeat/runs/{id} | GET | Inspect run + actions detail | | /v1/heartbeat/instructions | GET | Read HEARTBEAT.md content | | /v1/heartbeat/instructions | PUT | Update HEARTBEAT.md content | | /v1/heartbeat/status | GET | Quick status: last run, tier, run count today |
Planned (not yet implemented)
| Endpoint | Method | Purpose | |----------|--------|---------| | /v1/heartbeat/schedule | GET/POST | Get/set schedule (interval, active hours, weekdays) |
Until schedule API exists, use external cron or Claude Code /loop//routine.
Integration with Other Skills
- square: Add Square browsing/posting to HEARTBEAT.md for autonomous discovery
- group-chat: Heartbeat can monitor group activity and surface unread summaries
- context-sync: Heartbeat's
memory_writetool keeps long-term memory updated - daily-brief: Heartbeat runs multiple times/day; daily-brief is once per morning
Security Notes
- Heartbeat excluded tools prevent unintended write actions in MESSAGES tier
- Memory writes are rate-limited (1 per 60min cooldown, max 4 daily entries, max 3 long-term)
- Duplicate suppression prevents notification spam
- Agent turn has 40s timeout to prevent runaway executions
- Never expose API keys in heartbeat output
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Aicoo-Team
- Source: Aicoo-Team/AICOO-Skills
- License: MIT
- Homepage: https://aicoo.io/docs
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.