Skip to main content

Overview

Finance Agent uses environment variables for configuration. Copy .env.example to .env and configure the values below.
Never commit .env to version control! It contains sensitive API keys and credentials.

Required Variables

AI/ML API Keys

OPENAI_API_KEY

OPENAI_API_KEY=sk-your-openai-api-key-here
Required: Yes Purpose: OpenAI API access for:
  • Embeddings generation (text-embedding-3-small)
  • Response generation (GPT-4 models)
  • Fallback LLM when Cerebras is unavailable
Get it: OpenAI API Keys

API_NINJAS_KEY

API_NINJAS_KEY=your-api-ninjas-key-here
Required: Yes Purpose: Access to earnings transcripts and financial data via API Ninjas Get it: API Ninjas

CEREBRAS_API_KEY

CEREBRAS_API_KEY=your-cerebras-api-key-here
Required: Yes (primary LLM) Purpose: Fast inference using Cerebras Cloud SDK
  • Primary LLM for RAG responses (Qwen-3-235B model)
  • Significantly faster than OpenAI for large-scale queries
Get it: Cerebras Cloud
Cerebras is the default LLM provider for optimal performance. Set RAG_LLM_PROVIDER=openai to use OpenAI instead.

Database Configuration

DATABASE_URL

DATABASE_URL=postgresql://username:password@localhost:5432/stratalens
Required: Yes Purpose: PostgreSQL connection string for:
  • User authentication and management
  • Chat history and conversations
  • Query analytics and logging
  • Application state
Format: postgresql://[username]:[password]@[host]:[port]/[database]
The database must have the pgvector extension installed. See Database Setup.

Authentication (Production)

CLERK_SECRET_KEY

CLERK_SECRET_KEY=sk_test_your-clerk-secret-key
Required: Yes (for production) Purpose: Clerk server-side authentication secret Get it: Clerk Dashboard → Your App → API Keys

CLERK_PUBLISHABLE_KEY

CLERK_PUBLISHABLE_KEY=pk_test_your-clerk-publishable-key
Required: Yes (for production) Purpose: Clerk client-side authentication key (safe to expose) Get it: Clerk Dashboard → Your App → API Keys

VITE_CLERK_PUBLISHABLE_KEY

VITE_CLERK_PUBLISHABLE_KEY=pk_test_your-clerk-publishable-key
Required: Yes (for frontend) Purpose: Same as CLERK_PUBLISHABLE_KEY, but with VITE_ prefix for Vite to expose to browser
This should have the same value as CLERK_PUBLISHABLE_KEY.

CLERK_WEBHOOK_SECRET

CLERK_WEBHOOK_SECRET=whsec_your-webhook-secret
Required: Optional Purpose: Verify Clerk webhook signatures for user events

Optional Variables

External Services

TAVILY_API_KEY

TAVILY_API_KEY=your-tavily-api-key-here
Required: Optional Purpose: Real-time web search for latest news and market developments Get it: Tavily

REDIS_URL

REDIS_URL=redis://localhost:6379
Required: Optional Purpose: Caching for WebSocket sessions and query results Default: redis://localhost:6379

LOGFIRE_TOKEN

LOGFIRE_TOKEN=your-logfire-token-here
Required: Optional Purpose: Application observability and monitoring via Logfire Get it: Logfire

Application Settings

ENVIRONMENT

ENVIRONMENT=development
Required: No Default: development Purpose: Environment detection for configuration Values:
  • development - Local development (increased connection limits, verbose logging)
  • production - Production deployment (stricter limits, optimized settings)

BASE_URL

BASE_URL=http://localhost:8000
Required: Yes Purpose: Server base URL for CORS and redirects Examples:
  • Development: http://localhost:8000
  • Production: https://www.stratalens.ai

PORT

PORT=8000
Required: No Default: 8000 Purpose: Server port

HOST

HOST=0.0.0.0
Required: No Default: 0.0.0.0 Purpose: Server host (0.0.0.0 allows external connections)

LOG_LEVEL

LOG_LEVEL=INFO
Required: No Default: INFO Purpose: Logging verbosity Values: DEBUG, INFO, WARNING, ERROR, CRITICAL

RAG System Configuration

RAG_LLM_PROVIDER

RAG_LLM_PROVIDER=cerebras
Required: No Default: cerebras Purpose: Choose LLM provider for RAG responses Values:
  • cerebras - Use Cerebras (fast, recommended)
  • openai - Use OpenAI GPT models
  • auto - Use Cerebras if CEREBRAS_API_KEY is set, else OpenAI

RAG_OPENAI_MAX_TOKENS

RAG_OPENAI_MAX_TOKENS=8000
Required: No Default: 8000 Purpose: Max completion tokens for OpenAI responses (lower = faster)

RAG_DEBUG_MODE

RAG_DEBUG_MODE=true
Required: No Default: false Purpose: Enable debug logging including EXPLAIN ANALYZE for database queries
Enable this during development to understand query performance and optimize database indexes.

RAG_MAX_ITERATIONS

RAG_MAX_ITERATIONS=3
Required: No Default: 3 Purpose: Maximum iterations for iterative self-improvement in RAG pipeline

SEC_MAX_ITERATIONS

SEC_MAX_ITERATIONS=5
Required: No Default: 5 Purpose: Maximum iterations for SEC 10-K filing queries (higher for complex financial analysis)

Feature Flags

AUTH_DISABLED

AUTH_DISABLED=true
Required: No Default: true Purpose: Bypass Clerk authentication (development only)
Never set this to true in production! Authentication should always be enabled for production deployments.

ENABLE_LOGIN

ENABLE_LOGIN=false
Required: No Default: false Purpose: Enable/disable login endpoint
This flag is deprecated. Authentication is now handled exclusively through Clerk.

ENABLE_SELF_SERVE_REGISTRATION

ENABLE_SELF_SERVE_REGISTRATION=false
Required: No Default: false Purpose: Enable/disable self-service user registration
This flag is deprecated. User registration is now handled through Clerk.

ENABLE_REGULAR_AUTH

ENABLE_REGULAR_AUTH=true
Required: No Default: true Purpose: Enable regular authentication flow

ENABLE_PREMIUM_ONBOARDING

ENABLE_PREMIUM_ONBOARDING=false
Required: No Default: false Purpose: Enable premium CSV-based user onboarding

Data Paths (Optional)

These variables are optional. The application uses sensible defaults if not specified.
# Override default data directories (optional)
DATA_DIR=./data
TRANSCRIPTS_DIR=./data/transcripts
EMBEDDINGS_DIR=./data/embeddings
10K_FILINGS_DIR=./data/10k_filings
DUCKDB_PATH=./data/duckdb/financial_data_new.duckdb

Legacy Authentication (Deprecated)

These variables are kept for backward compatibility during Clerk migration. They will be removed in a future release.
# JWT secret for legacy auth (deprecated)
JWT_SECRET_KEY=your-secret-key-here-change-in-production

Frontend-Specific Variables

VITE_API_BASE_URL

VITE_API_BASE_URL=
Required: No Default: Empty (same-origin requests) Purpose: API base URL for frontend requests
Leave this empty for same-origin requests (recommended for most setups). Only set it if your backend is on a separate domain.
Examples:
  • Same domain: Leave empty or set to empty string
  • Separate domain: https://api.stratalens.ai

Environment File Template

Here’s a complete .env template for local development:
# ========================================
# AI/ML API Keys
# ========================================
OPENAI_API_KEY=sk-your-openai-api-key-here
API_NINJAS_KEY=your-api-ninjas-key-here
CEREBRAS_API_KEY=your-cerebras-api-key-here
TAVILY_API_KEY=your-tavily-api-key-here

# ========================================
# Database Configuration
# ========================================
DATABASE_URL=postgresql://username:password@localhost:5432/stratalens

# ========================================
# Application Settings
# ========================================
ENVIRONMENT=development
PORT=8000
HOST=0.0.0.0
BASE_URL=http://localhost:8000
LOG_LEVEL=INFO

# ========================================
# Clerk Authentication
# ========================================
CLERK_SECRET_KEY=sk_test_your-clerk-secret-key
CLERK_PUBLISHABLE_KEY=pk_test_your-clerk-publishable-key
VITE_CLERK_PUBLISHABLE_KEY=pk_test_your-clerk-publishable-key
CLERK_WEBHOOK_SECRET=whsec_your-webhook-secret

# ========================================
# Feature Flags
# ========================================
AUTH_DISABLED=true  # Development only!
RAG_DEBUG_MODE=true

# ========================================
# RAG System Configuration
# ========================================
RAG_LLM_PROVIDER=cerebras
RAG_OPENAI_MAX_TOKENS=8000
RAG_MAX_ITERATIONS=3
SEC_MAX_ITERATIONS=5

# ========================================
# External Services (Optional)
# ========================================
REDIS_URL=redis://localhost:6379
LOGFIRE_TOKEN=your-logfire-token-here

Next Steps

Build docs developers (and LLMs) love