- 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
46 lines
1.4 KiB
YAML
46 lines
1.4 KiB
YAML
# Kiwi — cloud managed instance
|
|
# Project: kiwi-cloud (docker compose -f compose.cloud.yml -p kiwi-cloud ...)
|
|
# Web: http://127.0.0.1:8515 → menagerie.circuitforge.tech/kiwi (via Caddy + JWT auth)
|
|
# API: internal only on kiwi-cloud-net (nginx proxies /api/ → api:8512)
|
|
|
|
services:
|
|
api:
|
|
build:
|
|
context: ..
|
|
dockerfile: kiwi/Dockerfile
|
|
restart: unless-stopped
|
|
env_file: .env
|
|
environment:
|
|
CLOUD_MODE: "true"
|
|
CLOUD_DATA_ROOT: /devl/kiwi-cloud-data
|
|
# DIRECTUS_JWT_SECRET, HEIMDALL_URL, HEIMDALL_ADMIN_TOKEN — set in .env
|
|
# DEV ONLY: comma-separated IPs that bypass JWT auth (LAN testing without Caddy).
|
|
# Production deployments must NOT set this. Leave blank or omit entirely.
|
|
CLOUD_AUTH_BYPASS_IPS: ${CLOUD_AUTH_BYPASS_IPS:-}
|
|
volumes:
|
|
- /devl/kiwi-cloud-data:/devl/kiwi-cloud-data
|
|
# LLM config — shared with other CF products; read-only in container
|
|
- ${HOME}/.config/circuitforge:/root/.config/circuitforge:ro
|
|
networks:
|
|
- kiwi-cloud-net
|
|
|
|
web:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/web/Dockerfile
|
|
args:
|
|
VITE_BASE_URL: /kiwi
|
|
VITE_API_BASE: /kiwi
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8515:80"
|
|
volumes:
|
|
- ./docker/web/nginx.cloud.conf:/etc/nginx/conf.d/default.conf:ro
|
|
networks:
|
|
- kiwi-cloud-net
|
|
depends_on:
|
|
- api
|
|
|
|
networks:
|
|
kiwi-cloud-net:
|
|
driver: bridge
|