Skip to content

Environment variables & appsettings (ApiKeySecret, JWT, staging)

Admin

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).

KeyPurpose
Encryption:ApiKeySecretServer 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.
KeyPurpose
Jwt:SecretKey, Jwt:ExpirationHours, Jwt:Issuer, Jwt:AudienceJWT issuance (mainly desktop mode); defaults provided
Import:StagingRootStaging directory for imports (created if not present)
Knowledge:FolderPath, Knowledge:IndexIntervalMinutesStorage location of the vault files; indexing interval (default 60)
Knowledge:VectorBackendSearch 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:LanguagesPII detection via Presidio → Set up Presidio
Catalog:ApiBaseUrlModel catalog service; without a value the app uses the bundled snapshot
WebSearch:Enabled, WebSearch:Provider, WebSearch:BraveApiKeyoptional web search in chat
Skills:FolderPathStorage of uploaded Skills
Sentry:Dsn (+ telemetry consent)optional error/telemetry transmission (only with admin consent)
Syncfusion license keyregistered 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