services:
  flynn:
    build: .
    container_name: flynn
    restart: unless-stopped
    ports:
      - "18800:18800"
    volumes:
      # Persistent data (sessions DB, memory store)
      - flynn-data:/data
      # Mount your config file
      - ./config/default.yaml:/config/config.yaml:ro
    environment:
      # Required: at least one model provider API key
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
      # Optional: additional provider keys
      - OPENAI_API_KEY=${OPENAI_API_KEY:-}
      - OPENROUTER_API_KEY=${OPENROUTER_API_KEY:-}
      - GOOGLE_API_KEY=${GOOGLE_API_KEY:-}
      # Optional: Telegram integration
      - FLYNN_TELEGRAM_TOKEN=${FLYNN_TELEGRAM_TOKEN:-}
      # Optional: Discord integration
      - DISCORD_BOT_TOKEN=${DISCORD_BOT_TOKEN:-}
      # Optional: Gateway auth token
      - FLYNN_SERVER_TOKEN=${FLYNN_SERVER_TOKEN:-}
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:18800/"]
      interval: 30s
      timeout: 5s
      start_period: 15s
      retries: 3

  # Optional: Whisper server for audio transcription
  # Uncomment and adjust as needed for voice message support
  # whisper-server:
  #   image: ghcr.io/ggml-org/whisper.cpp:main
  #   container_name: whisper-server
  #   restart: unless-stopped
  #   ports:
  #     - "18801:8080"
  #   command: whisper-server
  #     --model /app/models/ggml-base.en.bin
  #     --host 0.0.0.0
  #     --port 8080
  #     --convert
  #     --language en
  #     --inference-path /v1/audio/transcriptions
  #   healthcheck:
  #     test: ["CMD-SHELL", "curl", "-f", "http://localhost:8080/"]
  #     interval: 30s
  #     timeout: 5s
  #     start_period: 15s
  #     retries: 3

volumes:
  flynn-data:
