Verify a HermesAgent is healthy¶
This guide shows you the four checks that confirm an agent is fully working end-to-end, from "the CR landed in etcd" to "a real message round-trip succeeded."
Run these in order. If any check fails, the next one is meaningless until you fix it. For decision-tree-style triage, see Troubleshoot an agent that isn't Ready.
1. CR-level: status.phase is Ready¶
If PHASE is anything other than Ready, jump to Troubleshoot an agent that isn't Ready.
Also check the conditions:
Expect PodReady=True, SecretsResolved=True, RBACSynced=True. If the dashboard sidecar is enabled, also expect GatewaysReady=True. See Lifecycle, phases, and conditions for what each condition means.
2. Pod-level: the pod is Ready and the gateway is running¶
READY should be 1/1 (or 2/2 if the dashboard sidecar is enabled). RESTARTS should be 0 for a fresh deploy; non-zero is not always wrong, but worth a glance at logs to see what restarted.
Check the agent logs for the readiness signal:
Expect ✓ Gateway is running. The exec probe greps for this exact string.
3. Gateway-level: the messaging platform is connected¶
For each gateway entry on the CR, check the platform-side connection. The exact log line varies:
- Discord:
Logged in as <bot-name>after token validation. - Telegram:
Bot @<handle> connectedor similar. - WhatsApp: a QR-code prompt or the saved-session reuse line.
If the dashboard sidecar is enabled, the same information is in status.gateways[]:
[
{
"type": "discord",
"ready": true,
"state": "connected",
"lastProbedAt": "2026-05-30T12:34:56Z"
}
]
Without the dashboard, you only see this from the logs.
4. End-to-end: send a real message and get a reply¶
This is the only check that exercises the full path: Discord/Telegram/WhatsApp API → upstream gateway → LLM provider → reply.
From your messaging platform, send the agent a direct message:
- Discord: DM the bot, or
@mentionit in a channel where it hasView Channels+Send Messagespermissions. - Telegram: search for the bot by handle and send
/startor any message. - WhatsApp: message the bot's number.
A reply should come back within a few seconds. If it doesn't, check agent logs for a stack trace from the LLM call (auth, model name, rate limit, network). A common one: HTTP 400 ... but you passed anthropic/claude-opus-4.6 when using a non-Anthropic provider. See Change the LLM provider for an agent.
Optional: dashboard /api/status walk-through¶
If spec.dashboard.enabled: true:
kubectl -n hermes port-forward svc/hermes-my-agent-dashboard 9119:9119
curl -s http://localhost:9119/api/status | jq
{
"gateway_running": true,
"gateway_platforms": {
"discord": { "state": "connected", "error_message": "" }
}
}
gateway_running: true AND every platform state: connected means the agent is fully operational.
See also¶
- Troubleshoot an agent that isn't Ready — when one of the checks above fails.
- Lifecycle, phases, and conditions — what each status field means.
- Reference: Troubleshooting catalogue — symptom-keyed lookup.