Description
The Runtime LLM Provider Registry is the formal developer seam for adding another model provider to Dots without modifying the frozen built-in catalog. A composition root registers a provider descriptor under a new name, including display name, implementation type, shipped or deferred status, default model, model catalog, and capability metadata. Overlay-aware lookup and listing functions expose the union, while built-in-only functions remain deterministic.
Runtime provider names are intentionally wider than the closed built-in LLMProviderName union. Registration validates non-empty names and rejects collisions with built-ins or earlier runtime entries. Status-aware helpers expose only genuinely shipped providers, and model helpers preserve the distinction between curated displayable models and internal resolution identifiers.
Selling Points
- Enterprise or product-specific compositions can add an LLM provider without forking the package's central catalog.
- Frozen built-in behavior protects existing pickers and dispatchers from unexpected overlay changes unless they opt into the combined list.
- Collision protection prevents an integration from silently replacing Anthropic, OpenRouter, or another known provider.
- Provider descriptors carry model and capability facts needed by routing and UI rather than leaving consumers to infer them.
- Shipped/deferred filtering keeps catalog presence from being mistaken for a usable integration.
User Story
A deployment has an approved internal model gateway. Its composition implements the common provider contract, registers catalog metadata under a new runtime name, and includes the provider in its own dispatcher assembly. Overlay-aware picker or diagnostic code can discover it, while built-in-only consumers continue to see the unchanged platform catalog.
Extension Surface
Pluggable is the defining rung. packages/llm-providers/src/provider-registry.ts exports registerLLMProvider, findLLMProviderInfo, and combined list helpers, and packages/llm-providers/src/types.ts defines the LLMProvider behavior and model contracts implementations satisfy. A new provider can be composed without editing core registry data.
Capabilities & Limits
- Registers runtime provider names, status, type, display metadata, default model, and model descriptors.
- Resolves built-in-first lookup and lists runtime-only or combined provider populations.
- Filters the combined population to providers that explicitly declare shipped status.
- Limits: the registry stores metadata, not credentials or constructed instances; the composition must separately assemble dispatch.
- Limits: registration is process-local and operator-scoped, with no tenant-facing production route for arbitrary provider installation.
Implementation Map
packages/llm-providers/src/provider-registry.tspackages/llm-providers/src/types.tspackages/llm-providers/src/index.tspackages/llm-providers/src/provider-registry-runtime.test.tspackages/llm-providers/src/streaming-capability.test.ts