211 lines
7.8 KiB
Plaintext
211 lines
7.8 KiB
Plaintext
# ============================================================================
|
|
# ForensicPathways Environment Configuration
|
|
# ============================================================================
|
|
# Copy this file to .env and configure the REQUIRED values below.
|
|
# Optional features can be enabled by uncommenting and configuring them.
|
|
|
|
# ============================================================================
|
|
# 🔥 CRITICAL - REQUIRED FOR BASIC OPERATION
|
|
# ============================================================================
|
|
|
|
# Your application's public URL (used for redirects and links)
|
|
PUBLIC_BASE_URL=http://localhost:4321
|
|
|
|
# Secret key for session encryption (GENERATE A SECURE RANDOM STRING!)
|
|
AUTH_SECRET=your-secret-key-change-in-production-please
|
|
|
|
# Primary AI service for query processing (REQUIRED for core functionality)
|
|
AI_ANALYZER_ENDPOINT=https://api.mistral.ai/v1/chat/completions
|
|
AI_ANALYZER_API_KEY=your-ai-api-key-here
|
|
AI_ANALYZER_MODEL=mistral/mistral-small-latest
|
|
|
|
# ============================================================================
|
|
# ⚙️ IMPORTANT - CORE FEATURES CONFIGURATION
|
|
# ============================================================================
|
|
|
|
# Application environment
|
|
NODE_ENV=development
|
|
|
|
# === AUTHENTICATION & SECURITY ===
|
|
# Set to true to require authentication (RECOMMENDED for production)
|
|
AUTHENTICATION_NECESSARY_CONTRIBUTIONS=false
|
|
AUTHENTICATION_NECESSARY_AI=false
|
|
AUTHENTICATION_NECESSARY_GATEDCONTENT=true
|
|
|
|
# OIDC Provider Configuration - Server appends endpoint (e.g. auth/callback) automatically
|
|
OIDC_ENDPOINT=https://cloud.cc24.dev/index.php
|
|
OIDC_CLIENT_ID=your-client-id
|
|
OIDC_CLIENT_SECRET=your-client-secret
|
|
|
|
# === FILE HANDLING ===
|
|
# Nextcloud server for file uploads (knowledgebase contributions)
|
|
NEXTCLOUD_ENDPOINT=https://your-nextcloud.com
|
|
NEXTCLOUD_USERNAME=your-username
|
|
NEXTCLOUD_PASSWORD=your-app-password
|
|
NEXTCLOUD_UPLOAD_PATH=/kb-media
|
|
NEXTCLOUD_PUBLIC_URL=https://your-nextcloud.com/s/
|
|
|
|
# === COLLABORATION & CONTRIBUTIONS ===
|
|
# Git provider: gitea, github, or gitlab
|
|
GIT_PROVIDER=gitea
|
|
GIT_REPO_URL=https://git.example.com/owner/forensic-pathways.git
|
|
GIT_API_ENDPOINT=https://git.example.com/api/v1
|
|
GIT_API_TOKEN=your-git-api-token
|
|
|
|
# === AUDIT TRAIL (Important for forensic work) ===
|
|
FORENSIC_AUDIT_ENABLED=true
|
|
FORENSIC_AUDIT_DETAIL_LEVEL=standard
|
|
FORENSIC_AUDIT_RETENTION_HOURS=24
|
|
FORENSIC_AUDIT_MAX_ENTRIES=50
|
|
|
|
# === AI SEMANTIC SEARCH ===
|
|
# Enable semantic search (highly recommended for better results)
|
|
REMOVE_AI_EMBEDDINGS_ENABLED=true
|
|
AI_EMBEDDINGS_ENDPOINT=https://api.mistral.ai/v1/embeddings
|
|
AI_EMBEDDINGS_API_KEY=your-embeddings-api-key-here
|
|
AI_EMBEDDINGS_MODEL=mistral-embed
|
|
|
|
# User rate limiting (queries per minute)
|
|
AI_RATE_LIMIT_MAX_REQUESTS=4
|
|
|
|
# ============================================================================
|
|
# CACHING BEHAVIOR
|
|
# ============================================================================
|
|
# - Videos downloaded once, cached permanently
|
|
# - No time-based expiration
|
|
# - Dramatically improves loading times after first download
|
|
# - Emergency cleanup only when approaching disk space limit
|
|
# - Perfect for manually curated forensics training content
|
|
# ============================================================================
|
|
|
|
# ============================================================================
|
|
# 🎛️ PERFORMANCE TUNING - SENSIBLE DEFAULTS PROVIDED
|
|
# ============================================================================
|
|
|
|
# === AI Pipeline Configuration ===
|
|
# These values are pre-tuned for optimal performance - adjust only if needed
|
|
|
|
# Vector similarity search settings
|
|
AI_EMBEDDING_CANDIDATES=50
|
|
AI_SIMILARITY_THRESHOLD=0.3
|
|
AI_EMBEDDING_SELECTION_LIMIT=30
|
|
AI_EMBEDDING_CONCEPTS_LIMIT=15
|
|
|
|
# === METHOD/TOOL BALANCE CONFIGURATION ===
|
|
# Controls the ratio of methods vs software tools sent to AI
|
|
# Methods = procedural guidance, best practices, workflows
|
|
# Software = actual tools and applications
|
|
# Values should sum to less than 1.0 (remainder is buffer)
|
|
AI_METHOD_SELECTION_RATIO=0.4 # 40% methods (increase for more procedural guidance)
|
|
AI_SOFTWARE_SELECTION_RATIO=0.5 # 50% software tools (increase for more tool recommendations)
|
|
|
|
# AI selection limits
|
|
AI_MAX_SELECTED_ITEMS=25
|
|
AI_MAX_TOOLS_TO_ANALYZE=20
|
|
AI_MAX_CONCEPTS_TO_ANALYZE=10
|
|
|
|
# Efficiency thresholds
|
|
AI_EMBEDDINGS_MIN_TOOLS=8
|
|
AI_EMBEDDINGS_MAX_REDUCTION_RATIO=0.75
|
|
|
|
# Fallback limits when embeddings are disabled
|
|
AI_NO_EMBEDDINGS_TOOL_LIMIT=25
|
|
AI_NO_EMBEDDINGS_CONCEPT_LIMIT=10
|
|
|
|
# === Rate Limiting & Timing ===
|
|
AI_MICRO_TASK_TOTAL_LIMIT=30
|
|
AI_MICRO_TASK_DELAY_MS=500
|
|
AI_RATE_LIMIT_DELAY_MS=2000
|
|
|
|
# === Embeddings Batch Processing ===
|
|
AI_EMBEDDINGS_BATCH_SIZE=10
|
|
AI_EMBEDDINGS_BATCH_DELAY_MS=1000
|
|
|
|
# === Context Management ===
|
|
REMOVE_AI_MAX_CONTEXT_TOKENS=4000
|
|
REMOVE_AI_MAX_PROMPT_TOKENS=2500
|
|
|
|
# === Confidence Scoring ===
|
|
CONFIDENCE_SEMANTIC_WEIGHT=0.5
|
|
CONFIDENCE_SUITABILITY_WEIGHT=0.5
|
|
CONFIDENCE_MINIMUM_THRESHOLD=50
|
|
CONFIDENCE_MEDIUM_THRESHOLD=70
|
|
CONFIDENCE_HIGH_THRESHOLD=80
|
|
|
|
|
|
|
|
# ============================================================================
|
|
# 📋 QUICK SETUP CHECKLIST
|
|
# ============================================================================
|
|
#
|
|
# MINIMUM FOR DEVELOPMENT/TESTING:
|
|
# 1. ✅ Set PUBLIC_BASE_URL to your domain/localhost
|
|
# 2. ✅ Generate secure AUTH_SECRET (use: openssl rand -base64 32)
|
|
# 3. ✅ Configure AI_ANALYZER_ENDPOINT and API_KEY for your AI service
|
|
# 4. ✅ Test basic functionality
|
|
#
|
|
# PRODUCTION-READY DEPLOYMENT:
|
|
# 5. ✅ Enable authentication (configure AUTHENTICATION_* and OIDC_*)
|
|
# 6. ✅ Configure file handling (set NEXTCLOUD_* for uploads)
|
|
# 7. ✅ Enable collaboration (set GIT_* for contributions)
|
|
# 8. ✅ Enable audit trail (verify FORENSIC_AUDIT_ENABLED=true)
|
|
# 9. ✅ Configure embeddings for better search (AI_EMBEDDINGS_*)
|
|
# 10. ✅ Adjust rate limits based on expected usage
|
|
|
|
# ============================================================================
|
|
# 🏃♂️ PERFORMANCE PRESETS - UNCOMMENT ONE IF NEEDED
|
|
# ============================================================================
|
|
|
|
# 🚀 SPEED OPTIMIZED (faster responses, less comprehensive):
|
|
# AI_EMBEDDING_CANDIDATES=25
|
|
# AI_MAX_SELECTED_ITEMS=15
|
|
# AI_MAX_TOOLS_TO_ANALYZE=10
|
|
# AI_MICRO_TASK_DELAY_MS=250
|
|
|
|
# 🎯 ACCURACY OPTIMIZED (slower responses, more comprehensive):
|
|
# AI_EMBEDDING_CANDIDATES=100
|
|
# AI_MAX_SELECTED_ITEMS=50
|
|
# AI_MAX_TOOLS_TO_ANALYZE=40
|
|
# AI_MICRO_TASK_DELAY_MS=1000
|
|
|
|
# 🔋 RESOURCE CONSTRAINED (for limited AI quotas):
|
|
# AI_RATE_LIMIT_MAX_REQUESTS=2
|
|
# AI_MICRO_TASK_TOTAL_LIMIT=15
|
|
# AI_MAX_TOOLS_TO_ANALYZE=10
|
|
# AI_EMBEDDINGS_ENABLED=false
|
|
|
|
# 🔬 METHOD-FOCUSED (more procedural guidance, less tools):
|
|
# AI_METHOD_SELECTION_RATIO=0.6
|
|
# AI_SOFTWARE_SELECTION_RATIO=0.3
|
|
|
|
# 🛠️ TOOL-FOCUSED (more software recommendations, less methods):
|
|
# AI_METHOD_SELECTION_RATIO=0.2
|
|
# AI_SOFTWARE_SELECTION_RATIO=0.7
|
|
|
|
# ============================================================================
|
|
# 🌐 AI SERVICE EXAMPLES
|
|
# ============================================================================
|
|
|
|
# === OLLAMA (Local) ===
|
|
# AI_ANALYZER_ENDPOINT=http://localhost:11434/v1/chat/completions
|
|
# AI_ANALYZER_API_KEY=
|
|
# AI_ANALYZER_MODEL=llama3.1:8b
|
|
# AI_EMBEDDINGS_ENDPOINT=http://localhost:11434/v1/embeddings
|
|
# AI_EMBEDDINGS_API_KEY=
|
|
# AI_EMBEDDINGS_MODEL=nomic-embed-text
|
|
|
|
# === OPENAI ===
|
|
# AI_ANALYZER_ENDPOINT=https://api.openai.com/v1/chat/completions
|
|
# AI_ANALYZER_API_KEY=sk-your-openai-key
|
|
# AI_ANALYZER_MODEL=gpt-4o-mini
|
|
# AI_EMBEDDINGS_ENDPOINT=https://api.openai.com/v1/embeddings
|
|
# AI_EMBEDDINGS_API_KEY=sk-your-openai-key
|
|
# AI_EMBEDDINGS_MODEL=text-embedding-3-small
|
|
|
|
# === MISTRAL (Default) ===
|
|
# AI_ANALYZER_ENDPOINT=https://api.mistral.ai/v1/chat/completions
|
|
# AI_ANALYZER_API_KEY=your-mistral-key
|
|
# AI_ANALYZER_MODEL=mistral-small-latest
|
|
# AI_EMBEDDINGS_ENDPOINT=https://api.mistral.ai/v1/embeddings
|
|
# AI_EMBEDDINGS_API_KEY=your-mistral-key
|
|
# AI_EMBEDDINGS_MODEL=mistral-embed |