services: # --- Kiro Gateway (OpenAI-compatible LLM proxy) --- gateway: image: ghcr.io/openclaw/openclaw:latest container_name: pm-gateway env_file: - .env environment: - DEBUG_MODE=${DEBUG_MODE:-} ports: - "8000:8000" restart: unless-stopped # --- mcpo (MCP → OpenAPI proxy for tool servers) --- mcpo: image: ghcr.io/open-webui/mcpo:latest container_name: pm-mcpo env_file: - .env environment: # aha-mcp expects AHA_API_TOKEN, .env uses AHA_API_KEY - AHA_API_TOKEN=${AHA_API_KEY:-} command: --host 0.0.0.0 --port 3001 --config /config/mcporter.json ports: - "3001:3001" volumes: - ./config/mcporter.json:/config/mcporter.json:ro restart: unless-stopped # --- Open WebUI (browser UI for non-technical PMs) --- webui: image: ghcr.io/open-webui/open-webui:main container_name: pm-webui ports: - "3000:8080" env_file: - .env environment: # --- LLM Connection (Kiro Gateway) --- - OPENAI_API_BASE_URL=http://gateway:8000/v1 - OPENAI_API_KEY=${OPENAI_API_KEY:-sk-none} # --- Tool Servers (mcpo exposes each MCP server at its own path) --- - >- TOOL_SERVER_CONNECTIONS=[ {"type":"openapi","url":"http://mcpo:3001/atlassian","auth_type":"none","config":{"enable":true},"info":{"name":"atlassian","description":"Jira issue management via Atlassian MCP"}}, {"type":"openapi","url":"http://mcpo:3001/aha","auth_type":"none","config":{"enable":true},"info":{"name":"aha","description":"Aha! roadmap and epic management"}}, {"type":"openapi","url":"http://mcpo:3001/context7","auth_type":"none","config":{"enable":true},"info":{"name":"context7","description":"Library documentation lookup"}} ] # --- Admin auto-setup (skip manual signup on first run) --- - WEBUI_ADMIN_EMAIL=${WEBUI_ADMIN_EMAIL:-admin@reltio.com} - WEBUI_ADMIN_PASSWORD=${WEBUI_ADMIN_PASSWORD:-} # --- Disable persistent config so env vars always win --- - ENABLE_PERSISTENT_CONFIG=false volumes: - webui-data:/app/backend/data - ./openwebui/custom.css:/app/backend/open_webui/static/custom.css - ./openwebui/darkWave2.svg:/app/backend/open_webui/static/darkWave2.svg depends_on: - gateway - mcpo restart: unless-stopped volumes: webui-data: