# ContextFS Configuration
# Copy to .env and modify as needed
# =============================================================================
# STORAGE BACKEND SELECTION
# =============================================================================
# Options: sqlite (default), postgres, sqlite+falkordb, postgres+falkordb
# - sqlite: Local SQLite + ChromaDB (default, zero config)
# - postgres: PostgreSQL with pgvector + Apache AGE (unified)
# - sqlite+falkordb: SQLite + ChromaDB + FalkorDB graph
# - postgres+falkordb: PostgreSQL + FalkorDB graph
CONTEXTFS_BACKEND=sqlite
# =============================================================================
# DATA DIRECTORY (for sqlite/chromadb backends)
# =============================================================================
CONTEXTFS_DATA_DIR=~/.contextfs
# =============================================================================
# SQLITE CONFIGURATION
# =============================================================================
# Database filename (relative to DATA_DIR)
CONTEXTFS_SQLITE_FILENAME=context.db
# =============================================================================
# POSTGRESQL CONFIGURATION
# =============================================================================
# Connection string format: postgresql://user:password@host:port/database
CONTEXTFS_POSTGRES_URL=postgresql://contextfs:contextfs@localhost:5432/contextfs
# Enable pgvector extension for semantic search
CONTEXTFS_POSTGRES_PGVECTOR=true
# Enable Apache AGE extension for graph operations
CONTEXTFS_POSTGRES_AGE=true
# =============================================================================
# CHROMADB CONFIGURATION
# =============================================================================
# Embedding model for semantic search
CONTEXTFS_EMBEDDING_MODEL=all-MiniLM-L6-v2
# Embedding backend: auto (fastembed if installed, else sentence_transformers),
# fastembed (ONNX, faster), or sentence_transformers
CONTEXTFS_EMBEDDING_BACKEND=auto
# GPU acceleration: true, false, or empty for auto-detect
# Auto-detect enables CoreML on Apple Silicon (M1/M2/M3), CPU elsewhere
CONTEXTFS_USE_GPU=
# Parallel workers for embedding (empty = auto)
CONTEXTFS_EMBEDDING_PARALLEL_WORKERS=
# Embedding batch size (default: 256, larger = faster but more memory)
CONTEXTFS_EMBEDDING_BATCH_SIZE=256
# ChromaDB collection name
CONTEXTFS_CHROMA_COLLECTION=contextfs_memories
# ChromaDB server mode (optional, for remote ChromaDB)
# Leave empty for embedded mode
CONTEXTFS_CHROMA_HOST=
CONTEXTFS_CHROMA_PORT=8000
# =============================================================================
# FALKORDB CONFIGURATION (Graph Backend)
# =============================================================================
# Enable FalkorDB for advanced graph operations
CONTEXTFS_FALKORDB_ENABLED=false
# FalkorDB connection settings
CONTEXTFS_FALKORDB_HOST=localhost
CONTEXTFS_FALKORDB_PORT=6379
CONTEXTFS_FALKORDB_PASSWORD=
CONTEXTFS_FALKORDB_GRAPH_NAME=contextfs_memory
# =============================================================================
# MEMORY LINEAGE SETTINGS
# =============================================================================
# Enable automatic lineage tracking on memory updates
CONTEXTFS_LINEAGE_AUTO_TRACK=true
# Default merge strategy: union, intersection, latest, oldest
CONTEXTFS_LINEAGE_MERGE_STRATEGY=union
# Preserve tags when evolving memories
CONTEXTFS_LINEAGE_PRESERVE_TAGS=true
# =============================================================================
# SEARCH SETTINGS
# =============================================================================
# Default number of search results
CONTEXTFS_DEFAULT_SEARCH_LIMIT=10
# Minimum similarity score for semantic search (0.0-1.0)
CONTEXTFS_MIN_SIMILARITY_SCORE=0.3
# =============================================================================
# INDEXING SETTINGS
# =============================================================================
# Maximum git commits to index per repo (0 = unlimited)
CONTEXTFS_MAX_COMMITS=100
# =============================================================================
# SESSION SETTINGS
# =============================================================================
# Auto-save sessions on exit
CONTEXTFS_AUTO_SAVE_SESSIONS=true
# Session timeout in minutes
CONTEXTFS_SESSION_TIMEOUT_MINUTES=60
# Maximum concurrent login sessions per user per session type (Web, CLI, OAuth)
# When limit is exceeded, oldest session is removed (LRU policy)
CONTEXTFS_MAX_SESSIONS=10
# =============================================================================
# API KEYS (Optional - for LLM-powered features)
# =============================================================================
CONTEXTFS_ANTHROPIC_API_KEY=
CONTEXTFS_OPENAI_API_KEY=
# Default AI model for summaries: claude or openai
CONTEXTFS_DEFAULT_AI_MODEL=claude
CONTEXTFS_CLAUDE_MODEL=claude-3-sonnet-20240229
CONTEXTFS_OPENAI_MODEL=gpt-3.5-turbo
# =============================================================================
# MCP SERVER SETTINGS
# =============================================================================
# Enable MCP server
CONTEXTFS_MCP_ENABLED=true
# MCP server port (SSE transport)
CONTEXTFS_MCP_PORT=8003
# =============================================================================
# LOGGING
# =============================================================================
# Log level: DEBUG, INFO, WARNING, ERROR
CONTEXTFS_LOG_LEVEL=INFO
# Log file (empty for stdout only)
CONTEXTFS_LOG_FILE=
# =============================================================================
# CLOUD SYNC SERVICE
# =============================================================================
# OAuth credentials for web frontend
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
# OAuth credentials for CLI (separate OAuth apps with localhost callback)
CONTEXTFS_CLI_GITHUB_CLIENT_ID=
CONTEXTFS_CLI_GITHUB_CLIENT_SECRET=
CONTEXTFS_CLI_GOOGLE_CLIENT_ID=
CONTEXTFS_CLI_GOOGLE_CLIENT_SECRET=
CONTEXTFS_CLI_OAUTH_PORT=8400
# Stripe (for billing)
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
STRIPE_PRICE_PRO=
STRIPE_PRICE_TEAM=
# Email service (Mailgun)
MAILGUN_API_KEY=
MAILGUN_DOMAIN=appmail.magnetonlabs.com
# App URLs
APP_BASE_URL=http://localhost:3000
# =============================================================================
# DEVELOPMENT / TESTING
# =============================================================================
# Enable debug mode
CONTEXTFS_DEBUG=false
# Test mode (uses in-memory databases)
CONTEXTFS_TEST_MODE=false
# =============================================================================
# NPM PUBLISHING (for maintainers)
# =============================================================================
# NPM token for publishing claude-plugin-contextfs package
# Create at: https://www.npmjs.com/settings/tokens
# Required permissions: Read and write, with "Bypass 2FA for automation"
NPM_TOKEN=
# =============================================================================
# SLACK NOTIFICATIONS (for maintainers)
# =============================================================================
# Slack incoming webhook URL for release notifications
# Create at: https://api.slack.com/apps → Your App → Incoming Webhooks
SLACK_WEBHOOK_URL=