Provider Health Check

Purpose

Verify Hermes can reach LiteLLM, OmniRoute, OpenRouter-style fallbacks, and the WebUI, and report which paths are healthy or degraded.

Symptoms that match this runbook

  • Models list is slow or blank in Hermes
  • Fallback model retries happen immediately
  • Chat returns 5xx or gateway errors

Prerequisites

  • Network access from this host to litellm:4000, omniroute:20128, opencode.ai, api.telegram.org, Telegram fallback IPs
  • Hermes config slocated at ~/.hermes/config.yaml

Procedure

1. Check local Hermes services

hermes gateway status
hermes dashboard status

2. Check main provider reachability

python3 -c "import urllib.request; urllib.request.urlopen('http://litellm:4000/v1/models', timeout=4)"

Current install behavior: LiteLLM responds but requires auth, so HTTP 401 is expected from an unauthenticated check.

3. Check OmniRoute reachability

python3 -c "
import urllib.request, json, yaml
with open('/home/hermes/.hermes/config.yaml') as f:
    cfg = yaml.safe_load(f)
key = [p['api_key'] for p in cfg.get('custom_providers',[]) if p.get('name')=='omniroute'][0]
req = urllib.request.Request('http://omniroute:20128/v1/models', headers={'Authorization': f'Bearer {key}'})
with urllib.request.urlopen(req, timeout=5) as r:
    data = json.loads(r.read())
    print('OmniRoute OK, models:', len(data.get('data', [])))
"

Current verified result: reachable and returns a non-empty model catalog.

4. Check fallback provider endpoints

curl -s -o /dev/null -w "%{http_code}" --max-time 5 https://opencode.ai/zen/v1/models
curl -s -o /dev/null -w "%{http_code}" --max-time 5 https://inference-api.nousresearch.com/v1/models
curl -s -o /dev/null -w "%{http_code}" --max-time 5 https://ollama.com/v1/models

Any non-200 here means that fallback path is currently offline.

5. Check WebUI health

curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8787/health

Expected: 200

6. Check gateway platform reachability

Tail the gateway journal for errors:

journalctl --user -u hermes-gateway.service -n 100 --no-pager

Look for repeated failures on Telegram IMAP, Telegram API, Slack Socket Mode, or Email fetch.

Verification

  • Gateway status shows active (running).
  • LiteLLM 401 from unauthenticated check is expected.
  • OmniRoute returns model count > 0.
  • Fallback URLs return 200 or expected auth codes.
  • WebUI /health returns 200.
  • Gateway journal shows no red alarm pattern.

Current install references

  • Hermes: v0.19.0, git install: /home/hermes/.hermes/hermes-agent
  • LiteLLM base URL: http://litellm:4000/v1
  • OmniRoute base URL: http://omniroute:20128/v1
  • OmniRoute direct IP: 100.88.81.19:20128
  • WebUI: http://0.0.0.0:8787/health

Rollback

  • This read-only runbook has no rollback side effects
  • If you change fallback providers during remediation, record and revert via hermes fallback list + previous wiki state

Last tested

2026-07-22