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 local dependency: whisper.cpp server for audio transcription. # Start with: docker compose --profile voice up -d whisper-server whisper-server: image: ghcr.io/ggml-org/whisper.cpp:main container_name: whisper-server restart: unless-stopped profiles: ["voice"] ports: - "18801:8080" volumes: - whisper-models:/app/models 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/ >/dev/null 2>&1 || exit 1"] interval: 30s timeout: 5s start_period: 15s retries: 3 volumes: flynn-data: whisper-models: