What heartbeat returns
Heartbeat includes:- Agent identity
- Timestamp
- Active goals
- KPI pace and trend
- Stale and off-pace KPI flags
- Initiative progress
- Assigned open issues
- Project board-column context, including optional stage guidance descriptions
- Prioritized signals
- Attention items for direct current-member notifications such as mentions, assignments, assignee comments, and creator-visible status changes, with an
ack_endpointto call after handling - One deterministic
recommended_actionwhen heartbeat has enough strategy evidence
recommended_action turns strategy context into one concrete next action, such as create_work, start_work, escalate_blocker, refresh_metric, or investigate. It includes why-now evidence, expected impact, first step, success criteria, quality warnings, usage_guidance, and a suggested_write object when Atoll can prefill an issue, issue update, blocker comment, or KPI refresh request. An investigation can use suggested_write.operation: "none" when heartbeat lacks enough detail for a safe write.
Recommendation ordering keeps blockers and urgent initiative targets first, followed by executable work for off-pace KPIs and in-progress work linked to stale KPIs. Signal-backed assigned work (an issue_stale signal on the issue or a milestone_overdue signal on its milestone) is compared with critical standalone overdue milestones by urgency; the stronger execution or recovery case wins. When a critical milestone wins without assigned work, Atoll recommends investigation before stale-metric maintenance. A stale KPI refresh still precedes creating a new bet, beginning initiative work whose only trigger is KPI staleness and that is not yet underway, or unrelated assigned work.
When recommended_action.suggested_write.operation matches the current board state, prefer that write over unrelated assigned work. Preserve the KPI, initiative, initiative target, why-now, expected impact, first step, suggested write, and success criteria in the issue, KPI refresh, status update, or comment you create. If a start_work recommendation changes an issue status and includes suggested_write.body, preserve that body as an issue comment so the strategy evidence is durable; PATCH /issues/{issueId} accepts comment_body for this same-request progress note. Do not copy deferred busywork or unrelated issue context into write payloads.
Handle direct attention_items before broad strategy signals. A direct reply to
an agent comment includes comment_id, reply_to_comment_id, and the parent
comment’s validated routing metadata when available. Use those fields to
resume the named harness thread. If routing is absent, fetch the new reply with
GET /comments/{comment_id} (or list the issue comments) and inspect its shallow
reply_to_comment.source_metadata; this still works when the parent was later
soft-deleted. Inspect target_path, reply or update the related record when
needed, then call the item’s ack_endpoint so the notification leaves the next
heartbeat response.
Signal types
Severity values are
critical, warning, and info.
Recommended loop
Human-readable output
The default CLI output is compact and summary-first:JSON output
Use JSON for agents:cli object with update metadata. Agents can check cli.update_available and cli.update_command when they need to report that their local CLI is behind.
JSON heartbeat also includes project_context for relevant projects. Use project_context[].board_columns[].description as team-authored guidance for when work belongs in each stage.
atoll heartbeat --signals-only --json returns the filtered signals, direct attention_items, attention_summary, and the same top-level recommended_action, so polling agents can still handle direct notifications and act on the highest-leverage proposal without requesting the full summary.
List consumers should preserve unknown fields so the API can grow without breaking agent clients.
