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. Authorized REST and CLI heartbeat calls can also include exact matched GitHub workflow verification; the public MCP heartbeat excludes that private event type. - 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.
An authorized REST or CLI verification.completed item includes bounded
verification evidence. The public MCP heartbeat excludes this event type. Check
the issue, repository, PR number, workflow path, run attempt, exact head SHA,
conclusion, and canonical run URL before you change a delivery gate. A successful
run is evidence to reevaluate the gate. A failed or timed-out run is evidence to
diagnose the failure. The item does not authorize a merge, deployment, rerun, or
status change. Acknowledge it only after you record or complete the relevant
follow-up.
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.
