Files
matrix-ai-agent/docker-compose.yml
Christian Gick a22a922b43 Add Skyvern integration and browser executor enhancements
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 08:19:32 +02:00

120 lines
3.4 KiB
YAML

services:
agent:
build:
context: .
dockerfile: Dockerfile
command: python agent.py start
env_file: .env
restart: unless-stopped
network_mode: host
bot:
build:
context: .
dockerfile: Dockerfile
command: python bot.py
env_file: .env
restart: unless-stopped
environment:
- LITELLM_BASE_URL
- LITELLM_API_KEY
- DEFAULT_MODEL
- BASE_MODEL=${BASE_MODEL:-claude-haiku}
- ESCALATION_MODEL=${ESCALATION_MODEL:-claude-sonnet}
- MEMORY_SERVICE_URL=http://memory-service:8090
- MEMORY_SERVICE_TOKEN
- PORTAL_URL
- BOT_API_KEY
- SKYVERN_BASE_URL=http://skyvern:8000
- SKYVERN_API_KEY
volumes:
- bot-data:/data
depends_on:
memory-service:
condition: service_healthy
memory-db:
image: pgvector/pgvector:pg17
restart: unless-stopped
environment:
POSTGRES_USER: memory
POSTGRES_PASSWORD: ${MEMORY_DB_PASSWORD:-memory}
POSTGRES_DB: memories
volumes:
- memory-pgdata:/var/lib/postgresql/data
- ./memory-db-ssl/server.crt:/var/lib/postgresql/server.crt:ro
- ./memory-db-ssl/server.key:/var/lib/postgresql/server.key:ro
command: >
postgres
-c ssl=on
-c ssl_cert_file=/var/lib/postgresql/server.crt
-c ssl_key_file=/var/lib/postgresql/server.key
healthcheck:
test: ["CMD-SHELL", "pg_isready -U memory -d memories"]
interval: 5s
timeout: 3s
retries: 5
memory-service:
build: ./memory-service
restart: unless-stopped
environment:
DATABASE_URL: postgresql://memory_app:${MEMORY_APP_PASSWORD}@memory-db:5432/memories?sslmode=require
MEMORY_ENCRYPTION_KEY: ${MEMORY_ENCRYPTION_KEY}
MEMORY_DB_OWNER_PASSWORD: ${MEMORY_DB_PASSWORD:-memory}
LITELLM_BASE_URL: ${LITELLM_BASE_URL}
LITELLM_API_KEY: ${LITELLM_MASTER_KEY}
EMBED_MODEL: ${EMBED_MODEL:-text-embedding-3-small}
MEMORY_SERVICE_TOKEN: ${MEMORY_SERVICE_TOKEN:-}
depends_on:
memory-db:
condition: service_healthy
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8090/health')"]
interval: 10s
timeout: 5s
retries: 3
skyvern:
image: ghcr.io/skyvern-ai/skyvern:latest
restart: unless-stopped
environment:
DATABASE_STRING: postgresql://skyvern:${SKYVERN_DB_PASSWORD:-skyvern}@skyvern-db:5432/skyvern
OPENAI_API_KEY: placeholder
OPENAI_API_BASE: ${LITELLM_BASE_URL}
LLM_KEY: OPENAI_GPT4O
SECONDARY_LLM_KEY: OPENAI_GPT4O_MINI
BROWSER_TYPE: chromium-headless
ENV: local
PORT: "8000"
ALLOWED_ORIGINS: '["http://localhost:8000"]'
depends_on:
skyvern-db:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:8000/api/v1/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
skyvern-db:
image: postgres:17
restart: unless-stopped
environment:
POSTGRES_USER: skyvern
POSTGRES_PASSWORD: ${SKYVERN_DB_PASSWORD:-skyvern}
POSTGRES_DB: skyvern
volumes:
- skyvern-pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U skyvern -d skyvern"]
interval: 5s
timeout: 3s
retries: 5
volumes:
bot-data:
memory-pgdata:
skyvern-pgdata: