version: '3.8' services: postgres: image: postgres:16-alpine container_name: synapseflow_postgres ports: - "5432:5432" environment: - POSTGRES_USER=synapseflow - POSTGRES_PASSWORD=synapseflow_dev - POSTGRES_DB=synapseflow volumes: - postgres_data:/var/lib/postgresql/data - ./scripts/init_postgres.sql:/docker-entrypoint-initdb.d/init.sql:ro healthcheck: test: ["CMD-SHELL", "pg_isready -U synapseflow -d synapseflow"] interval: 10s timeout: 5s retries: 5 neo4j: image: neo4j:latest container_name: neo4j ports: - "7474:7474" # HTTP - "7687:7687" # Bolt environment: - NEO4J_AUTH=neo4j/password - NEO4J_PLUGINS=["apoc"] volumes: - neo4j_data:/data - neo4j_logs:/logs healthcheck: test: ["CMD", "cypher-shell", "-u", "neo4j", "-p", "password", "RETURN 1"] interval: 10s timeout: 5s retries: 5 rabbitmq: image: rabbitmq:3-management container_name: rabbitmq ports: - "5672:5672" # AMQP - "15672:15672" # Management UI environment: - RABBITMQ_DEFAULT_USER=guest - RABBITMQ_DEFAULT_PASS=guest volumes: - rabbitmq_data:/var/lib/rabbitmq healthcheck: test: ["CMD", "rabbitmq-diagnostics", "ping"] interval: 10s timeout: 5s retries: 5 falkordb: image: falkordb/falkordb:latest container_name: falkordb ports: - "6379:6379" - "3000:3000" volumes: - falkordb_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 data_architect: build: context: . dockerfile: Dockerfile.agent container_name: data_architect command: python -m interfaces.agent_server --role data_architect --port 8001 environment: - NEO4J_URI=bolt://neo4j:7687 - NEO4J_USERNAME=neo4j - NEO4J_PASSWORD=password - RABBITMQ_URL=amqp://guest:guest@rabbitmq:5672/ - FALKORDB_HOST=falkordb - FALKORDB_PORT=6379 - OPENAI_API_KEY=${OPENAI_API_KEY} - AGENT_CONFIG_PATH=/app/config/agents.distributed.yaml - DEPLOYMENT_MODE=distributed ports: - "8001:8001" depends_on: neo4j: condition: service_healthy rabbitmq: condition: service_healthy falkordb: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8001/health"] interval: 10s timeout: 5s retries: 5 volumes: - ./src:/app/src - ./config:/app/config - ./examples:/app/examples data_engineer: build: context: . dockerfile: Dockerfile.agent container_name: data_engineer command: python -m interfaces.agent_server --role data_engineer --port 8002 environment: - NEO4J_URI=bolt://neo4j:7687 - NEO4J_USERNAME=neo4j - NEO4J_PASSWORD=password - RABBITMQ_URL=amqp://guest:guest@rabbitmq:5672/ - FALKORDB_HOST=falkordb - FALKORDB_PORT=6379 - OPENAI_API_KEY=${OPENAI_API_KEY} - AGENT_CONFIG_PATH=/app/config/agents.distributed.yaml - DEPLOYMENT_MODE=distributed ports: - "8002:8002" depends_on: neo4j: condition: service_healthy rabbitmq: condition: service_healthy falkordb: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8002/health"] interval: 10s timeout: 5s retries: 5 volumes: - ./src:/app/src - ./config:/app/config knowledge_manager: build: context: . dockerfile: Dockerfile.agent container_name: knowledge_manager command: python -m interfaces.agent_server --role knowledge_manager --port 8003 environment: - NEO4J_URI=bolt://neo4j:7687 - NEO4J_USERNAME=neo4j - NEO4J_PASSWORD=password - RABBITMQ_URL=amqp://guest:guest@rabbitmq:5672/ - FALKORDB_HOST=falkordb - FALKORDB_PORT=6379 - OPENAI_API_KEY=${OPENAI_API_KEY} - AGENT_CONFIG_PATH=/app/config/agents.distributed.yaml - DEPLOYMENT_MODE=distributed ports: - "8003:8003" depends_on: neo4j: condition: service_healthy rabbitmq: condition: service_healthy falkordb: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8003/health"] interval: 10s timeout: 5s retries: 5 volumes: - ./src:/app/src - ./config:/app/config medical_assistant: build: context: . dockerfile: Dockerfile.agent container_name: medical_assistant command: python -m interfaces.agent_server --role medical_assistant --port 8004 environment: - NEO4J_URI=bolt://neo4j:7687 - NEO4J_USERNAME=neo4j - NEO4J_PASSWORD=password - RABBITMQ_URL=amqp://guest:guest@rabbitmq:5672/ - FALKORDB_HOST=falkordb - FALKORDB_PORT=6379 - REDIS_HOST=patient_memory_redis - REDIS_PORT=6379 - QDRANT_URL=http://patient_memory_qdrant:6333 - OPENAI_API_KEY=${OPENAI_API_KEY} - AGENT_CONFIG_PATH=/app/config/agents.distributed.yaml - DEPLOYMENT_MODE=distributed ports: - "8004:8004" depends_on: neo4j: condition: service_healthy rabbitmq: condition: service_healthy falkordb: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8004/health"] interval: 10s timeout: 5s retries: 5 volumes: - ./src:/app/src - ./config:/app/config volumes: postgres_data: neo4j_data: neo4j_logs: rabbitmq_data: falkordb_data: