# Mosaic Agent Fleet — OpenClaw Docker Swarm Stack # Deploy: docker stack deploy -c docker/openclaw-compose.yml mosaic-agents # All config via env vars — see openclaw-instances/*.env services: mosaic-main: image: alpine/openclaw:latest command: ["/config/entrypoint.sh"] env_file: - ./openclaw-instances/mosaic-main.env environment: OPENCLAW_CONFIG_PATH: /tmp/openclaw.json volumes: - mosaic-main-config:/config:ro - mosaic-main-state:/home/node/.openclaw networks: - mosaic-stack_internal healthcheck: test: ["CMD", "openclaw", "gateway", "health"] interval: 30s timeout: 10s retries: 3 start_period: 20s deploy: replicas: 1 restart_policy: condition: on-failure delay: 5s max_attempts: 3 resources: limits: memory: 2G reservations: memory: 512M labels: - com.mosaic.agent=mosaic-main - com.mosaic.role=orchestrator mosaic-projects: image: alpine/openclaw:latest command: ["/config/entrypoint.sh"] env_file: - ./openclaw-instances/mosaic-projects.env environment: OPENCLAW_CONFIG_PATH: /tmp/openclaw.json volumes: - mosaic-projects-config:/config:ro - mosaic-projects-state:/home/node/.openclaw networks: - mosaic-stack_internal healthcheck: test: ["CMD", "openclaw", "gateway", "health"] interval: 30s timeout: 10s retries: 3 start_period: 20s deploy: replicas: 1 restart_policy: condition: on-failure delay: 10s max_attempts: 3 resources: limits: memory: 4G reservations: memory: 1G labels: - com.mosaic.agent=mosaic-projects - com.mosaic.role=developer mosaic-research: image: alpine/openclaw:latest command: ["/config/entrypoint.sh"] env_file: - ./openclaw-instances/mosaic-research.env environment: OPENCLAW_CONFIG_PATH: /tmp/openclaw.json volumes: - mosaic-research-config:/config:ro - mosaic-research-state:/home/node/.openclaw networks: - mosaic-stack_internal healthcheck: test: ["CMD", "openclaw", "gateway", "health"] interval: 30s timeout: 10s retries: 3 start_period: 20s deploy: replicas: 1 restart_policy: condition: on-failure delay: 10s max_attempts: 3 resources: limits: memory: 1G reservations: memory: 256M labels: - com.mosaic.agent=mosaic-research - com.mosaic.role=research mosaic-operations: image: alpine/openclaw:latest command: ["/config/entrypoint.sh"] env_file: - ./openclaw-instances/mosaic-operations.env environment: OPENCLAW_CONFIG_PATH: /tmp/openclaw.json volumes: - mosaic-operations-config:/config:ro - mosaic-operations-state:/home/node/.openclaw networks: - mosaic-stack_internal healthcheck: test: ["CMD", "openclaw", "gateway", "health"] interval: 30s timeout: 10s retries: 3 start_period: 20s deploy: replicas: 1 restart_policy: condition: on-failure delay: 10s max_attempts: 3 resources: limits: memory: 1G reservations: memory: 256M labels: - com.mosaic.agent=mosaic-operations - com.mosaic.role=operations networks: mosaic-stack_internal: external: true volumes: mosaic-main-config: mosaic-main-state: mosaic-projects-config: mosaic-projects-state: mosaic-research-config: mosaic-research-state: mosaic-operations-config: mosaic-operations-state: