ChatGPT
OpenAI key, Responses
CATALOG
Añade ChatGPT o Claude, o cualquier API Responses/Anthropic. Failover recorre una lista. El stream no se reinicia.
Añade ChatGPT o Claude, o cualquier API Responses/Anthropic. Failover recorre una lista. El stream no se reinicia.
Clave OpenAI o Anthropic en sveda-server, o una fila de catálogo a cualquier URL Responses/Anthropic. DeepSeek es un wrapper opcional.
ChatGPT
OpenAI key, Responses
Claude
Anthropic key, messages
Custom
any compatible URL
Hardcoding a provider SDK in the widget means a new stream parser when the vendor flakes. Failover becomes a UI rewrite. Custom endpoints never join the same ordered list as the builtins. The catalog should live on the runtime.
Shipping a provider name in the Vue tree couples deploy to catalog. Keys and URLs live on sveda-server. The client may pass model on a turn; it does not own the list.
Drop the primary, remount the chat, lose tool state. Sveda walks failover_ids on the same POST /sveda/stream. Event types do not change.
A Responses-only client cannot take an Anthropic URL. Catalog rows speak responses or anthropic — ChatGPT, Claude, a custom host, or the DeepSeek wrapper.
Put an OpenAI or Anthropic key on the sidecar, or a catalog row with any Responses / Anthropic-compatible URL. DeepSeek wrappers are optional builtins in the same list. Failover walks failover_ids.
OpenAI key on the sidecar, protocol responses. Same stream as every other catalog row.
Anthropic key on the sidecar, protocol anthropic. Failover can walk here without a new client.
Any compatible host, or the optional DeepSeek wrapper. Not a new widget — a catalog row.
Stream held. Event types unchanged.
session.send may include model or provider. Failover is still the ordered list on the runtime. You do not rebuild the widget when ChatGPT times out and Claude continues the turn.
This is not a hosted model marketplace. Keys and custom URLs stay on sveda-server. The marketing site is not a chatbot SaaS. Point a custom row at any Responses or Anthropic-compatible URL and put it in failover_ids if it should catch a drop.
Ids and env are in the models docs. Model failover is the same catalog, written as a job to keep the stream up.
Rust runtime
The catalog is configured on sveda-server, not in @sveda-ai/core.
Stream protocol
Failover does not introduce new event names.
JS client
Optional model on send. Same SvedaClient either way.
Models docs
Catalog ids, protocols, aliases, and failover env.
Model failover
Ordered list without rewriting the stream.
Runtime docs
Where the catalog is served from.
ChatGPT, Claude, or a custom Responses / Anthropic URL. DeepSeek is one wrapper. Same session.send.