# Environment Variables Reference > **Last Updated**: 2025-12-06 Complete reference for all environment variables used by DeepBoner. ## Quick Reference | Variable | Required | Default | Description | |----------|----------|---------|-------------| | `OPENAI_API_KEY` | No* | - | OpenAI API key | | `HF_TOKEN` | No | - | HuggingFace token | | `NCBI_API_KEY` | No | - | NCBI/PubMed API key | | `LLM_PROVIDER` | No | `openai` | LLM backend | | `MAX_ITERATIONS` | No | `10` | Max search iterations | | `LOG_LEVEL` | No | `INFO` | Logging level | *At least one of OPENAI_API_KEY or HF_TOKEN is needed for full functionality. ## LLM Configuration ### OPENAI_API_KEY OpenAI API key for premium features. ```bash OPENAI_API_KEY=sk-proj-xxxx ``` - **Format:** Starts with `sk-` or `sk-proj-` - **Source:** https://platform.openai.com/api-keys - **Effect:** Enables OpenAI GPT-5 as the LLM backend ### ANTHROPIC_API_KEY Anthropic API key (reserved for future use). ```bash ANTHROPIC_API_KEY=sk-ant-xxxx ``` ### LLM_PROVIDER Explicitly select LLM provider. ```bash LLM_PROVIDER=openai # Use OpenAI LLM_PROVIDER=huggingface # Use HuggingFace ``` - **Default:** `openai` - **Note:** Auto-detection uses OPENAI_API_KEY presence ### OPENAI_MODEL OpenAI model name. ```bash OPENAI_MODEL=gpt-5 OPENAI_MODEL=gpt-4o ``` - **Default:** `gpt-5` ### HUGGINGFACE_MODEL HuggingFace model for free tier. ```bash HUGGINGFACE_MODEL=Qwen/Qwen2.5-7B-Instruct ``` - **Default:** `Qwen/Qwen2.5-7B-Instruct` - **Warning:** Large models (70B+) route to unreliable third-party providers ### HF_TOKEN HuggingFace API token. ```bash HF_TOKEN=hf_xxxx ``` - **Source:** https://huggingface.co/settings/tokens - **Effect:** Enables gated models and higher rate limits ## Embedding Configuration ### OPENAI_EMBEDDING_MODEL OpenAI embedding model for premium RAG. ```bash OPENAI_EMBEDDING_MODEL=text-embedding-3-small OPENAI_EMBEDDING_MODEL=text-embedding-3-large ``` - **Default:** `text-embedding-3-small` - **Requires:** `OPENAI_API_KEY` ### LOCAL_EMBEDDING_MODEL Local sentence-transformers model. ```bash LOCAL_EMBEDDING_MODEL=all-MiniLM-L6-v2 LOCAL_EMBEDDING_MODEL=all-mpnet-base-v2 ``` - **Default:** `all-MiniLM-L6-v2` - **Note:** Downloaded on first use ## External Services ### NCBI_API_KEY NCBI API key for higher PubMed rate limits. ```bash NCBI_API_KEY=xxxx ``` - **Source:** https://www.ncbi.nlm.nih.gov/account/settings/ - **Effect:** 10 requests/second instead of 3 ### CHROMA_DB_PATH ChromaDB storage location. ```bash CHROMA_DB_PATH=./chroma_db CHROMA_DB_PATH=/data/vectors ``` - **Default:** `./chroma_db` - **Note:** Directory is created if it doesn't exist ## Agent Configuration ### MAX_ITERATIONS Maximum search-judge loop iterations. ```bash MAX_ITERATIONS=10 MAX_ITERATIONS=5 # Faster but less thorough MAX_ITERATIONS=20 # More thorough ``` - **Default:** `10` - **Range:** `1` to `50` ### ADVANCED_MAX_ROUNDS Maximum multi-agent coordination rounds. ```bash ADVANCED_MAX_ROUNDS=5 ``` - **Default:** `5` - **Range:** `1` to `20` ### ADVANCED_TIMEOUT Timeout for advanced mode in seconds. ```bash ADVANCED_TIMEOUT=600 # 10 minutes ADVANCED_TIMEOUT=300 # 5 minutes ``` - **Default:** `600.0` - **Range:** `60.0` to `900.0` ### SEARCH_TIMEOUT Per-search operation timeout in seconds. ```bash SEARCH_TIMEOUT=30 ``` - **Default:** `30` ## Logging ### LOG_LEVEL Logging verbosity. ```bash LOG_LEVEL=DEBUG # Verbose LOG_LEVEL=INFO # Normal LOG_LEVEL=WARNING # Errors and warnings LOG_LEVEL=ERROR # Errors only ``` - **Default:** `INFO` ## Gradio Configuration ### GRADIO_SERVER_NAME Server bind address. ```bash GRADIO_SERVER_NAME=0.0.0.0 # All interfaces GRADIO_SERVER_NAME=127.0.0.1 # Localhost only ``` - **Default:** Set in Dockerfile for containers ### GRADIO_SERVER_PORT Server port. ```bash GRADIO_SERVER_PORT=7860 ``` - **Default:** `7860` ## Python Configuration ### PYTHONPATH Python module search path. ```bash PYTHONPATH=/app ``` - **Note:** Set automatically in Docker ## .env File Format ```bash # Comments start with # KEY=value # No quotes needed for simple values KEY="value" # Quotes for values with spaces KEY='value' # Single quotes also work # Empty lines are ignored # Multi-line values not supported - use single line ``` ## Security Notes 1. **Never commit .env files** - They're in .gitignore 2. **Use secrets for production** - HuggingFace Secrets, Docker secrets 3. **Rotate keys regularly** - Especially for production 4. **Limit permissions** - Use read-only keys where possible ## Validation Variables are validated on application startup: ```python # Invalid values raise ValidationError MAX_ITERATIONS=100 # Error: must be 1-50 LOG_LEVEL=TRACE # Error: invalid level ``` ## Debugging Check loaded configuration: ```bash LOG_LEVEL=DEBUG uv run python -c " from src.utils.config import settings print(f'Provider: {settings.llm_provider}') print(f'Has OpenAI: {settings.has_openai_key}') print(f'Has HF: {settings.has_huggingface_key}') print(f'Max Iterations: {settings.max_iterations}') " ``` ## Related Documentation - [Configuration Reference](configuration.md) - [Getting Started - Configuration](../getting-started/configuration.md) - [Deployment - Docker](../deployment/docker.md)