AI Curator — Autonomous Model Curation

  • Area: Intelligence
  • Path: services/ai/curator
  • Kind: Orchestrator daemon (multimodal discovery + tiered eval + benchmark-relevance ranking + governed promotion proposals)
  • Status: v0.0.1 — active build (2026-06-01). Daemon + all 3 loops + the governed flip implemented & VM-verified: CURATOR-001 (daemonscheduler), 002 (Loop B discovery), 003 (Loop A ranking + proposals), 006 (Loop C meta-benchmark), 010 (license gate), 008 (catalog writer), 004 (approval bootstrap). Pending: 005 (koder-notify), 007 (tiered eval), 009 (landingobs). Slug curator pending naming ratification.

Role in the stack

curator is the answer to "how does the served model base stay current and benchmark-grounded without a human hand-editing runtime/models.yaml?". It runs three loops — (A) rank the served set by benchmark relevance, (B) discover new models across modalities, (C) keep the benchmark set itself relevant — and emits a PromotionProposal that internal Koder staff approve before any model is served. The funnel (discover → measure → rank → propose) is autonomous; the flip to serving is governed (stack-RFC-008 D1).

Boundary vs neighbors

  • services/ai/eval measures (tiered: triage → full self-hosted on s.khost1); curator never runs benchmarks itself.
  • services/ai/modelreg is the metadata system of record (GlobalTenant="koder"); curator writes via modelreg #003#004#005, owns no catalog storage.
  • services/ai/runtime + gateway serve; curator writes models.yaml / aliases only on approval (CURATOR-008).
  • services/foundation/desk (#063) is the production approval surface (internal-Koder control-plane, staff roles via Koder ID); infra/observe/notify fans out notifications.
  • services/ai/zoo is the public model hub — distinct from curator; future zoo backend reads from modelreg, not curator.

Planes

Curation/approval is control-plane (internal Koder staff), scoped to the operator tenant — not a customer-tenant decision. Customer tenants only read the global catalog; tenant model-preference is a separate future data-plane axis.

Loops (backlog)

  • Loop A (CURATOR-003) — relevance ranking + PromotionProposal.
  • Loop B (CURATOR-002) — multimodal discovery (generalizes runtime's text-only --discover).
  • Loop C (CURATOR-006) — benchmark-of-benchmarks; maintains registries/ai-benchmarks.md.
  • Governance/IO: desk approval (004), koder-notify (005), tiered eval (007), catalog writer (008).

Refs

  • meta/docs/stack/rfcs/stack-RFC-008-autonomous-model-curation.kmd
  • meta/docs/stack/rfcs/curator-RFC-001-foundations.kmd
  • meta/docs/stack/registries/ai-benchmarks.md