# Local Model Router Audit

Use when local models "stopped working", model list looks wrong in the UI, or Hermes and llama-swap disagree on which models exist.

## Root Cause Patterns

1. **Config YAML broken** — gateway ignores ALL overrides, uses defaults. Fix config parse first (see comprehensive-audit-template.md Phase 0).
2. **Model ID mismatch** — Hermes config lists one spelling, llama-swap registers another. Hermes will 404/null-route. One source of truth: prefer llama-swap IDs and mirror into config.
3. **Gone router registration** — Model was removed from llama-swap but still in Hermes config. "Was working before, now broken."
4. **Duplicate/alias drift** — Multiple variant IDs in config for the same model (e.g. `openai-20b-neo-plus-q8` vs `openai-20b-neoplus-q8`).
5. **Missing registration** — Model runs in llama-swap but is not in Hermes config. Cannot be selected via `/model` or UI.

## Verification

Use the comprehensive-audit-template Phase 3 pattern to compare IDs.
Avoid `curl X | python3` — Hermes security scanner flags HIGH on that pipe.
Use Python urllib.request to fetch http://127.0.0.1:9292/v1/models instead.

After adding/registering a model: restart gateway (`hermes gateway restart`) for it to appear.
When names differ, choose the router name and re-register in config.
llama-swap is the source of truth on a stable-router setup.