- cloud_session.py: CLOUD_AUTH_BYPASS_IPS with CIDR support; X-Real-IP for Docker bridge NAT-aware client IP resolution; local-dev DB path under CLOUD_DATA_ROOT for bypass sessions - compose.cloud.yml: thread CLOUD_AUTH_BYPASS_IPS from shell env; document Docker bridge CIDR requirement in .env.example - nginx.cloud.conf + nginx.conf: client_max_body_size 20m for barcode uploads - barcode_scanner.py: EXIF orientation correction (PIL ImageOps.exif_transpose) before cv2 decode; rotation coverage extended to [90, 180, 270, 45, 135] to catch sideways barcodes the 270° case was missing - llm_recipe.py: CF-core VRAM lease acquire/release wrapping LLMRouter calls - tasks/runner.py + config.py: COORDINATOR_URL + recipe_llm VRAM budget (4GB) - recipes.py: per-request Store creation inside asyncio.to_thread worker to avoid SQLite check_same_thread violations - download_datasets.py: HF_PARQUET_FILES strategy for repos without dataset builders (lishuyang/recipepairs direct parquet download) - derive_substitutions.py: use recipepairs_recipes.parquet for ingredient lookup; numpy array detection; JSON category parsing - test_build_flavorgraph_index.py: rewritten for CSV-based index format - pyproject.toml: add Pillow>=10.0 for EXIF rotation support
53 lines
1.7 KiB
Text
53 lines
1.7 KiB
Text
# Kiwi — environment variables
|
|
# Copy to .env and fill in values
|
|
|
|
# API
|
|
API_PREFIX=/api/v1
|
|
CORS_ORIGINS=http://localhost:5173,http://localhost:8509
|
|
|
|
# Storage
|
|
DATA_DIR=./data
|
|
|
|
# Database (defaults to DATA_DIR/kiwi.db)
|
|
# DB_PATH=./data/kiwi.db
|
|
|
|
# Pipeline data directory for downloaded parquets (used by download_datasets.py)
|
|
# Override to store large datasets on a separate drive or NAS
|
|
# KIWI_PIPELINE_DATA_DIR=./data/pipeline
|
|
|
|
# CF-core resource coordinator (VRAM lease management)
|
|
# Set to the coordinator URL when running alongside cf-core orchestration
|
|
# COORDINATOR_URL=http://localhost:7700
|
|
|
|
# Processing
|
|
USE_GPU=true
|
|
GPU_MEMORY_LIMIT=6144
|
|
MAX_CONCURRENT_JOBS=4
|
|
MIN_QUALITY_SCORE=50.0
|
|
|
|
# Feature flags
|
|
ENABLE_OCR=false
|
|
|
|
# Runtime
|
|
DEBUG=false
|
|
CLOUD_MODE=false
|
|
DEMO_MODE=false
|
|
|
|
# Cloud mode (set in compose.cloud.yml; also set here for reference)
|
|
# CLOUD_DATA_ROOT=/devl/kiwi-cloud-data
|
|
# KIWI_DB=data/kiwi.db # local-mode DB path override
|
|
# DEV ONLY: bypass JWT auth for these IPs/CIDRs (LAN testing without Caddy in the path).
|
|
# NEVER set in production.
|
|
# IMPORTANT: Docker port mapping NATs source IPs to the bridge gateway. When hitting
|
|
# localhost:8515 (host → Docker → nginx → API), nginx sees 192.168.80.1, not 127.0.0.1.
|
|
# Include the Docker bridge CIDR to allow localhost and LAN access through nginx.
|
|
# Run: docker network inspect kiwi-cloud_kiwi-cloud-net | grep Subnet
|
|
# Example: CLOUD_AUTH_BYPASS_IPS=10.1.10.0/24,127.0.0.1,::1,192.168.80.0/20
|
|
# CLOUD_AUTH_BYPASS_IPS=
|
|
|
|
# Heimdall license server (required for cloud tier resolution)
|
|
# HEIMDALL_URL=https://license.circuitforge.tech
|
|
# HEIMDALL_ADMIN_TOKEN=
|
|
|
|
# Directus JWT (must match cf-directus SECRET env var)
|
|
# DIRECTUS_JWT_SECRET=
|