# API CONFIGURATION # URL where the API can be accessed by the browser # This setting allows the frontend to connect to the API at runtime (no rebuild needed!) # # IMPORTANT: Do NOT include /api at the end - it will be added automatically! # # Common scenarios: # - Docker on localhost: http://localhost:5055 (default, works for most cases) # - Docker on LAN/remote server: http://192.168.1.100:5055 or http://your-server-ip:5055 # - Behind reverse proxy with custom domain: https://your-domain.com # - Behind reverse proxy with subdomain: https://api.your-domain.com # # Examples for reverse proxy users: # - API_URL=https://notebook.example.com (frontend will call https://notebook.example.com/api/*) # - API_URL=https://api.example.com (frontend will call https://api.example.com/api/*) # # Note: If not set, the system will auto-detect based on the incoming request. # Only set this if you need to override the auto-detection (e.g., reverse proxy scenarios). API_URL=http://localhost:5055 # INTERNAL API URL (Server-Side) # URL where Next.js server-side should proxy API requests (via rewrites) # This is DIFFERENT from API_URL which is used by the browser client # # INTERNAL_API_URL is used by Next.js rewrites to forward /api/* requests to the FastAPI backend # API_URL is used by the browser to know where to make API calls # # Default: http://localhost:5055 (single-container deployment - both services on same host) # Override for multi-container: INTERNAL_API_URL=http://api-service:5055 # # Common scenarios: # - Single container (default): Don't set - defaults to http://localhost:5055 # - Multi-container Docker Compose: INTERNAL_API_URL=http://api:5055 (use service name) # - Kubernetes/advanced networking: INTERNAL_API_URL=http://api-service.namespace.svc.cluster.local:5055 # # Why two variables? # - API_URL: External/public URL that browsers use (can be https://your-domain.com) # - INTERNAL_API_URL: Internal container networking URL (usually http://localhost:5055 or service name) # # INTERNAL_API_URL=http://localhost:5055 # API CLIENT TIMEOUT (in seconds) # Controls how long the frontend/Streamlit UI waits for API responses # Increase this if you're using slow AI providers or hardware (Ollama on CPU, remote LM Studio, etc.) # Default: 300 seconds (5 minutes) - sufficient for most transformation/insight operations # # Common scenarios: # - Fast cloud APIs (OpenAI, Anthropic): 300 seconds is more than enough # - Local Ollama on GPU: 300 seconds should work fine # - Local Ollama on CPU: Consider 600 seconds (10 minutes) or more # - Remote LM Studio over slow network: Consider 900 seconds (15 minutes) # - Very large documents: May need 900+ seconds # # API_CLIENT_TIMEOUT=300 # ESPERANTO LLM TIMEOUT (in seconds) # Controls the timeout for AI model API calls at the Esperanto library level # This is separate from API_CLIENT_TIMEOUT and applies to the actual LLM provider requests # Only increase this if you're experiencing timeouts during model inference itself # Default: 60 seconds (built into Esperanto) # # Important: This should generally be LOWER than API_CLIENT_TIMEOUT to allow proper error handling # # Common scenarios: # - Fast cloud APIs (OpenAI, Anthropic, Groq): 60 seconds is sufficient # - Local Ollama with small models: 120-180 seconds may help # - Local Ollama with large models on CPU: 300+ seconds # - Remote or self-hosted LLMs: 180-300 seconds depending on hardware # # Note: If transformations complete but you see timeout errors, increase API_CLIENT_TIMEOUT first. # Only increase ESPERANTO_LLM_TIMEOUT if the model itself is timing out during inference. # # ESPERANTO_LLM_TIMEOUT=60 # SECURITY # Set this to protect your Open Notebook instance with a password (for public hosting) # OPEN_NOTEBOOK_PASSWORD= # OPENAI # OPENAI_API_KEY= # ANTHROPIC # ANTHROPIC_API_KEY= # GEMINI # this is the best model for long context and podcast generation # GOOGLE_API_KEY= # GEMINI_API_BASE_URL= # Optional: Override default endpoint (for Vertex AI, proxies, etc.) # VERTEXAI # VERTEX_PROJECT=my-google-cloud-project-name # GOOGLE_APPLICATION_CREDENTIALS=./google-credentials.json # VERTEX_LOCATION=us-east5 # MISTRAL # MISTRAL_API_KEY= # DEEPSEEK # DEEPSEEK_API_KEY= # OLLAMA # OLLAMA_API_BASE="http://10.20.30.20:11434" # OPEN ROUTER # OPENROUTER_BASE_URL="https://openrouter.ai/api/v1" # OPENROUTER_API_KEY= # GROQ # GROQ_API_KEY= # XAI # XAI_API_KEY= # ELEVENLABS # Used only by the podcast feature # ELEVENLABS_API_KEY= # TTS BATCH SIZE # Controls concurrent TTS requests for podcast generation (default: 5) # Lower values reduce provider load but increase generation time # Recommended: OpenAI=5, ElevenLabs=2, Google=4, Custom=1 # TTS_BATCH_SIZE=2 # VOYAGE AI # VOYAGE_API_KEY= # OPENAI COMPATIBLE ENDPOINTS # Generic configuration (applies to all modalities: language, embedding, STT, TTS) # OPENAI_COMPATIBLE_BASE_URL=http://localhost:1234/v1 # OPENAI_COMPATIBLE_API_KEY= # Mode-specific configuration (overrides generic if set) # Use these when you want different endpoints for different capabilities # OPENAI_COMPATIBLE_BASE_URL_LLM=http://localhost:1234/v1 # OPENAI_COMPATIBLE_API_KEY_LLM= # OPENAI_COMPATIBLE_BASE_URL_EMBEDDING=http://localhost:8080/v1 # OPENAI_COMPATIBLE_API_KEY_EMBEDDING= # OPENAI_COMPATIBLE_BASE_URL_STT=http://localhost:9000/v1 # OPENAI_COMPATIBLE_API_KEY_STT= # OPENAI_COMPATIBLE_BASE_URL_TTS=http://localhost:9000/v1 # OPENAI_COMPATIBLE_API_KEY_TTS= # AZURE OPENAI # AZURE_OPENAI_API_KEY= # AZURE_OPENAI_ENDPOINT= # AZURE_OPENAI_API_VERSION="2024-12-01-preview" # AZURE_OPENAI_DEPLOYMENT_NAME= # USE THIS IF YOU WANT TO DEBUG THE APP ON LANGSMITH # LANGCHAIN_TRACING_V2=true # LANGCHAIN_ENDPOINT="https://api.smith.langchain.com" # LANGCHAIN_API_KEY= # LANGCHAIN_PROJECT="Open Notebook" # CONNECTION DETAILS FOR YOUR SURREAL DB # New format (preferred) - WebSocket URL SURREAL_URL="ws://surrealdb/rpc:8000" SURREAL_USER="root" SURREAL_PASSWORD="root" SURREAL_NAMESPACE="open_notebook" SURREAL_DATABASE="staging" # OPEN_NOTEBOOK_PASSWORD= # FIRECRAWL - Get a key at https://firecrawl.dev/ FIRECRAWL_API_KEY= # JINA - Get a key at https://jina.ai/ JINA_API_KEY=