1 Commits

Author SHA1 Message Date
b5aaceb65a Add model registry: schema + populate (kb#133, A2A-1)
Per DESIGN-a2a-agents.md v2.1 §2-3b: models are the scarce queued
resource, version-controlled here rather than hardcoded in callers.

- model-registry.yaml: kimi (main reasoning, quota-gated), local-small
  (ollama/gemma3:4b, always-on cheap tier), bge-m3 (embedder + routing
  classifier, never-evict), tei-reranker (never-evict, interactive-
  critical), paid-fallback (metered, opt-in only, unreachable by
  default via empty routing.metered_opt_in). GPU residency policy
  carries the never-evict set, co-residency groups, and measured
  baseline (bge-m3+gemma3:4b+tei-reranker ~6.2/8GB on the GTX 1070).

- model_registry.py: resolve(tier) picks an available model without
  the caller naming one, gated so a metered model is only reachable
  with both allow_metered=True and an opted-in virtual key;
  to_probe_config() bridges registry quota data into kb_worker.py's
  existing Probe classes (no duplicated probe logic); preload_check()
  expresses the §3b pre-load VRAM check purely from registry data.

Gap noted for follow-up: bge-m3 has no litellm-config.yaml model_list
entry yet (embedder there still points at ollama/nomic-embed-text on
a different port) — out of scope here, registry documents it as-is.
2026-07-21 12:07:11 +00:00