# ════════════════════════════════════════════════
#  ARIA FLUX-Bridge — Text-to-Image (GPU)
#  Eigener Stack, weil FLUX auch auf einer anderen
#  Maschine als f5tts/whisper laufen kann (z.B. 4090
#  separat vom Gaming-PC). Verbindet sich selbst per
#  WebSocket zum RVS und lauscht auf flux_request.
# ════════════════════════════════════════════════
#
#  Voraussetzungen:
#    - NVIDIA-GPU mit >= 12 GB VRAM (3060 reicht mit
#      enable_model_cpu_offload). Bei < 12 GB:
#      FLUX_OFFLOAD=sequential setzen, sonst OOM.
#    - Docker mit NVIDIA Container Toolkit
#    - HuggingFace-Token in .env (FLUX.1-dev ist gated)
#    - .env mit RVS-Verbindungsdaten (gleiche wie xtts!)
#
#  Start: docker compose up -d
# ════════════════════════════════════════════════

services:

  # ─── FLUX Bildgenerierung (GPU) ─────────
  # Empfaengt flux_request via RVS, rendert PNG mit FLUX (12B Params)
  # und broadcastet flux_response mit base64-PNG zurueck. aria-bridge speichert
  # die Datei nach /shared/uploads/ und ARIA referenziert sie via [FILE:]-Marker.
  #
  # Modell-Wahl + HuggingFace-Token werden in ARIA Diagnostic eingestellt
  # ("FLUX Bildgenerierung") und per RVS gepusht — hier nichts noetig.
  flux-bridge:
    build: .
    container_name: aria-flux-bridge
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    environment:
      - RVS_HOST=${RVS_HOST}
      - RVS_PORT=${RVS_PORT:-443}
      - RVS_TLS=${RVS_TLS:-true}
      - RVS_TLS_FALLBACK=${RVS_TLS_FALLBACK:-true}
      - RVS_TOKEN=${RVS_TOKEN}
      # Hardware-Bootstrap (Diagnostic-Settings uebersteuern alles andere
      # zur Laufzeit — diese envs sind nur Edge-Case-Fallbacks).
      - FLUX_DEVICE=${FLUX_DEVICE:-cuda}
      - FLUX_DTYPE=${FLUX_DTYPE:-bfloat16}
      - FLUX_OFFLOAD=${FLUX_OFFLOAD:-model}
      - FLUX_MAX_STEPS=${FLUX_MAX_STEPS:-50}
      - FLUX_MAX_DIM=${FLUX_MAX_DIM:-1536}
    volumes:
      - ./hf-cache:/root/.cache/huggingface      # Bind-Mount. FLUX.1-dev ~24 GB on disk!
                                                 # Wenn flux auf der gleichen Maschine
                                                 # wie xtts laeuft: ../xtts/hf-cache
                                                 # symlinken um den Cache zu teilen.
    restart: unless-stopped
