mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2026-03-21 22:56:47 +00:00
* fix: local processing instead of http server for cpu * add fallback token if service worker doesnt work * chore: rename processors to keep processor pattern up to date and allow other processors to be createed and used with env vars
163 lines
5.7 KiB
Plaintext
163 lines
5.7 KiB
Plaintext
#
|
|
# This file serve as an example of possible configuration
|
|
# All the settings are described here: reflector/settings.py
|
|
#
|
|
|
|
## =======================================================
|
|
## Core Configuration (Required for Production)
|
|
## =======================================================
|
|
|
|
## Database (for docker-compose.prod.yml, use postgres hostname)
|
|
#DATABASE_URL=postgresql+asyncpg://reflector:reflector@postgres:5432/reflector
|
|
|
|
## Redis (for docker-compose.prod.yml, use redis hostname)
|
|
#REDIS_HOST=redis
|
|
#REDIS_PORT=6379
|
|
#CELERY_BROKER_URL=redis://redis:6379/1
|
|
#CELERY_RESULT_BACKEND=redis://redis:6379/1
|
|
|
|
## Base URL - your API domain with https
|
|
#BASE_URL=https://api.example.com
|
|
|
|
## CORS - required when frontend and API are on different domains
|
|
#CORS_ORIGIN=https://app.example.com
|
|
#CORS_ALLOW_CREDENTIALS=true
|
|
|
|
## Secret key - generate with: openssl rand -hex 32
|
|
#SECRET_KEY=changeme-generate-a-secure-random-string
|
|
|
|
## =======================================================
|
|
## User authentication
|
|
## =======================================================
|
|
|
|
## Using jwt/authentik
|
|
AUTH_BACKEND=jwt
|
|
AUTH_JWT_AUDIENCE=
|
|
|
|
## =======================================================
|
|
## Transcription backend
|
|
##
|
|
## Check reflector/processors/audio_transcript_* for the
|
|
## full list of available transcription backend
|
|
## =======================================================
|
|
|
|
## Using local whisper
|
|
#TRANSCRIPT_BACKEND=whisper
|
|
|
|
## Using serverless modal.com (require reflector-gpu-modal deployed)
|
|
#TRANSCRIPT_BACKEND=modal
|
|
#TRANSCRIPT_URL=https://xxxxx--reflector-transcriber-web.modal.run
|
|
#TRANSCRIPT_MODAL_API_KEY=xxxxx
|
|
|
|
TRANSCRIPT_BACKEND=modal
|
|
TRANSCRIPT_URL=https://monadical-sas--reflector-transcriber-parakeet-web.modal.run
|
|
TRANSCRIPT_MODAL_API_KEY=
|
|
|
|
## =======================================================
|
|
## Translation backend
|
|
##
|
|
## Only available in modal atm
|
|
## =======================================================
|
|
TRANSLATION_BACKEND=modal
|
|
TRANSLATE_URL=https://monadical-sas--reflector-translator-web.modal.run
|
|
#TRANSLATION_MODAL_API_KEY=xxxxx
|
|
|
|
## =======================================================
|
|
## LLM backend (Required)
|
|
##
|
|
## Responsible for generating titles, summaries, and topic detection
|
|
## Supports any OpenAI-compatible endpoint.
|
|
## =======================================================
|
|
|
|
## --- Option A: Local LLM via Ollama (recommended for dev) ---
|
|
## Setup: ./scripts/setup-standalone.sh
|
|
## Mac: Ollama runs natively (Metal GPU). Containers reach it via host.docker.internal.
|
|
## Linux: docker compose --profile ollama-gpu up -d (or ollama-cpu for no GPU)
|
|
LLM_URL=http://host.docker.internal:11435/v1
|
|
LLM_MODEL=qwen2.5:14b
|
|
LLM_API_KEY=not-needed
|
|
## Linux with containerized Ollama: LLM_URL=http://ollama:11435/v1
|
|
|
|
## --- Option B: Remote/cloud LLM ---
|
|
#LLM_API_KEY=sk-your-openai-api-key
|
|
#LLM_MODEL=gpt-4o-mini
|
|
## LLM_URL defaults to OpenAI when unset
|
|
|
|
## Context size for summary generation (tokens)
|
|
LLM_CONTEXT_WINDOW=16000
|
|
|
|
## =======================================================
|
|
## Audio Padding
|
|
##
|
|
## backends: pyav (in-process PyAV), modal (HTTP API client)
|
|
## Default is "pyav" — no external service needed.
|
|
## Set to "modal" when using Modal.com or self-hosted gpu/self_hosted/ container.
|
|
## =======================================================
|
|
#PADDING_BACKEND=pyav
|
|
#PADDING_BACKEND=modal
|
|
#PADDING_URL=https://xxxxx--reflector-padding-web.modal.run
|
|
#PADDING_MODAL_API_KEY=xxxxx
|
|
|
|
## =======================================================
|
|
## Diarization
|
|
##
|
|
## backends: modal (HTTP API), pyannote (in-process pyannote.audio)
|
|
## To allow diarization, you need to expose expose the files to be downloaded by the pipeline
|
|
## =======================================================
|
|
DIARIZATION_ENABLED=false
|
|
DIARIZATION_BACKEND=modal
|
|
DIARIZATION_URL=https://monadical-sas--reflector-diarizer-web.modal.run
|
|
#DIARIZATION_MODAL_API_KEY=xxxxx
|
|
|
|
|
|
## =======================================================
|
|
## Transcript Storage
|
|
##
|
|
## Where to store audio files and transcripts
|
|
## AWS S3 is required for production
|
|
## =======================================================
|
|
TRANSCRIPT_STORAGE_BACKEND=aws
|
|
TRANSCRIPT_STORAGE_AWS_ACCESS_KEY_ID=your-aws-access-key
|
|
TRANSCRIPT_STORAGE_AWS_SECRET_ACCESS_KEY=your-aws-secret-key
|
|
TRANSCRIPT_STORAGE_AWS_BUCKET_NAME=reflector-media
|
|
TRANSCRIPT_STORAGE_AWS_REGION=us-east-1
|
|
|
|
|
|
## =======================================================
|
|
## Sentry
|
|
## =======================================================
|
|
|
|
## Sentry DSN configuration
|
|
#SENTRY_DSN=
|
|
|
|
## =======================================================
|
|
## Video Platform Configuration
|
|
## =======================================================
|
|
|
|
## Whereby
|
|
#WHEREBY_API_KEY=your-whereby-api-key
|
|
#WHEREBY_WEBHOOK_SECRET=your-whereby-webhook-secret
|
|
#WHEREBY_STORAGE_AWS_ACCESS_KEY_ID=your-aws-key
|
|
#WHEREBY_STORAGE_AWS_SECRET_ACCESS_KEY=your-aws-secret
|
|
#AWS_PROCESS_RECORDING_QUEUE_URL=https://sqs.us-west-2.amazonaws.com/...
|
|
|
|
## Daily.co
|
|
#DAILY_API_KEY=your-daily-api-key
|
|
#DAILY_WEBHOOK_SECRET=your-daily-webhook-secret
|
|
#DAILY_SUBDOMAIN=your-subdomain
|
|
#DAILY_WEBHOOK_UUID= # Auto-populated by recreate_daily_webhook.py script
|
|
#DAILYCO_STORAGE_AWS_ROLE_ARN=... # IAM role ARN for Daily.co S3 access
|
|
#DAILYCO_STORAGE_AWS_BUCKET_NAME=reflector-dailyco
|
|
#DAILYCO_STORAGE_AWS_REGION=us-west-2
|
|
# Worker credentials for reading/deleting from Daily's recording bucket
|
|
# Required when transcript storage is separate from Daily's bucket (e.g., selfhosted with Garage)
|
|
#DAILYCO_STORAGE_AWS_ACCESS_KEY_ID=your-aws-access-key
|
|
#DAILYCO_STORAGE_AWS_SECRET_ACCESS_KEY=your-aws-secret-key
|
|
|
|
## Whereby (optional separate bucket)
|
|
#WHEREBY_STORAGE_AWS_BUCKET_NAME=reflector-whereby
|
|
#WHEREBY_STORAGE_AWS_REGION=us-east-1
|
|
|
|
## Platform Configuration
|
|
#DEFAULT_VIDEO_PLATFORM=whereby # Default platform for new rooms
|