# MaverickMCP Environment Configuration Example # Copy this file to .env and update with your values. # Personal-use MCP server: no authentication or billing config exists. # Every variable below is read somewhere in maverick/; nothing here is decorative. # Migrating from a pre-v1.0 install? See docs/runbooks/migrating-to-v1.md. # --------------------------------------------------------------------------- # Database (maverick/platform/config.py) # --------------------------------------------------------------------------- # SQLite defaults to the working directory locally and /data in Docker. # Leave unset to retain the default for your installation. # DATABASE_URL=sqlite:///maverick.db # PostgreSQL (uncomment to override local or Docker SQLite defaults): # POSTGRES_URL is a fallback only if DATABASE_URL is absent. In Docker, use # DATABASE_URL because the image supplies a default for that variable. # DATABASE_URL=postgresql://localhost/maverick # Connection-pool tuning (PostgreSQL; ignored for SQLite): # DB_USE_POOLING=true # DB_POOL_SIZE=20 # DB_POOL_MAX_OVERFLOW=10 # DB_MAX_OVERFLOW is accepted as a fallback name # DB_POOL_TIMEOUT=30 # DB_POOL_RECYCLE=3600 # DB_POOL_PRE_PING=true # DB_STATEMENT_TIMEOUT=30000 # milliseconds # DB_ECHO=false # --------------------------------------------------------------------------- # Redis (optional; caching falls back to in-memory/SQLite when unset) # --------------------------------------------------------------------------- # Setting REDIS_HOST enables Redis; leave unset to skip it entirely. # REDIS_HOST=localhost # REDIS_PORT=6379 # REDIS_DB=0 # REDIS_USERNAME= # REDIS_PASSWORD= # REDIS_SSL=false # REDIS_MAX_CONNECTIONS=50 # REDIS_SOCKET_TIMEOUT=5 # REDIS_SOCKET_CONNECT_TIMEOUT=5 # --------------------------------------------------------------------------- # Cache # --------------------------------------------------------------------------- # CACHE_ENABLED=true # CACHE_TTL_SECONDS=604800 # CACHE_SQLITE_PATH=maverick_cache.db # CACHE_VERSION=v1 # bump to invalidate all cached entries at once # --------------------------------------------------------------------------- # Logging # --------------------------------------------------------------------------- # LOG_LEVEL=INFO # LOG_JSON=true # --------------------------------------------------------------------------- # BYOK LLM (maverick/platform/llm.py) - required only for research tools and # backtesting_parse_strategy. Leave unset to run the core server with no LLM. # --------------------------------------------------------------------------- # LLM_PROVIDER=anthropic # anthropic | openai | openrouter | openai_compatible # LLM_API_KEY=your_provider_api_key_here # LLM_MODEL=claude-sonnet-4-6 # LLM_BASE_URL= # required only for LLM_PROVIDER=openai_compatible # Leave unset to omit temperature and use the provider/model default. # LLM_TEMPERATURE=1.0 # explicit override; supported values depend on the model # --------------------------------------------------------------------------- # Research extra (maverick/research/config.py) - web search backing research_* # --------------------------------------------------------------------------- # Get a key at https://exa.ai (free tier available) # EXA_API_KEY=your_exa_api_key_here # Or point research at a self-hosted SearXNG instance instead of Exa (no key). # The instance must serve JSON: settings.yml -> search: formats: [html, json] # RESEARCH_SEARCH_BACKEND=exa # exa | searxng # SEARXNG_BASE_URL=http://localhost:8080 # --------------------------------------------------------------------------- # Advanced per-domain tuning (all optional; defaults shown are the code's own) # --------------------------------------------------------------------------- # MD_QUOTE_TTL_SECONDS=60 # MD_OVERVIEW_TTL_SECONDS=300 # SCR_BULLISH_MIN_SCORE=50 # SCR_BEAR_MIN_SCORE=40 # SCR_MIN_HISTORY_DAYS=200 # SCR_UNIVERSE_MAX=200 # PF_DEFAULT_PORTFOLIO_NAME=My Portfolio # PF_CORRELATION_DAYS=252 # PF_RISK_ACCOUNT_SIZE=100000 # PF_RISK_SECTOR_WARN_PCT=0.30 # PF_RISK_SECTOR_CRITICAL_PCT=0.50 # PF_RISK_POSITION_WARN_PCT=0.20 # PF_RISK_PORTFOLIO_LOSS_WARN_PCT=0.10 # PF_RISK_REGIME_DEFAULT_VIX=20.0 # static VIX assumption (no live VIX feed) # TA_RSI_OVERBOUGHT=70.0 # TA_RSI_OVERSOLD=30.0 # TA_DEFAULT_DAYS=365 # BACKTESTING_INITIAL_CAPITAL=10000.0 # BACKTESTING_FEES=0.001 # BACKTESTING_SLIPPAGE=0.001 # RESEARCH_DEFAULT_DEPTH=standard # RESEARCH_DEFAULT_MAX_SOURCES=10 # RESEARCH_DEFAULT_TIMEFRAME=1m # RESEARCH_SENTIMENT_DEFAULT_TIMEFRAME=1w # RESEARCH_SEARCH_CIRCUIT_BREAKER_FAILURE_THRESHOLD=8 # RESEARCH_SEARCH_CIRCUIT_BREAKER_RECOVERY_SECONDS=30.0 # RESEARCH_SEARCH_TIMEOUT_FAILURE_THRESHOLD=12 # HTTP_TIMEOUT_SECONDS=20.0 # HTTP_RETRIES=3 # DATA_PROVIDER_RATE_LIMIT=5.0