litellm requires the api_key field even for local OpenAI-compatible servers (LM Studio, llama.cpp). Use "local" as a sentinel value for providers that don't require a real key. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- setup/providers.py: registry for 8 providers (3 local, 5 cloud), frozen dataclasses - setup/wizard.py: questionary-based wizard — provider select, model input, API key collected via vault.writer (not config.yaml), connectivity check, test call via litellm Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>