Repository navigation
Providers and Models
Nexora supports OpenAI, Anthropic, Google Gemini, xKiro, OpenRouter, NVIDIA NIM, and OpenCode Zen — the last four reuse the OpenAI-compatible executor with a distinct endpoint (plus Referer/Title headers for OpenRouter), not separate protocol implementations.
- Pick a provider and model before sending; the selection applies to subsequent requests.
- Supported model lists are hardcoded
SUPPORTED_MODELSconsts per provider module insrc-tauri/src/infrastructure/providers/, aggregated inmod.rs. Compatible providers ship curated shortlists, and Settings accepts a custom model ID beyond the shortlist. - All requests go through the provider-independent boundary (
application/execution.rs): sharedAiMessagemodel (role, text, attachments) plus native tool round-trip fields. Tool observations return in each provider's native shape and are never persisted; Gemini thought signatures are echoed verbatim and never logged, persisted, or parsed. - Timeouts, retries, and error propagation are handled per executor; the application never depends on provider-specific behavior.
Network/timeout, rate limit (with the provider's Retry-After hint), provider outage/unavailable (5xx), rejected credential, invalid request (including HTTP 404 from a compatible endpoint, meaning model/route missing), unexpected response. All secret-free: no credentials, SQL, message content, or response-body reads in error text.
API keys live exclusively in the OS keyring, resolved inside the backend and
never crossing IPC. The providers.name field is the keyring namespace key.
Missing credentials are detected before a request is sent. See
Security-and-Credentials.