# AI-KOD platform environment (server/worker/cli) # Copy to AI_KOD_ROOT/env/.env and override as needed. # === Core paths === AI_KOD_ROOT=~/.ai-kod # AI_KOD_PROJECT_ROOT=/absolute/path/to/ai-kod # === Server === NODE_ENV=development HOST=localhost PORT=3001 WORKER_PORT=3002 SSE_MAX_CONNECTIONS=10 SSE_IDLE_MS=60000 # === Redis === REDIS_URL=redis://localhost:6379 REDIS_MAX_CONNECTIONS=1 REDIS_ENABLE_READY_CHECK=true REDIS_MAX_RETRIES=3 REDIS_RETRY_DELAY=50 REDIS_COMMAND_TIMEOUT=5000 REDIS_CONNECT_TIMEOUT_MS=10000 REDIS_BLOCKING_COMMAND_TIMEOUT_MS=0 REDIS_KEEP_ALIVE_MS=30000 REDIS_LAZY_CONNECT=false REDIS_ENABLE_AUTOPIPELINING=false REDIS_FAMILY=4 REDIS_CONNECTION_NAME= REDIS_BASE_RETRY_DELAY_MS=50 REDIS_MAX_RETRY_DELAY_MS=2000 # === Queue === QUEUE_CONCURRENCY=1 QUEUE_REMOVE_ON_COMPLETE=50 QUEUE_REMOVE_ON_FAIL=100 QUEUE_MAX_STALLED_COUNT=1 QUEUE_STALLED_INTERVAL=30000 QUEUE_LOCK_DURATION=600000 QUEUE_LOCK_RENEW=15000 QUEUE_MAX_JOB_AGE=86400 QUEUE_WARNING_THRESHOLD=200 QUEUE_CRITICAL_THRESHOLD=1000 # === Workflow === WORKFLOW_CACHE_TTL=3600 WORKFLOW_MAX_CACHE_SIZE=100 WORKFLOW_MAX_DEPTH=10 WORKFLOW_DEFAULT_TIMEOUT=300000 WORKFLOW_MAX_PARALLEL_STEPS=50 WORKFLOW_MAX_ITERATIONS=100 # === Worker defaults === WORKER_DEFAULT_MODEL=claude-3-5-sonnet-20241022 WORKER_FIXTURES_PATH=./apps/worker/data/fixtures # === Worker runtime/logging === WORKER_STATUS_TRANSPORTS=filesystem,redis WORKER_METRICS_HISTORY_LIMIT=50 WORKERS_REDIS_TTL_SECONDS=30 WORKER_DETAILED_LOGGING=true WORKER_LOGS_MASK_SENSITIVE=true WORKER_LOGS_BUFFER_SIZE=100 WORKER_LOGS_FLUSH_INTERVAL_MS=5000 WORKER_LOGS_TTL_DAYS=7 WORKER_LOGS_MAX_SIZE_MB=50 WORKER_SDK_EARLY_FINISH=true FORCE_CONFIG_DIAGNOSTICS=false WORKER_ID= WORKER_SERVICE_CACHE_MS=5000 WORKER_OFFLINE_THRESHOLD_MS=60000 WORKERS_HEALTH_OFFLINE_THRESHOLD_MS=60000 WORKERS_PM2_RECONCILE=true WORKERS_PM2_RECONCILE_INTERVAL_MS=15000 WORKERS_REDIS_STALE_HEARTBEAT_MS=15000 WORKERS_PM2_RECONCILER_KILL_ORPHANS=false WORKERS_PM2_RECONCILER_ORPHAN_MAX_AGE_MS=120000 # === Worker timeouts === TASK_NO_PROGRESS_TIMEOUT_MS=300000 NO_PROGRESS_STEP_TIMEOUT_MS=300000 STALLED_SCAN_INTERVAL_MS=15000 # === output.yaml validation retry === OUTPUT_YAML_RETRIES=2 OUTPUT_YAML_RETRY_DELAY_MS=500 OUTPUT_YAML_RETRY_MAX_TIME_MS=0 OUTPUT_YAML_RETRY_HEARTBEAT_MS=15000 OUTPUT_YAML_LOG_DETAILS=false # === Worker diagnostics === API_URL=http://localhost:3001 # === Layout === LAYOUT_REDIS_PREFIX=layout: LAYOUT_WARMUP_ON_START=false LAYOUT_MAX_PARALLEL=2 # === Context/steps === STEP_ID_PREFIX=STEP CONTEXT_FILE_LIST_LIMIT=100 # === Engines (vendor-prefixed) === # Engine env is NOT part of platform .env. # Use engine profiles in: AI_KOD_ROOT/env/engines/.env. # Templates live in repo: library/env/engines/.env.* # === Client === CLIENT_BASE_URL=http://localhost:3001 CLIENT_TOKEN= CLIENT_TIMEOUT_MS=30000 # === Observability === LOG_LEVEL=info LOG_SENSITIVE_DATA=false LOG_REDIS_ENABLED=false LOG_REDIS_CHANNEL_BASE=logs LOG_REDIS_STREAM_MAXLEN=5000 LOG_SERVICE_ID= LOGS_PM2_TAIL_ENABLED=false PM2_LOGS_DIR= LOGS_PM2_TAIL_POLL_INTERVAL_MS=1000 LOGS_ENABLE_PM2_TAIL=true LOGS_PM2_DIRECTORY= LOGS_PM2_PROCESS_WHITELIST= LOGS_PM2_POLL_INTERVAL_MS=500 LOGS_TAIL_MAX_ACTIVE=50 METRICS_ENABLED=true TRACING_ENABLED=false HEALTH_CHECK_INTERVAL=30000 HEALTH_CHECK_TIMEOUT=5000 # === Bundles === BUNDLE_ENABLED=true BUNDLE_CONTEXT_INLINE_ENABLED=true BUNDLE_INLINE_MAX_BYTES=8192 BUNDLE_INLINE_ALLOWED_EXTENSIONS=.md,.markdown,.txt,.json,.yaml,.yml,.toml,.ini,.cfg,.conf BUNDLE_SYMLINK_FALLBACK_ENABLED=true # === Security === CORS_ORIGIN=* RATE_LIMIT_WINDOW=60000 RATE_LIMIT_MAX=100 API_KEY_HEADER=X-API-Key AUTH_DISABLED=false API_JWT_SECRET=local-dev-secret API_JWT_ISSUER=ai-kod-server API_JWT_AUDIENCE=ai-kod-clients API_JWT_DEFAULT_TTL=1h API_JWT_DEFAULT_SUBJECT=local-dev API_JWT_DEFAULT_SCOPE=full-access API_LOCALHOST_BYPASS=true # === Feature flags === FEATURE_CACHE_ENABLED=true FEATURE_DI_ENABLED=false FEATURE_NEW_NAVIGATION=true FEATURE_WORKFLOW_FOLDERS=true FEATURE_OBSERVABILITY=true FEATURE_PARALLEL_EXECUTION=true FEATURE_PM2_SYNC=false # === Resource limits === MAX_HEAP_USAGE_PERCENT=90 MAX_RSS_MB=1024 MAX_LOG_SIZE_MB=10 MAX_LOG_FILES=10 # === Debug === DEBUG=false VERBOSE_LOGGING=false PROFILE_ENABLED=false # === Orchestrator V7 === V7_MAX_RETRY_ATTEMPTS=3 V7_ENABLE_BACKOFF=true V7_BASE_DELAY_SECONDS=1 V7_MAX_DELAY_SECONDS=30 V7_JITTER_PERCENT=0.1 V7_TIMEOUT_MONITOR_INTERVAL_MS=5000 V7_TIMEOUT_MONITOR_BATCH=100 V7_HEALTH_METRICS_INTERVAL_MS=10000 V7_HEALTH_SNAPSHOT_TTL_SECONDS=30 V7_HEALTH_LOCK_TTL_SECONDS=15 V7_DELAYED_PROCESSOR_INTERVAL=1000 V7_LEASE_CONFLICT_MIN_DELAY_MS=200 V7_LEASE_CONFLICT_JITTER_MS=500 V7_EVENT_STREAM_MAXLEN=10000 V7_EVENT_STREAM_KEY=v7:events:stream V7_INVALID_EVENT_STREAM_MAXLEN=10000 V7_INVALID_EVENT_STREAM_KEY=v7:events:invalid V7_EVENT_STREAM_INCLUDE_JOB_PROGRESS=false V7_NAVIGATION_TIMELINE_WINDOW=200 V7_PRIORITY_ENABLED=true V7_PRIORITY_CHECK_INTERVAL=50 V7_WEIGHT_CRITICAL=8 V7_WEIGHT_HIGH=4 V7_WEIGHT_NORMAL=2 V7_WEIGHT_LOW=1 V7_MAX_QUEUE_SIZE_CRITICAL=100 V7_MAX_QUEUE_SIZE_HIGH=1000 V7_MAX_QUEUE_SIZE_NORMAL=5000 V7_MAX_QUEUE_SIZE_LOW=10000 EVENT_EMITTER_METRICS=true # === Library / git === LIBRARY_GIT_DEFAULT_PROVIDER=github LIBRARY_GIT_BINARY=git LIBRARY_GIT_CLONE_TIMEOUT_MS=60000 LIBRARY_GIT_CLONE_DEPTH=1 LIBRARY_GIT_ALLOWED_HOSTS=github.com LIBRARY_GIT_PROTOCOL=https LIBRARY_GIT_SSH_KEY_PATH= LIBRARY_GITHUB_BASE_URL=https://github.com LIBRARY_GITHUB_SSH_DOMAIN=github.com LIBRARY_GITHUB_TOKEN= LIBRARY_GITHUB_DEFAULT_REF=main