Proposal: make provider/API-key setup approachable for non-technical users (in-app key guidance + validation)
Problem
The current onboarding "Connect a model" step shows a password field for an API key with no in-app path to actually get one, and the key is never validated — a wrong or expired key is accepted silently and only fails later, mid-conversation, with an opaque error. For a non-technical user (e.g. handing this to a family member), this is a hard stop: they don't know how to obtain an OpenAI/Anthropic/Google key, and they get no feedback that what they pasted is wrong.
There's already a proven pattern in the codebase
Connector descriptors (platform/coworker/connectors/descriptors.py) already do exactly the right things that model providers don't:
- step-by-step
instructionsrendered as a numbered list in the UI (e.g. "Open Telegram and message @BotFather…"), and - a live
validatecallback that confirms the credential with a real API call.
Model-provider setup (platform/coworker/providers/registry.py) has neither.
Proposal
- Key-acquisition help — add per-provider "how to get a key" instructions + a deep link to each provider's key page (OpenAI / Anthropic / Google AI Studio), surfaced in both onboarding and the Manage panel. (The
helptext partly exists already but onboarding doesn't render it.) - Validate on save — a one-shot live check when a key is entered, returning a clear success (or a real, specific error) instead of silent acceptance. Transient/offline failures should still let the user save, just flagged as unvalidated.
Explicitly out of scope
- OAuth — deferred (tracked separately in #302); API keys remain the path here.
- This is not the broader generic provider/model config redesign in #328 — it's an additive UX layer on the existing flow.
Offer
Happy to open a PR. The descriptor enrichment (part 1) is small and purely additive and could land on its own first; validation (part 2) can follow. Would you welcome this, prefer to own the onboarding surface yourselves, or want it split differently?
Source: andrewyng/aisuite