Providers Section
Add and manage LLM provider credentials. Multiple providers can be configured for redundancy or model variety.Provider Table
Displays all configured providers with status and action buttons:- Provider: Name (e.g., “anthropic”, “openai”)
- Status badge: “configured” (green)
- Actions:
- Edit: Modify API key or base URL
- Test: Validate credentials with a simple API call
- Delete: Remove the provider
Add / Edit Provider Form
Provider dropdown: Select from available providers:-
Cloud providers (require API key):
- anthropic
- openai
- groq
- openrouter
-
Local providers (require base URL):
- ollama (defaults to
http://localhost:11434) - lmstudio (defaults to
http://localhost:1234)
- ollama (defaults to
- custom: Bring your own provider with custom API endpoint
- API Key (cloud/custom providers): Stored securely in OS keyring. Password input field for safety.
- Base URL (local/custom providers): HTTP endpoint for the provider. Required for non-cloud models.
Provider Testing
Click Test next to a provider to validate:- Network connectivity to the endpoint
- API key validity (if applicable)
- Model availability
Provider Deletion
Click Delete to remove a provider. If it’s set as the default, you’ll be prompted to select a new default before deletion completes.Defaults Section
Configure platform-wide defaults for workflows that haven’t specified explicit values.Display Mode
When defaults are set, a read-only table shows:- Provider / Model: Display of currently selected provider and model variant
- Audit Transport: Default MCP transport (stdio, sse, or streamable-http)
- IPI Callback URL: Default listener endpoint for indirect prompt injection tests
Edit Form
Fields available for configuration:-
Provider / Model: Dropdown selector populated from configured providers.
- Selecting a provider populates available model variants.
- Example: provider=“anthropic”, model=“claude-3-5-sonnet”
-
Audit Transport: Select default transport for MCP connections.
stdio: Invoke command; used by default in Launcher formssse: Server-Sent Events over HTTPstreamable-http: HTTP streaming protocol
-
IPI Callback URL: Listener endpoint for callback-based indirect prompt injection tests.
- Example:
https://your-domain.example.com/callback - Can be overridden per-run in the Launcher
- Example:
Saving Defaults
Submit the form to save all values. UI automatically switches back to display mode on success. Changes apply immediately to new workflow runs.Defaults don’t affect already-running workflows. In-progress runs use values set at launch time.
Infrastructure Section
Configure MCP server and connection parameters for advanced scenarios.MCP Connection Settings
- MCP Connection Type: Select how the UI connects to MCP servers during testing (stdio, sse, streamable-http)
- Custom MCP Endpoint (optional): For advanced deployments, specify a custom MCP server to connect to instead of the built-in one
- Multi-machine deployments
- Custom MCP server implementations
- Load-balanced MCP clusters
Bridge Token Management
The internal bridge token is used for secure communication between the UI and backend. It’s automatically generated and cached in memory; no manual intervention is needed. To rotate the bridge token:- Stop the server (
Ctrl+C) - Delete
~/.qai/bridge.token - Restart with
qai
Data Persistence
All settings are stored in the local SQLite database (~/.qai/qai.db). This includes:
- Provider configurations (API keys in OS keyring, metadata in DB)
- Workflow defaults
- Run history and results
Backing Up Settings
Stop the qai server before copying the database to ensure a consistent snapshot:SQLite WAL mode uses
-wal and -shm companion files. Copying only qai.db while the server is running can produce a corrupted backup. Always stop the server and include all three files.Credential Storage
API keys and sensitive credentials are stored in the OS-level keyring:- macOS: Keychain
- Linux: Secret Service or pass
- Windows: Windows Credential Manager
Syncing with CLI
Settings configured in the Web UI are immediately available to CLI commands and vice versa. Both use the same database and keyring. Example workflow:- Configure a provider in the Web UI
- Use it in a CLI command:
qai inject campaign --model anthropic/claude-sonnet-4-20250514 - Return to Web UI; the provider is already available for selection
Resetting Settings
To completely reset settings:- Remove the settings database:
rm ~/.qai/qai.db - Restart the server:
qai
Deleting
qai.db only resets the database — provider API keys stored in the OS keyring are not removed. To fully clear credentials, manually remove provider entries from your system keyring (via your OS keyring manager or the keyring CLI) after deleting the database.