Repository source: docs/plans/archive/multi_provider_llm_config_step2_feature_description.md
Multi Provider LLM Config Step 2 Feature Description
Problem
The application currently exposes LLM setup through Dedalus-specific config, which makes production recovery difficult when Dedalus is unavailable and obscures support for direct OpenAI, Anthropic, OpenRouter, or gateway-backed providers.
User Stories
As an instance operator, I want to select an LLM provider in private config so that I can use the account and reliability profile that fits my deployment.
As an instance operator, I want direct OpenAI, direct Anthropic, OpenRouter, Dedalus, and OpenAI-compatible gateway options so that I am not locked into one vendor.
As an instance operator, I want provider failures to retain redacted request/response diagnostics so that production issues can be debugged without leaking secrets.
As an approved user requesting a reply, I want provider changes to preserve existing analysis and reply behavior so that the site workflow stays predictable.
As a maintainer, I want provider-specific differences hidden behind one shared contract so that future providers can be added without forking analysis and reply features.
Core Requirements
Private config must support a provider-neutral LLM selection while preserving existing Dedalus config compatibility for current installs.
OpenAI-compatible providers must cover OpenAI, OpenRouter, Dedalus, LiteLLM, and local/proxy gateways through common base URL, model, key, and optional header settings.
Direct Anthropic must be supported as a first-class provider, including structured analysis output compatible with the existing stored analysis contract.
Provider failures must continue to store redacted request/response diagnostics and surface useful operator-facing status through existing diagnostic commands.
Missing or disabled provider config must keep the current graceful behavior: deterministic analysis still runs where available, and post/reply rendering must not break.
Shared Component Inventory
Private config file and
./v3 private-config: extend the canonical operator configuration surface; no new config UI is needed.PrivateConfigloading and environment overrides: reuse as the single source of private provider settings.Post analysis service and stored analysis rows: reuse the existing analysis contract, including provider metadata, raw diagnostics, and failure state.
Agent reply fulfillment and generated-response rows: reuse stored analysis and existing reply gates; provider switching must not create a separate reply workflow.
./v3 agent-reply status: extend the current diagnostic command output only as needed for provider-neutral labels.Production deploy runbook: update the existing operator documentation instead of adding a parallel provider guide.
Browser post-analysis and reply feedback UI: reuse unchanged result states unless provider-neutral wording is required.
Simple User Flow
Operator chooses a provider family: OpenAI-compatible, Anthropic, or stub.
Operator writes private config with the provider, API key, model, timeout, and provider-specific optional settings.
Operator runs the existing config view or diagnostic command to confirm the app sees the intended provider without printing secrets.
A post analysis or reply request runs through the selected provider.
The app stores the same analysis/reply outcomes and diagnostics regardless of provider.
If the provider fails, the operator uses existing status output to inspect status code, request ID, response body, and selected provider/model.
Success Criteria
A fresh or existing install can run with direct OpenAI by changing private config only.
A fresh or existing install can run with direct Anthropic by changing private config only.
A fresh or existing install can run with OpenRouter or another OpenAI-compatible gateway by changing private config only.
Existing Dedalus installs continue to work without immediate config rewrites.
Provider failures show provider-neutral diagnostics with redacted secrets in stored rows and
./v3 agent-reply status.Existing post analysis, agent reply request, fulfillment, and rendering tests continue to pass.