All checks were successful
ci/woodpecker/push/infra Pipeline was successful
- Renamed all jarvis-* to mosaic-* (generic for any deployment)
- Config files are .json.template with ${VAR} placeholders
- entrypoint.sh renders templates via envsubst at startup
- Ollama is optional: set OLLAMA_BASE_URL to auto-inject provider
- Model is configurable via OPENCLAW_MODEL env var
- No hardcoded IPs, keys, model names, or user preferences
- Updated README with full env var reference
151 lines
3.7 KiB
YAML
151 lines
3.7 KiB
YAML
# 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:
|