# Copy to .env. Secrets only here; .env is gitignored. # --- LLM (152-FZ: GigaChat only). mock = offline demo without network (ADR-004) LLM_PROVIDER=mock GIGACHAT_CREDENTIALS= GIGACHAT_SCOPE=GIGACHAT_API_PERS GIGACHAT_MODEL=GigaChat # --- Chat agent: auto | off | mock | openrouter | gigachat. OpenRouter = temporary, synthetic data only. CHAT_AGENT=auto OPENROUTER_API_KEY= OPENROUTER_MODEL=google/gemini-2.5-flash-lite # --- Pseudonymisation key: 32+ random bytes, hex. Generate: python -c "import secrets;print(secrets.token_hex(32))" PSEUDO_KEY= # --- Databases (docker compose overrides the URLs to point at the postgres service) POSTGRES_PASSWORD=postgres IDENTITY_DB_PASSWORD=identity_app CLINICAL_DB_PASSWORD=clinical_app IDENTITY_DB_URL=postgresql+asyncpg://identity_app:identity_app@localhost:5432/identity CLINICAL_DB_URL=postgresql+asyncpg://clinical_app:clinical_app@localhost:5432/clinical # --- Telegram: prototype on synthetic data only; prod channel is MAX / Gosuslugi. Empty = bot disabled. TG_BOT_TOKEN= # http://user:pass@host:port or socks5://… — needed on the RF server (docker has no route to Telegram over IPv4) TG_PROXY_URL= DOCTOR_NOTIFY_CHAT_ID= # --- Demo virtual clock (ADR-005) DEMO_CLOCK=true # Questionnaires of the intake (#53) on synthetic data, demo only (needs DEMO_CLOCK). The clinical release gate in # config/intake_runtime.yaml stays closed; without a signed routing policy every finished intake goes to review. INTAKE_DEMO=false TZ=Europe/Moscow # --- Gitea (for Claude Code / team workflow, not used by the app) GITEA_URL=https://gitea.24studbank.ru GITEA_REPO=MedITron/PTSRaiAgent GITEA_USER= GITEA_TOKEN= # MAX notifications: keep disabled until the backend/channel PRs and a real bot are installed. MAX_ENABLED=false MAX_BOT_TOKEN= MAX_BOT_USERNAME= MAX_WEBHOOK_SECRET= MAX_WEBHOOK_URL= MAX_SITE_URL= # Optional path to a trusted PEM CA bundle; never disable TLS verification. MAX_CA_BUNDLE= MAX_LINK_TTL_SECONDS=600