# WebSensor — environment (never commit real values) NODE_ENV=development DATABASE_URL=postgres://localhost:5432/websensor REDIS_URL=redis://127.0.0.1:6379 # Content-addressed blob store (fs driver). S3/MinIO driver can be plugged in later. BLOB_STORE_DIR=./data/blobs PUBLIC_BASE_URL=http://localhost:8260 API_PORT=8260 API_HOST=127.0.0.1 WEB_PORT=8261 WEB_URL=http://127.0.0.1:8261 ENGINE_METRICS_PORT=8262 # Optional acquisition fallbacks FIRECRAWL_API_KEY= SCRAPFLY_API_KEY= # AI interpretation (heuristics run without any key) ANTHROPIC_API_KEY= WS_LLM_MODEL_FAST=claude-haiku-4-5 WS_LLM_MODEL_DEEP=claude-opus-5 WS_LLM_DAILY_CALL_BUDGET=600 WS_LLM_MIN_IMPORTANCE=35 # Engine tuning WS_FETCH_CONCURRENCY=16 WS_USER_AGENT="WebSensorBot/0.2 (+https://www.websensor.io/bot; contact@websensor.io)" WS_SOURCES_FILE=./config/sources.yaml WS_PER_HOST_CONCURRENCY=2 WS_MEANINGFUL_SIGNAL=0.32 # Silent-change bar: only silent-eligible types with importance >= this are flagged (spec §23) WS_SILENT_MIN_IMPORTANCE=45 # Storage lifecycle (spec §58): raw bodies of unchanged snapshots are dropped after N days (canonical + hashes kept); # snapshots referenced by an event are never pruned. WS_RETENTION=0 disables the job. WS_RETENTION=1 WS_RETENTION_RAW_DAYS=21 WS_RETENTION_CHANGED_RAW_DAYS=60 # API — internal operations (/api/v1/admin/*, /ops). Unset = admin API disabled. WS_ADMIN_TOKEN= # Custom URL monitors per anonymous owner (spec §45) WS_MONITORS_PER_OWNER=5 # Source Factory (apps/engine/src/factory-main.ts — separate `websensor-factory` process). Seeds come from # config/coverage/*.yaml (members not yet monitored, or carrying hints) and config/factory/seeds/*.yaml. WS_FACTORY=1 WS_FACTORY_CONCURRENCY=10 # organizations discovered in parallel (continuous worker pool) WS_FACTORY_DEADLINE_MS=120000 # wall-clock deadline per organization WS_FACTORY_BUDGET=90 # HTTP requests per organization WS_FACTORY_MIN_SCORE=0.35 # candidate score needed to enter shadow monitoring WS_FACTORY_SHADOW_MIN_CHECKS=5 # checks before a shadow sensor can be accepted WS_FACTORY_SHADOW_MIN_HOURS=24 WS_FACTORY_SHADOW_MAX_HOURS=120 WS_FACTORY_TICK_SECONDS=20 WS_COVERAGE_DIR=./config/coverage # GITHUB_TOKEN= # optional: lets the factory rank an organization's repositories via the GitHub API