# GeoLens configuration # Copy to .env and adjust. Every setting is prefixed GEOLENS_. # # These values target running GeoLens directly on your machine. Docker Compose # does NOT need this file: it fixes its own hostnames and volume paths, and only # reads POSTGRES_* and the crawler knobs below from here. So one .env works for # both `docker compose up` and `uv run pytest`. # --------------------------------------------------------------------------- # Application # --------------------------------------------------------------------------- GEOLENS_ENVIRONMENT=development GEOLENS_LOG_LEVEL=INFO GEOLENS_LOG_FORMAT=json # --------------------------------------------------------------------------- # Infrastructure (host-local values; Compose overrides these internally) # --------------------------------------------------------------------------- GEOLENS_DATABASE_URL=postgresql+asyncpg://geolens:geolens@localhost:5432/geolens GEOLENS_REDIS_URL=redis://localhost:6379/0 # Raw evidence object storage. "filesystem" is the default backend. A relative # path is resolved against the working directory. GEOLENS_STORAGE_BACKEND=filesystem GEOLENS_STORAGE_ROOT=./var/objects # Credentials for the bundled postgres container, and for the URL above. # Change these in one place and both stay in agreement. POSTGRES_USER=geolens POSTGRES_PASSWORD=geolens POSTGRES_DB=geolens # --------------------------------------------------------------------------- # Crawler defaults (handoff section 21 conservative defaults) # --------------------------------------------------------------------------- GEOLENS_CRAWLER_USER_AGENT=GeoLensBot/0.1 (+https://github.com/geolens/geolens) GEOLENS_CRAWLER_RESPECT_ROBOTS=true GEOLENS_CRAWLER_REQUESTS_PER_SECOND=1.0 GEOLENS_CRAWLER_CONCURRENCY_PER_HOST=2 GEOLENS_CRAWLER_MAX_URLS=500 GEOLENS_CRAWLER_MAX_DEPTH=5 GEOLENS_CRAWLER_MAX_RESPONSE_BYTES=10485760 GEOLENS_CRAWLER_TIMEOUT_SECONDS=20 GEOLENS_CRAWLER_MAX_REDIRECTS=5 GEOLENS_CRAWLER_MAX_RETRIES=2 # External hosts are blocked by default: only project allowed_hosts are fetched. GEOLENS_CRAWLER_ALLOW_EXTERNAL_HOSTS=false # SSRF guard. Keep false for real crawls. The bundled fixture site and the # integration tests need it enabled because they run on a private address. # docker-compose.yml enables it (and port 8081) so the quick start works. GEOLENS_CRAWLER_ALLOW_PRIVATE_NETWORKS=false # Ports the crawler may connect to. JSON list. 80 and 443 only, by default. GEOLENS_CRAWLER_ALLOWED_PORTS=[80,443] # --------------------------------------------------------------------------- # AI (not implemented in Milestone 0/1 -- present so the flag stays explicit) # --------------------------------------------------------------------------- GEOLENS_AI_ENABLED=false GEOLENS_CLOUD_AI_ENABLED=false # --------------------------------------------------------------------------- # Telemetry (optional; only active when an endpoint is configured) # --------------------------------------------------------------------------- # GEOLENS_OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 GEOLENS_OTEL_SERVICE_NAME=geolens