CompanyWizard is configured via appsettings keys or environment variables. This reference lists names and purpose — deliberately no values: secrets belong in environment variables, dotnet user-secrets, or appsettings.<Environment>.json, not in the checked-in appsettings.json. In environment variables the colon becomes a double underscore (e.g. Encryption__ApiKeySecret).
| Key | Purpose |
|---|
Encryption:ApiKeySecret | Server secret for the AES-256-GCM encryption of stored API keys. At least 32 characters; the application will not start without this value. Rotation invalidates existing keys. |
| Key | Purpose |
|---|
Jwt:SecretKey, Jwt:ExpirationHours, Jwt:Issuer, Jwt:Audience | JWT issuance (mainly desktop mode); defaults provided |
Import:StagingRoot | Staging directory for imports (created if not present) |
Knowledge:FolderPath, Knowledge:IndexIntervalMinutes | Storage location of the vault files; indexing interval (default 60) |
Knowledge:VectorBackend | Search backend (Auto/Qdrant/SqliteVec) → Vaults & indexing |
Qdrant:* (connection, VectorDimension, VectorCollectionName) | Qdrant (mainly web) → Set up Qdrant |
PiiScanner:PresidioEndpoint, PiiScanner:Enabled, PiiScanner:ScoreThreshold, PiiScanner:EntityTypes, PiiScanner:Languages | PII detection via Presidio → Set up Presidio |
Catalog:ApiBaseUrl | Model catalog service; without a value the app uses the bundled snapshot |
WebSearch:Enabled, WebSearch:Provider, WebSearch:BraveApiKey | optional web search in chat |
Skills:FolderPath | Storage of uploaded Skills |
Sentry:Dsn (+ telemetry consent) | optional error/telemetry transmission (only with admin consent) |
| Syncfusion license key | registered at startup; do not commit to public repos |
- No values in the docs/public repos — only names + purpose.
- Web vs. Desktop: web is Aspire-orchestrated (Qdrant external, SMTP for OTP); the desktop uses local SQLite and in-process JWT.
- Model/provider keys belong in Administration → Models (encrypted), not in
appsettings. → LLM API keys