LOG_LEVEL=debug ALLOWED_ORIGINS=http://localhost:5173,http://127.0.0.1:5173 JWT_SECRET=dev-jwt-secret-replace-in-production # Tessera OIDC. Point ISSUER at a dev tessera instance (loopback HTTP allowed). TESSERA_OIDC_ISSUER=http://127.0.0.1:8787 TESSERA_OIDC_CLIENT_ID=bland-dev TESSERA_OIDC_CLIENT_SECRET=dev-tessera-client-secret-replace-in-production SENTRY_DSN= # AI backend selection. # workers-ai - production, uses Cloudflare Workers AI binding # openai-compat - any OpenAI-compatible HTTP endpoint (Ollama, LM Studio, llama.cpp) # mock - deterministic in-process responses (used by E2E) BLAND_AI_MODE=workers-ai BLAND_AI_OPENAI_ENDPOINT= BLAND_AI_OPENAI_API_KEY= BLAND_AI_OPENAI_CHAT_MODEL=llama3 BLAND_AI_OPENAI_SUMMARIZE_MODEL= # Workers AI model overrides. Leave blank to use defaults: # chat: @cf/google/gemma-4-26b-a4b-it # summarize: @cf/google/gemma-4-26b-a4b-it BLAND_AI_WORKERS_CHAT_MODEL= BLAND_AI_WORKERS_SUMMARIZE_MODEL= # Bland Sites domain. Empty disables the feature. PUBLISHED_SITE_DOMAIN=bland.localhost