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 depends_on: whisper-server: condition: service_healthy networks: - flynn-net # Optional: Whisper server for audio transcription 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 volumes: - ./whisper-models:/app/models:ro healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/"] interval: 30s timeout: 5s start_period: 15s retries: 3 networks: - flynn-net volumes: flynn-data: networks: flynn-net: