# Copy to .env — loaded by docker compose (env_file). # Host ports WHALE2API_HOST_PORT=5103 POOL_UI_HOST_PORT=5010 # Pool WebUI login (required) POOL_UI_ADMIN_TOKEN=change-me-pool-ui # SQLite database file (whale2api + poolui must use the same path) # WHALE2API_DATABASE_PATH=docker-data/whale2api/whale2api.db # Optional: cap accounts per gateway key (0 = unlimited) # WHALE2API_POOL_MAX_ACCOUNTS_PER_KEY=0 # Docker images (defaults point at the GHCR images published by .github/workflows/docker.yml). # Plain `docker compose up -d` pulls them when missing and falls back to a local # build if the registry is unreachable; `docker compose up -d --build` always builds. # Pin both images to a release tag: # IMAGE_TAG=1.2.3 # Full overrides for custom registries: # WHALE2API_IMAGE=ghcr.io/tangsong404/whale2api:latest # DEVICE_HARVEST_IMAGE=ghcr.io/tangsong404/whale2api-device-harvest:latest # IMAGE_PULL_POLICY=missing # Device-harvest sidecar (on-demand Shumei device tokens). # docker compose wires DEVICE_HARVEST_URL automatically; only these are optional: # DEVICE_HARVEST_TOKEN= # shared secret (whale2api X-Harvest-Token / sidecar HARVEST_TOKEN) # HARVEST_CONCURRENCY=2 # sidecar parallel browser contexts # Non-Docker local runs: set DEVICE_HARVEST_URL=http://127.0.0.1:8090 yourself. # Optional: append thinking-strength prompt into system (when request thinking=true). # Default is off when unset; set to 1 to enable. WHALE2API_THINKING_INJECTION_ENABLED=0 # WHALE2API_THINKING_INJECTION_PROMPT= # Optional context-limit overrides. # Defaults: 896K user-facing / 2.85M internal gate (local estimate measured at # the ~890K-token stable upstream boundary; the reverse proxy silently drops # the tail beyond it). Both must be positive and logical >= user-facing, # otherwise defaults are used. # WHALE2API_USER_FACING_CONTEXT_LIMIT_TOKENS=1048576 # WHALE2API_LOGICAL_CONTEXT_LIMIT_TOKENS=4194304