# ---- API ---- PORT=8787 # When DATABASE_URL is set the API runs in async (queue) mode; otherwise it runs # clones inline in-memory (handy for a quick local single-page demo). # CLONE_TTL_MS=1800000 # in-memory mode: how long results are retained # API_KEYS= # comma-separated keys that can call /v1/clones and /mcp # RATE_LIMIT_PER_MINUTE=60 # service-wide cap for authenticated clone/MCP calls # SIGNUP_ENABLED=false # DB mode only: expose public API-key signup routes # SIGNUP_RATE_LIMIT_PER_HOUR=3 # DEFAULT_SIGNUP_KEY_RATE_LIMIT=30 # stored on minted keys; current limiter is service-wide # SIGNUP_DIRECT_ENABLED=true # set false when using verified-email signup only # RESEND_API_KEY= # enables POST /v1/signup/request + /v1/signup/verify # SIGNUP_FROM_EMAIL=Ditto # SIGNUP_VERIFY_URL=https://ditto.site/api-key # SIGNUP_TOKEN_TTL_MINUTES=30 # SIGNUP_CORS_ORIGINS=https://ditto.site,https://www.ditto.site # ---- Database + queue (Postgres; pg-boss uses the same DB) ---- DATABASE_URL=postgresql://postgres:postgres@localhost:5432/ditto_site # ---- Worker ---- ARTIFACTS_DIR=./local-data/artifacts # Cache time-to-stale: how long a cached clone is served before re-capture. # Duration units: ms/s/m/h/d. "0" disables caching. CACHE_STALE_AFTER=24h # VERIFY_TIER=stage2 # perceptual-gate tier when options.verify is set # HARNESS_DIR= # per-worker Next build harness for verify (M5) # ---- Blob storage (S3 / R2 / MinIO) — used from M4 ---- # S3_ENDPOINT=http://localhost:9000 # MinIO locally; omit for AWS S3 # S3_REGION=auto # S3_BUCKET=ditto-site-artifacts # S3_ACCESS_KEY_ID=minioadmin # S3_SECRET_ACCESS_KEY=minioadmin # S3_FORCE_PATH_STYLE=true # required for MinIO # S3_PUBLIC_URL= # optional CDN/base url for objects