version: "3.9" services: brain: build: context: ./services/brain environment: - OLLAMA_HOST=0.0.0.0 - OLLAMA_MODEL=${OLLAMA_MODEL:-llama3.2:1b} ports: - "11434:11434" volumes: - ollama-data:/root/.ollama healthcheck: test: ["CMD", "curl", "-f", "http://localhost:11434/api/tags"] interval: 30s timeout: 10s retries: 5 tts: build: context: ./services/tts environment: - REFERENCE_AUDIO=/app/reference/voice-sample.wav - VOICE_NAME=${VOICE_NAME:-wizard} volumes: - ./persona:/app/reference ports: - "5002:5002" depends_on: brain: condition: service_healthy avatar-cpu: build: context: ./services/avatar-cpu environment: - FPS=${AVATAR_FPS:-24} - REFERENCE_IMAGE=/app/reference/avatar.png volumes: - ./persona:/app/reference ports: - "5003:5003" router: build: context: ./services/router environment: - BRAIN_URL=http://brain:11434 - TTS_URL=http://tts:5002 - AVATAR_URL=http://avatar-cpu:5003 - RTMP_DEST=${RTMP_DEST:-rtmp://127.0.0.1/live/stream} - PERSONA=/app/persona.yaml volumes: - ./persona:/app/persona:ro ports: - "8787:8787" - "5555:5555/udp" # whisper mic listener depends_on: brain: condition: service_healthy tts: condition: service_started avatar-cpu: condition: service_started volumes: ollama-data: