Configuration
Aura supports two ways to supply an AI provider key.
In-app settings (recommended)
Click the Settings icon in the toolbar to open the AI Provider Settings panel. From there you can add one or more providers, each with its own:
- Base URL
- API Key
- Model
The active provider is used for all AI calls. A Test Connection button validates the key and
model before you commit. Settings persist in localStorage.
The Settings panel supports any OpenAI-compatible API — Google AI, Anthropic via proxy, Ollama, local LLMs, and more.
.env file (fallback)
# Get your API key from https://aistudio.google.com/apikey
GEMINI_API_KEY=your-api-key-here
# Backend services (local Docker stack)
VITE_VECTOR_BACKEND_URL=http://localhost:3001
VITE_MEDIA_BACKEND_URL=http://localhost:3002
VITE_GRAPH_BACKEND_URL=http://localhost:3004Vite injects GEMINI_API_KEY as process.env.API_KEY at build time via define in
vite.config.ts. This key is used only when no custom provider is configured in Settings.
Resolution order
getAI()checks for an active provider with a non-empty API key first.- If none exists, it falls back to the
.env-based default client. getEffectiveModel(registryModel)similarly returns the user’s custom model when set, or the per-Virtuoso default otherwise.
export interface ProviderConfig { /* id, name, baseUrl, apiKey, model, isActive */ }
export function loadProviders(): ProviderConfig[]
export function saveProviders(providers: ProviderConfig[]): boolean
export function getActiveProvider(): ProviderConfig | nullPer-Virtuoso models
Each Virtuoso declares a default model in the registry — for example the Conductor and Critic run
gemini-2.5-pro while the Scholar and Chronicler use the faster gemini-2.5-flash. A custom
provider model overrides all of them. See Registry & Profiles.