# Application APP_ENV=development APP_HOST=0.0.0.0 APP_PORT=8000 LOG_LEVEL=INFO CORS_ORIGINS=[] # Database (PostgreSQL recommended outside local development) DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/lifesandbox # Authentication: development bypass is available only in development mode. AUTH_MODE=development AUTH_SECRET= AUTH_ISSUER= AUTH_AUDIENCE= # Set a long random AUTH_SECRET to enable signed Google app sessions in development. # LLM: mock is deterministic and credential-free. Nebius is the deployment default. LLM_PROVIDER=mock LLM_FALLBACK_PROVIDER= NEBIUS_API_KEY= NEBIUS_BASE_URL=https://api.tokenfactory.nebius.com/v1 NEBIUS_MODEL=nvidia/Nemotron-3_5-Lightning OPENROUTER_API_KEY= OPENROUTER_BASE_URL=https://openrouter.ai/api/v1 OPENROUTER_MODEL= # Optional OpenRouter model to try after empty primary completions. OPENROUTER_FALLBACK_MODEL= LLM_TIMEOUT_SECONDS=30 MEM0_SEARCH_TIMEOUT_SECONDS=10 MEM0_ADD_TIMEOUT_SECONDS=10 OPENROUTER_TIMEOUT_SECONDS=75 CHAT_REQUEST_TIMEOUT_SECONDS=95 LLM_MAX_TOKENS=1000 # Mem0 hosted long-term memory. Saved exchanges and retrieved memories are sent to this host. # Chat history is only added when the user opts in for that exchange. MEM0_API_KEY= MEM0_HOST=https://api.mem0.ai # Optional local Browser Use web research. Uses the configured Nebius/OpenRouter model. BROWSER_USE_ENABLED=false # Research RESEARCH_PROVIDER=disabled TAVILY_API_KEY= # Optional per-user Google OAuth. Register this exact callback URL in Google Cloud. GOOGLE_OAUTH_CLIENT_ID= GOOGLE_OAUTH_CLIENT_SECRET= GOOGLE_OAUTH_CALLBACK_URL=http://localhost:8000/api/v1/integrations/google/callback # Add this separate URI as an authorized redirect URI in the same Google OAuth client. GOOGLE_AUTH_CALLBACK_URL=http://localhost:8000/api/v1/auth/google/callback GOOGLE_AUTH_FRONTEND_URL=http://localhost:5173 # Generate a Fernet key with: python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" # Keep this key outside the database and back it up securely; losing it requires users to reconnect. GOOGLE_TOKEN_ENCRYPTION_KEY= # Optional Telegram Bot integration (create via @BotFather and message bot to get chat_id) TELEGRAM_BOT_TOKEN= TELEGRAM_CHAT_ID= # Optional: comma-separated chat IDs allowed to talk with the agent (defaults to TELEGRAM_CHAT_ID if unset) TELEGRAM_ALLOWED_CHAT_IDS= # The local user account incoming Telegram chats bind to (defaults to local-user) TELEGRAM_DEFAULT_USER_ID=local-user # Set to true to automatically listen for incoming Telegram messages via long-polling (no domain or ngrok needed) TELEGRAM_POLLING_ENABLED=true # Optional secret token if using Telegram Webhooks (POST /api/v1/integrations/telegram/webhook) TELEGRAM_WEBHOOK_SECRET= # Embedding (fastembed, openai, or deterministic local_hash) EMBEDDING_PROVIDER=fastembed EMBEDDING_DIMENSIONS=384 # Neon Object Storage (Neon CLI: neon env pull --file .env) AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_REGION=us-east-2 AWS_ENDPOINT_URL_S3= NEON_STORAGE_BUCKET=uploads UPLOAD_MAX_BYTES=10000000 FILE_STORAGE_DIR=./data/uploads EXTRACTED_TEXT_MAX_CHARS=200000 # Optional local speech providers. Keep disabled unless the optional voice extra is installed. STT_PROVIDER=disabled STT_MODEL=tiny STT_DEVICE=cpu STT_COMPUTE_TYPE=int8 STT_MAX_BYTES=20000000 STT_MAX_DURATION_SECONDS=300 STT_TIMEOUT_SECONDS=120 TTS_PROVIDER=disabled TTS_MAX_CHARS=5000 TTS_VOICE=af_heart VISION_ENABLED=false IMAGE_MAX_BYTES=5000000 # Optional infrastructure and telemetry (not required by local core) UPSTASH_REDIS_REST_URL= UPSTASH_REDIS_REST_TOKEN= QSTASH_TOKEN= LANGSMITH_TRACING=false LANGSMITH_API_KEY= LANGSMITH_PROJECT=life-sandbox LANGFUSE_PUBLIC_KEY= LANGFUSE_SECRET_KEY= LANGFUSE_HOST=https://cloud.langfuse.com SENTRY_DSN= RATE_LIMIT_PER_MINUTE=60