The registry is what makes agents, models, and workflows configuration rather than code changes — most of these are read-heavy and cached (Settings.registry_cache_ttl_*).

Agents are seeded from code, not hand-registered

database/seeds/agent_manifests.py discovers every agents/*/*/agent.py module and upserts a manifest from its own declarations (AGENT_ID, ENTRYPOINT, category, display name) — make seed registers all 30+ agents in one idempotent pass. The registry API above is for runtime inspection and tuning (enabling a provider, adjusting a feature flag), not the primary way agents get added; see Guides → Adding a new agent.

Prompts are versioned

Prompt rows carry a version number; GET .../prompts/{id}/versions/{version} fetches a specific historical version. Prompt assignment supports deterministic A/B testing per tenant.

Providers can be toggled without a deploy

POST /api/v1/registry/providers/{provider_id}/enabled flips a provider on/off at runtime — useful for taking a misbehaving provider out of the routing pool without a code change or restart, ahead of (or alongside) the automatic circuit breaker.

AI Agents architecture