3.3 KiB
3.3 KiB
title, type, status, created, updated, verified_on, last_tested, confidence, tags, sources
| title | type | status | created | updated | verified_on | last_tested | confidence | tags | sources | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Provider Health Check | runbook | active | 2026-07-22 | 2026-07-22 | 2026-07-22 | 2026-07-22 | high |
|
|
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
/healthreturns200. - 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