- Strix Halo ornith RPM increased from 40 to 60 inside syslog-auto pool
- Prevented unbounded ornith traffic when multiple agents use syslog-auto
- Direct ornith remains at RPM=40
- All models verified healthy (ornith 80ms, gemma 110ms, qwen 840ms)
- Added full routing table to gpu-fleet contract
Manages the GPU inference fleet across all hosts. Handles model deployment, registration, health checks, LiteLLM sync, agent key management, GPU saturation watchdog, Prometheus/Grafana monitoring, and self-healing. UPDATED 2026-07-12: Architecture is DIRECT GPU — LiteLLM routes directly to llama-server on each GPU host (no router in inference path). Router (port 9000) is running but NOT in request path. All GPUs standardized on api-key 'not-needed'. RTX 5070 had api-key mismatch (sk-loc...5678) that caused cascading 401→timeout→401 fallback loops — fixed. Context: RTX 3090 verified at 256K (was documented as 128K — WRONG). Workload: Compression moved to Strix Halo, RTX 5070 → vision/web only.
abiba
on model add/remove
on GPU health degradation
on agent key rotation
on router restart (roster must be loaded)
Maintains
gpu_roster: { models: map, hosts: map } — Single source of truth for all GPU models
Check port conflicts: verify only one llama-server on :8080 per host
Verify agent keys: 9 keys in LiteLLM DB (GET /key/list)
Agent Keys (LiteLLM DB — Current 2026-07-11)
Keys stored in Infisical vault (project=agents, env=production, secret=LITELLM_API_KEY).
Agent gateways inject keys at runtime via infisical run -- wrapper.
Plaintext keys removed from this contract post-vault-migration.
Key update procedure: Update Infisical vault → infisical secrets set LITELLM_API_KEY=sk-... --project=agents --env=production → restart agent gateway. Agent picks up new key via infisical run -- wrapper at startup.
If no SSH access, send Zulip DM via abiba-bot with vault update instructions.
Configuration Files
File
Host
Purpose
/opt/inference-harness/docker-compose.yml
CT 116
All containers (router, litellm, nginx, postgres, redis, dashboard)
Strix Halo GPU: Vulkan is the working backend (ROCm/HIP path abandoned — HSA runtime blocked on Debian 13). Build at /root/llama.cpp/build-vk/, commit 4fc4ec5 (2026-07-01), ggml 0.15.3 shared-lib arch. Mesa RADV 25.0.7, KHR_coopmat fast path active. ~70 tok/s gen, 532 tok/s prompt. Service: ornith-server.service on port 8080, 256K context, flash-attn + q8 KV.
Port conflict detection (2026-07-05): All 3 GPU wrappers now detect ghost processes squatting port 8080 before starting. .8 and .110 use inline pre-start check in llama-wrapper.sh; .15 uses /usr/local/bin/port-cleanup.sh ExecStartPre. Replaces the blanket pkill -9 -x llama-server on .15 which would kill ALL llama-server instances regardless of port. Ghost detection was the root cause of .8 crash-looping for 27+ restarts (stale pid 25836 squatting 8080 after OOM kill).
Strix Halo thermal safeguard (2026-07-02): ornith-server.service has -n 8192 (hard generation cap per request). Without it, --predict defaults to -1 (infinity) — a runaway request from .123 (Mumuni) decoded 39,868 tokens over 24 min, pushing Tctl to 98°C (crit 89.8°C) and throttling 70→29 t/s. The cap bounds worst-case generation to ~5 min. Do NOT remove -n without a replacement ceiling. Sustained load hits ~84°C even at 92s; the APU is fanless/low-flow. Clients MUST also set max_tokens.
Port 8080 firewall: amdpve iptables restricts 8080 to 192.168.68.116 (LiteLLM/router host) only. All inbound connections are from .116 (LiteLLM proxied via nginx). Localhost curls hang (SYN dropped). Always test from .116.
Router sidecar fallback: router.pycheck_gpu_health() now probes GPU /health directly when sidecar at :8090 is absent. Sidecar JSON exporters not deployed on any GPU host — router relies on GPU-direct fallback.
Router GPU_MOE_URL bug (fixed 2026-07-01): docker-compose had GPU_MOE_URL=.110:8080 (gemma host) instead of .15:8080 (amdpve). Corrected.
Alert migration: All alerts now go to #agent-hub topics (alerts-gpu, alerts-pm2, alerts-infra) instead of DMs. Cross-agent visibility enabled.
tok/s benchmarks: Measured every 5 min via LiteLLM proxy. Baselines tracked with 30%/50% degradation thresholds.
NetBird 502: Tanko routes through NetBird for litellm.sysloggh.net. Use direct IP if NetBird down.
GPU Inference Benchmarks (Current)
GPU
Model
Gen tok/s
Prompt tok/s
Baseline
Samples
RTX 3090 (.8)
qwen3.6-27B-code
75
305
74
6
RTX 5070 (.110)
gemma-4-12b
75
323
75
6
Strix Halo (.15)
ornith-1.0-35b
70
532
70
6
Benchmarks run through LiteLLM proxy (192.168.68.116:4001) every 5 minutes.
Degradation alerts fire at 30% (warning) and 50% (critical) below baseline.
History stored at /root/data/toks-history.json with 7-day rolling window.
Note (2026-07-01): Strix Halo prompt tok/s jumped 209→532 after Vulkan rebuild (cooperative-matrix fast path now active on GFX1151). Baseline may need re-calibration.
Agent Config Implications (2026-07-12)
With RTX 3090 at 256K context (verified July 2026):
Agents using syslog-auto (55/30/15 qwen+ornith+gemma): context_length: 262144 — ornith and qwen both support it
Agents using qwen3.6-27B-code directly: context_length: 262144 (256K ctx verified)
Agents using gemma-4-12b directly (auxiliary tasks): context_length: 131072
Compression threshold at 0.65: fires at ~170K for 262K context window on Strix Halo
All Hermes clients MUST set max_tokens: 4096 — first line of defense before server-side -n 8192 cap
Port 8080 is used on all 3 GPU hosts (not 8090 as previously documented)