12 KiB
Configuration
Complete reference for configuring Hindsight server through environment variables and configuration files.
Environment Variables
Hindsight is configured entirely through environment variables, making it easy to deploy across different environments and container orchestration platforms.
LLM Provider Configuration
Configure the LLM provider used for fact extraction, entity resolution, and reasoning operations.
Common LLM Settings
| Variable | Description | Default | Required |
|---|---|---|---|
HINDSIGHT_API_LLM_PROVIDER |
LLM provider: openai, groq, ollama, anthropic |
groq |
Yes |
HINDSIGHT_API_LLM_API_KEY |
API key for LLM provider | - | Yes (except ollama) |
HINDSIGHT_API_LLM_MODEL |
Model name | Provider-specific | No |
HINDSIGHT_API_LLM_BASE_URL |
Custom LLM endpoint | Provider default | No |
HINDSIGHT_API_LLM_MAX_RETRIES |
Maximum retry attempts for LLM calls | 3 |
No |
HINDSIGHT_API_LLM_TIMEOUT |
Request timeout in seconds | 30 |
No |
Provider-Specific Examples
Groq (Recommended for Fast Inference)
export HINDSIGHT_API_LLM_PROVIDER=groq
export HINDSIGHT_API_LLM_API_KEY=gsk_xxxxxxxxxxxx
export HINDSIGHT_API_LLM_MODEL=llama-3.1-70b-versatile
OpenAI
export HINDSIGHT_API_LLM_PROVIDER=openai
export HINDSIGHT_API_LLM_API_KEY=sk-xxxxxxxxxxxx
export HINDSIGHT_API_LLM_MODEL=gpt-4o
Anthropic Claude
export HINDSIGHT_API_LLM_PROVIDER=anthropic
export HINDSIGHT_API_LLM_API_KEY=sk-ant-xxxxxxxxxxxx
export HINDSIGHT_API_LLM_MODEL=claude-3-5-sonnet-20241022
Ollama (Local, No API Key)
export HINDSIGHT_API_LLM_PROVIDER=ollama
export HINDSIGHT_API_LLM_BASE_URL=http://localhost:11434/v1
export HINDSIGHT_API_LLM_MODEL=llama3.1
OpenAI-Compatible Endpoints
export HINDSIGHT_API_LLM_PROVIDER=openai
export HINDSIGHT_API_LLM_BASE_URL=https://your-endpoint.com/v1
export HINDSIGHT_API_LLM_API_KEY=your-api-key
export HINDSIGHT_API_LLM_MODEL=your-model-name
Database Configuration
Configure the PostgreSQL database connection and behavior.
| Variable | Description | Default | Required |
|---|---|---|---|
HINDSIGHT_API_DATABASE_URL |
PostgreSQL connection string | - | Yes* |
HINDSIGHT_API_DB_POOL_SIZE |
Connection pool size | 20 |
No |
HINDSIGHT_API_DB_MAX_OVERFLOW |
Max overflow connections | 10 |
No |
HINDSIGHT_API_DB_POOL_TIMEOUT |
Pool checkout timeout (seconds) | 30 |
No |
HINDSIGHT_API_DB_POOL_RECYCLE |
Connection recycle time (seconds) | 3600 |
No |
*Note: If DATABASE_URL is not provided and running via pip install hindsight-all, the server will use embedded pg0 (PostgreSQL in a single file).
Connection String Format
# Standard PostgreSQL URL format
postgresql://username:password@hostname:port/database
# With SSL
postgresql://user:pass@host:5432/db?sslmode=require
# With connection pool settings
postgresql://user:pass@host:5432/db?pool_size=20&max_overflow=10
Examples
Docker Compose Default
export HINDSIGHT_API_DATABASE_URL=postgresql://hindsight:hindsight_dev@postgres:5432/hindsight
AWS RDS
export HINDSIGHT_API_DATABASE_URL=postgresql://admin:password@hindsight.xxxx.us-east-1.rds.amazonaws.com:5432/hindsight?sslmode=require
Supabase
export HINDSIGHT_API_DATABASE_URL=postgresql://postgres:password@db.xxxxxxxxxxxx.supabase.co:5432/postgres
Embedded pg0 (Default for pip install)
# No DATABASE_URL needed - automatically uses pg0
# Data stored in: ~/.hindsight/data/
Server Configuration
Configure the HTTP server behavior.
| Variable | Description | Default | Required |
|---|---|---|---|
HINDSIGHT_API_HOST |
Server bind address | 0.0.0.0 |
No |
HINDSIGHT_API_PORT |
Server port | 8888 |
No |
HINDSIGHT_API_WORKERS |
Number of worker processes | 1 |
No |
HINDSIGHT_API_RELOAD |
Enable auto-reload (dev mode) | false |
No |
HINDSIGHT_API_LOG_LEVEL |
Logging level: debug, info, warning, error |
info |
No |
HINDSIGHT_API_CORS_ORIGINS |
Allowed CORS origins (comma-separated) | * |
No |
Examples
Production Server
export HINDSIGHT_API_HOST=0.0.0.0
export HINDSIGHT_API_PORT=8888
export HINDSIGHT_API_WORKERS=4
export HINDSIGHT_API_LOG_LEVEL=warning
export HINDSIGHT_API_CORS_ORIGINS="https://app.example.com,https://admin.example.com"
Development Server
export HINDSIGHT_API_HOST=127.0.0.1
export HINDSIGHT_API_PORT=8888
export HINDSIGHT_API_RELOAD=true
export HINDSIGHT_API_LOG_LEVEL=debug
MCP Server Configuration
Configure the Model Context Protocol (MCP) server for AI assistant integrations.
| Variable | Description | Default | Required |
|---|---|---|---|
HINDSIGHT_API_MCP_ENABLED |
Enable MCP server | true |
No |
HINDSIGHT_API_MCP_TRANSPORT |
Transport: stdio, sse |
stdio |
No |
# Enable MCP server (default)
export HINDSIGHT_API_MCP_ENABLED=true
# Disable MCP server
export HINDSIGHT_API_MCP_ENABLED=false
Search and Retrieval Configuration
Configure search behavior and performance.
| Variable | Description | Default | Required |
|---|---|---|---|
HINDSIGHT_API_DEFAULT_THINKING_BUDGET |
Default thinking budget (tokens) | 500 |
No |
HINDSIGHT_API_MAX_SEARCH_RESULTS |
Maximum search results to return | 100 |
No |
HINDSIGHT_API_RERANK_ENABLED |
Enable cross-encoder reranking | true |
No |
HINDSIGHT_API_RERANK_TOP_K |
Number of results to rerank | 50 |
No |
# High-performance search
export HINDSIGHT_API_DEFAULT_THINKING_BUDGET=1000
export HINDSIGHT_API_MAX_SEARCH_RESULTS=200
export HINDSIGHT_API_RERANK_ENABLED=true
export HINDSIGHT_API_RERANK_TOP_K=100
# Fast, resource-efficient search
export HINDSIGHT_API_DEFAULT_THINKING_BUDGET=200
export HINDSIGHT_API_MAX_SEARCH_RESULTS=50
export HINDSIGHT_API_RERANK_ENABLED=false
Embedding Model Configuration
Configure the embedding model for vector search.
| Variable | Description | Default | Required |
|---|---|---|---|
HINDSIGHT_API_EMBEDDING_MODEL |
HuggingFace model name | all-MiniLM-L6-v2 |
No |
HINDSIGHT_API_EMBEDDING_DEVICE |
Device: cpu, cuda, mps |
cpu |
No |
HINDSIGHT_API_EMBEDDING_BATCH_SIZE |
Batch size for embedding generation | 32 |
No |
# Use GPU for embeddings (if available)
export HINDSIGHT_API_EMBEDDING_DEVICE=cuda
# Use Apple Silicon GPU
export HINDSIGHT_API_EMBEDDING_DEVICE=mps
# Larger batch size for better throughput
export HINDSIGHT_API_EMBEDDING_BATCH_SIZE=64
Control Plane Configuration
Configure the optional web UI control plane.
| Variable | Description | Default | Required |
|---|---|---|---|
HINDSIGHT_CP_API_URL |
API server URL | http://localhost:8888 |
No |
HINDSIGHT_CP_HOSTNAME |
Server bind address | 0.0.0.0 |
No |
HINDSIGHT_CP_PORT |
Server port | 3000 |
No |
export HINDSIGHT_CP_API_URL=http://api.example.com:8888
export HINDSIGHT_CP_HOSTNAME=0.0.0.0
export HINDSIGHT_CP_PORT=3000
Configuration Files
.env File
For local development and Docker Compose deployments, use a .env file:
# .env
# Database
HINDSIGHT_API_DATABASE_URL=postgresql://hindsight:hindsight_dev@localhost:5432/hindsight
# LLM Provider
HINDSIGHT_API_LLM_PROVIDER=groq
HINDSIGHT_API_LLM_API_KEY=gsk_xxxxxxxxxxxx
HINDSIGHT_API_LLM_MODEL=llama-3.1-70b-versatile
# Server
HINDSIGHT_API_HOST=0.0.0.0
HINDSIGHT_API_PORT=8888
HINDSIGHT_API_LOG_LEVEL=info
# Search
HINDSIGHT_API_DEFAULT_THINKING_BUDGET=500
HINDSIGHT_API_MAX_SEARCH_RESULTS=100
# Control Plane
HINDSIGHT_CP_API_URL=http://localhost:8888
HINDSIGHT_CP_PORT=3000
Docker Compose
Example docker-compose.yml configuration:
version: '3.8'
services:
postgres:
image: pgvector/pgvector:pg16
environment:
POSTGRES_USER: hindsight
POSTGRES_PASSWORD: hindsight_dev
POSTGRES_DB: hindsight
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
api:
image: hindsight/api:latest
environment:
HINDSIGHT_API_DATABASE_URL: postgresql://hindsight:hindsight_dev@postgres:5432/hindsight
HINDSIGHT_API_LLM_PROVIDER: groq
HINDSIGHT_API_LLM_API_KEY: ${GROQ_API_KEY}
HINDSIGHT_API_LLM_MODEL: llama-3.1-70b-versatile
HINDSIGHT_API_PORT: 8888
HINDSIGHT_API_LOG_LEVEL: info
ports:
- "8888:8888"
depends_on:
- postgres
control-plane:
image: hindsight/control-plane:latest
environment:
HINDSIGHT_CP_API_URL: http://api:8888
HINDSIGHT_CP_PORT: 3000
ports:
- "3000:3000"
depends_on:
- api
volumes:
postgres_data:
Kubernetes ConfigMap
Example Kubernetes configuration:
apiVersion: v1
kind: ConfigMap
metadata:
name: hindsight-config
data:
HINDSIGHT_API_LLM_PROVIDER: "groq"
HINDSIGHT_API_LLM_MODEL: "llama-3.1-70b-versatile"
HINDSIGHT_API_PORT: "8888"
HINDSIGHT_API_LOG_LEVEL: "info"
HINDSIGHT_API_DEFAULT_THINKING_BUDGET: "500"
HINDSIGHT_API_MAX_SEARCH_RESULTS: "100"
---
apiVersion: v1
kind: Secret
metadata:
name: hindsight-secrets
type: Opaque
stringData:
HINDSIGHT_API_DATABASE_URL: "postgresql://user:pass@postgres:5432/hindsight"
HINDSIGHT_API_LLM_API_KEY: "gsk_xxxxxxxxxxxx"
Configuration Precedence
Configuration values are resolved in this order (highest to lowest priority):
- Environment variables - Direct environment variables
.envfile - Local.envfile in current directory- Default values - Built-in defaults
Configuration Validation
Hindsight validates configuration on startup and will fail fast with clear error messages:
# Missing required configuration
ERROR: HINDSIGHT_API_LLM_API_KEY is required when using provider 'openai'
# Invalid value
ERROR: HINDSIGHT_API_LOG_LEVEL must be one of: debug, info, warning, error
# Invalid connection
ERROR: Failed to connect to database at postgresql://localhost:5432/hindsight
Best Practices
- Use secrets management for production deployments (AWS Secrets Manager, Vault, etc.)
- Never commit
.envfiles with real credentials to version control - Use different configs for dev, staging, and production environments
- Set appropriate log levels:
debugfor dev,infofor staging,warningfor production - Configure connection pooling based on expected load
- Use managed databases in production with proper backups
- Enable SSL/TLS for database connections in production
- Set CORS origins explicitly in production (don't use
*)
Troubleshooting
Database Connection Issues
# Test database connection
psql "$HINDSIGHT_API_DATABASE_URL"
# Check PostgreSQL is running
docker-compose ps postgres
# View database logs
docker-compose logs postgres
LLM Provider Issues
# Test API key
curl https://api.groq.com/openai/v1/models \
-H "Authorization: Bearer $HINDSIGHT_API_LLM_API_KEY"
# Enable debug logging
export HINDSIGHT_API_LOG_LEVEL=debug
hindsight-api
Port Already in Use
# Find process using port 8888
lsof -i :8888
# Kill process
kill -9 <PID>
# Or use a different port
export HINDSIGHT_API_PORT=9000
Advanced Configuration
Custom Embedding Models
Use custom embedding models from HuggingFace:
export HINDSIGHT_API_EMBEDDING_MODEL=sentence-transformers/all-mpnet-base-v2
export HINDSIGHT_API_EMBEDDING_DEVICE=cuda
Custom Temporal Parser
Use custom T5 model for temporal parsing:
export HINDSIGHT_API_TEMPORAL_MODEL=google/t5-v1_1-base
Multi-GPU Configuration
For distributed embedding generation:
export HINDSIGHT_API_EMBEDDING_DEVICE=cuda:0,cuda:1
export HINDSIGHT_API_EMBEDDING_BATCH_SIZE=128
For configuration issues not covered here, please open an issue on GitHub.