services: backend: build: . environment: HF_TOKEN: ${HF_TOKEN:-} HF_HUB_DISABLE_XET: "1" # Seconds of SAM3 idle before its VRAM is released (REQ-192); 1200 = 20 min, 0 = never. SAM3_IDLE_UNLOAD_S: ${SAM3_IDLE_UNLOAD_S:-} APP_DATA_DIR: /data VIDEO_ARCHIVE: /videos CORS_ORIGINS: ${CORS_ORIGINS:-http://localhost:5173,http://localhost:9000,http://localhost:9010} VIDEO_ARCHIVE_HOST: ${VIDEO_ARCHIVE_HOST:-./data/archive} # Host working directory — resolves relative VIDEO_ARCHIVE_HOST for the # copy-path buttons (REQ-179). Must be set by running compose from the # repo root; ./start.sh does that cd for you. ARCHIVE_HOST_PWD: ${PWD} # Auto under WSL (shell exports it); empty on native Linux, which hides # the Windows copy-path button — expected. WSL_DISTRO_NAME: ${WSL_DISTRO_NAME:-} volumes: - ./data:/data - ${VIDEO_ARCHIVE_HOST:-./data/archive}:/videos - hf-cache:/root/.cache/huggingface ports: - "${API_PORT:-9010}:8000" shm_size: '8gb' ipc: host restart: unless-stopped frontend: build: ./frontend ports: - "${WEB_PORT:-9000}:80" depends_on: - backend restart: unless-stopped volumes: hf-cache: