Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ADR 0004: LLM Configuration Uses the Standard Config Lifecycle

  • Status: Superseded filesystem projection; accepted values-backed lifecycle
  • Date: 2026-08-15

Decision

llm-router uses the same configuration authority and lifecycle as every other reloadable gateway module. The config server’s current immutable values.yml snapshot is the only source of LLM routing configuration.

At startup, LightRuntime downloads the current snapshot, resolves llm-router.yml, compiles the complete providers/deployments/aliases graph, and publishes one immutable runtime snapshot. During an explicit module reload, the runtime downloads the current snapshot again and invokes only the selected reloaders. LlmRouterReloader compiles from that fresh reload context and atomically swaps the candidate only after validation succeeds. A failed reload retains the last-known-good LLM runtime.

The former config-server /files manifest/resource projection, LlmProjectionWorker polling loop, projection checkpoint, and gateway-to-Portal publication acknowledgement are removed. LLM configuration cannot change merely because files appeared in config-cache; it changes only at startup or when llm-router is included in an explicit reload.

Configuration Boundary

The typed llm-router.* properties in values.yml include the complete provider, deployment, alias, policy-derived, pricing, and non-secret runtime material configuration. Map and list properties are whole typed nodes, not quoted JSON strings.

Credential and reasoning-seal values remain outside config server. The snapshot contains only env: or opaque credential references plus the authorized local reference-to-environment mapping. Trust-bundle configuration similarly contains only approved references, paths, and digests; it does not contain private key or provider credential bytes.

The config snapshot is immutable. Publishing control-plane changes means updating the target instance’s llm-router properties, creating/promoting a new snapshot through the normal config workflow, and then explicitly restarting or reloading llm-router.

Consequences

  • Startup and reload observe one coherent config-server snapshot.
  • Reloading an unrelated module cannot alter LLM routing.
  • In-flight requests retain the immutable runtime snapshot they captured.
  • There is no second polling, sequence, checkpoint, or acknowledgement protocol.
  • Delivery success is reported by the standard module reload result; provider reachability remains a separate runtime qualification concern.