# Configuration This document covers all configuration options for the Pediatric AI Scribe, including environment variables, database-backed settings, and the admin panel. --- ## Environment Variables Environment variables are set in the `.env` file or passed to the Docker container. They are read at startup. ### AI Provider | Variable | Description | |----------|-------------| | `AI_PROVIDER` | AI backend: `openrouter`, `bedrock`, `azure`, `vertex`, or `litellm`. | | `OPENROUTER_API_KEY` | API key for OpenRouter. | | `AWS_BEDROCK_REGION` | AWS region for Bedrock (e.g., `us-east-1`). | | `AWS_ACCESS_KEY_ID` | AWS access key (shared by Bedrock and Transcribe). | | `AWS_SECRET_ACCESS_KEY` | AWS secret key (shared by Bedrock and Transcribe). | | `AZURE_OPENAI_ENDPOINT` | Azure OpenAI resource endpoint URL. | | `AZURE_OPENAI_API_KEY` | Azure OpenAI API key. | | `AZURE_DEPLOYMENT_NAME` | Azure OpenAI deployment/model name. | | `AZURE_OPENAI_API_VERSION` | Azure OpenAI API version string. | | `GOOGLE_VERTEX_PROJECT` | Google Cloud project ID for Vertex AI. | | `GOOGLE_VERTEX_LOCATION` | Google Cloud region for Vertex AI (e.g., `us-central1`). | | `GOOGLE_APPLICATION_CREDENTIALS` | Path to the Google service account JSON key file. | | `LITELLM_API_BASE` | Base URL of the LiteLLM proxy server. | | `LITELLM_API_KEY` | API key for LiteLLM proxy authentication. | ### Transcription (Speech-to-Text) | Variable | Description | |----------|-------------| | `TRANSCRIBE_PROVIDER` | STT backend: `google`, `aws`, `local`, `openai`, or `litellm`. Auto-detects if unset (google > aws > openai). | | `OPENAI_API_KEY` | API key for OpenAI Whisper. | | `GOOGLE_STT_MODEL` | Google Gemini model for transcription (default: `gemini-2.0-flash`). | | `AWS_TRANSCRIBE_MEDICAL` | Enable Amazon Transcribe Medical mode (`true`/`false`). | | `AWS_TRANSCRIBE_SPECIALTY` | Medical specialty: `PRIMARYCARE`, `CARDIOLOGY`, `NEUROLOGY`, `ONCOLOGY`, `RADIOLOGY`, `UROLOGY`. | | `WHISPER_BINARY` | Path to the local whisper binary (`whisper.cpp` or `faster-whisper`). | | `WHISPER_MODEL_SIZE` | Local Whisper model size: `tiny`, `base`, `small`, `medium`, `large`. | | `WHISPER_MODEL_PATH` | Path to the local Whisper model file. | | `WHISPER_LANGUAGE` | Language code for local Whisper (e.g., `en`). | | `WHISPER_THREADS` | Number of CPU threads for local Whisper. | | `LITELLM_STT_MODEL` | Model name for LiteLLM-routed transcription. | ### Text-to-Speech | Variable | Description | |----------|-------------| | `GOOGLE_TTS_VOICE` | Google Cloud TTS voice name (e.g., `en-US-Journey-F`). | | `ELEVENLABS_API_KEY` | API key for ElevenLabs TTS. | | `LITELLM_TTS_MODEL` | Model name for LiteLLM-routed TTS. | | `LITELLM_TTS_VOICE` | Voice name for LiteLLM-routed TTS. | ### Embeddings | Variable | Description | |----------|-------------| | `EMBEDDING_MODEL` | Embedding model name (default: Vertex AI `text-embedding-005`). | | `EMBEDDING_DIMENSIONS` | Embedding vector dimensions (default: `768`). | ### Application | Variable | Description | |----------|-------------| | `PORT` | HTTP listen port (default: `3000`). | | `APP_URL` | Public-facing base URL of the application. | | `JWT_SECRET` | Secret key for signing JWT tokens. | | `SESSION_SECRET` | Secret key for session cookies. | | `DATABASE_URL` | Full PostgreSQL connection string. | | `DB_PASSWORD` | Database password (used if `DATABASE_URL` is not set). | ### Email (SMTP) | Variable | Description | |----------|-------------| | `SMTP_HOST` | SMTP server hostname. | | `SMTP_PORT` | SMTP server port. | | `SMTP_USER` | SMTP authentication username. | | `SMTP_PASS` | SMTP authentication password. | | `SMTP_FROM` | Sender address for outgoing emails. | ### Security | Variable | Description | |----------|-------------| | `TURNSTILE_SITE_KEY` | Cloudflare Turnstile site key for bot protection. | | `TURNSTILE_SECRET_KEY` | Cloudflare Turnstile server-side secret key. | ### Integrations | Variable | Description | |----------|-------------| | `NEXTCLOUD_URL` | Nextcloud instance URL for WebDAV file access. | | `S3_BUCKET` | S3 bucket name for file storage. | | `S3_REGION` | S3 bucket region. | | `S3_PREFIX` | Key prefix (folder) within the S3 bucket. | | `S3_ENDPOINT` | Custom S3 endpoint URL (for S3-compatible storage like MinIO). | | `S3_ACCESS_KEY_ID` | S3 access key. | | `S3_SECRET_ACCESS_KEY` | S3 secret key. | | `S3_FORCE_PATH_STYLE` | Use path-style S3 URLs instead of virtual-hosted (`true`/`false`). Required for most S3-compatible providers. | --- ## Database-Backed Settings Runtime settings are stored in the `app_settings` table and can be modified through the admin panel without restarting the application. ### Caching Settings are cached **in memory for 2 minutes**. The cache is **invalidated immediately on write**, so changes made through the admin panel take effect right away. ### Setting Keys #### Registration and Site | Key | Description | |-----|-------------| | `registration_enabled` | Allow new user registration (`true`/`false`). | | `site.name` | Display name of the application. | | `site.auto_delete_days` | Number of days after which encounter data is automatically deleted. | #### Announcements | Key | Description | |-----|-------------| | `announcement.text` | Banner message text displayed to all users. | | `announcement.type` | Banner style: `info`, `warning`, `error`, or `success`. | #### Feature Flags | Key Pattern | Description | |-------------|-------------| | `feature.*` | Toggle individual features on or off. | #### SMTP (Overrides Environment) | Key Pattern | Description | |-------------|-------------| | `smtp.host`, `smtp.port`, `smtp.user`, `smtp.pass`, `smtp.from` | SMTP configuration. Overrides the corresponding environment variables when set. | #### Email Templates | Key Pattern | Description | |-------------|-------------| | `email.*.subject` | Email subject line template. | | `email.*.body` | Email body template. | #### OIDC / SSO | Key | Description | |-----|-------------| | `oidc.enabled` | Enable OpenID Connect authentication (`true`/`false`). | | `oidc.issuer` | OIDC provider issuer URL. | | `oidc.clientId` | OIDC client ID. | | `oidc.clientSecret` | OIDC client secret. | | `oidc.buttonLabel` | Label for the SSO login button. | | `oidc.disableLocalAuth` | Hide the local login form when SSO is enabled. | #### AI and Model Configuration | Key | Description | |-----|-------------| | `stt.model` | Default speech-to-text model. | | `tts.model` | Default text-to-speech model. | | `tts.voice` | Default text-to-speech voice. | | `models.default` | Default AI model for note generation. | | `prompt.*` | AI prompt overrides. Each key corresponds to a specific prompt template. | | `embeddings.*` | Embedding model and dimension configuration. | --- ## Admin Panel Settings The admin panel provides a web interface for managing the application without editing configuration files. ### User Management - List all registered users. - Verify unverified accounts. - Disable or re-enable user accounts. - View per-user usage statistics. ### Registration - Enable or disable new user registration globally. ### Announcement Banner - Set banner text displayed at the top of the application. - Choose banner type: `info`, `warning`, `error`, or `success`. ### SMTP Configuration - Configure SMTP settings through the UI. - These settings override the corresponding `.env` values when set. ### OIDC / SSO Configuration - Enable or disable OpenID Connect authentication. - Configure issuer URL, client ID, client secret, and button label. - Option to disable local authentication entirely when SSO is active. ### AI Prompts - View the default prompt templates used for note generation. - Override any prompt with custom text. - Reset overridden prompts back to their defaults. ### Model Management - Enable or disable available AI models. - Set the default model for new users. - Add custom models with cost and category metadata. ### TTS and STT Configuration - Test TTS and STT providers from the admin panel. - Configure default TTS voice and STT model for all users.