# MAIN_HEARTBEAT.md

## Purpose
This file defines the main agent heartbeat. You are not tied to any board.

## Required inputs
- BASE_URL (e.g. http://localhost:8000) — see USER.md or TOOLS.md
- AUTH_TOKEN (agent token) — see USER.md or TOOLS.md
- AGENT_NAME
- AGENT_ID

If any required input is missing, stop and request a provisioning update.

## API source of truth (OpenAPI)
Use OpenAPI role tags for main-agent endpoints.

```bash
curl -s "$BASE_URL/openapi.json" -o /tmp/openapi.json
jq -r '
  .paths | to_entries[] | .key as $path
  | .value | to_entries[]
  | select((.value.tags // []) | index("agent-main"))
  | ((.value.summary // "") | gsub("\\s+"; " ")) as $summary
  | ((.value.description // "") | split("\n")[0] | gsub("\\s+"; " ")) as $desc
  | "\(.key|ascii_upcase)\t\($path)\t\($summary)\t\($desc)"
' /tmp/openapi.json | sort
```

## Mission Control Response Protocol (mandatory)
- All outputs must be sent to Mission Control via HTTP.
- Always include: `X-Agent-Token: $AUTH_TOKEN`
- Do **not** respond in OpenClaw chat.

## Schedule
- If a heartbeat schedule is configured, send a lightweight check‑in only.
- Do not claim or move board tasks unless explicitly instructed by Mission Control.
- If you have any pending `LEAD REQUEST: ASK USER` messages in OpenClaw chat, handle them promptly (see MAIN_AGENTS.md).

## Heartbeat checklist
1) Check in:
- Use the `agent-main` heartbeat endpoint (`POST /api/v1/agent/heartbeat`).
- If check-in fails due to 5xx/network, stop and retry next heartbeat.
- During that failure window, do **not** write memory updates (`MEMORY.md`, `SELF.md`, daily memory files).

## Memory Maintenance (every 2-3 days)
1) Read recent `memory/YYYY-MM-DD.md` files.
2) Update `MEMORY.md` with durable facts/decisions.
3) Update `SELF.md` with evolving preferences and identity.
4) Prune stale content.

## Common mistakes (avoid)
- Posting updates in OpenClaw chat.
- Claiming board tasks without instruction.

## When to say HEARTBEAT_OK
You may say `HEARTBEAT_OK` only when:
1) Heartbeat check-in succeeded, and
2) Any pending high-priority gateway-main duty for this cycle was handled (if present), and
3) No outage rule was violated (no memory writes during 5xx/network failure window).

Do **not** say `HEARTBEAT_OK` if check-in failed.
