litellm client appends /v1/chat/completions itself. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
129 lines
3.8 KiB
YAML
129 lines
3.8 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: public.ecr.aws/skyvern/skyvern:latest
|
|
restart: unless-stopped
|
|
environment:
|
|
DATABASE_STRING: postgresql+psycopg://skyvern:${SKYVERN_DB_PASSWORD:-skyvern}@skyvern-db:5432/skyvern
|
|
ENABLE_OPENAI_COMPATIBLE: "true"
|
|
OPENAI_COMPATIBLE_API_KEY: ${LITELLM_API_KEY}
|
|
OPENAI_COMPATIBLE_API_BASE: ${LITELLM_BASE_URL}
|
|
OPENAI_COMPATIBLE_MODEL_NAME: gpt-4o
|
|
OPENAI_COMPATIBLE_SUPPORTS_VISION: "true"
|
|
LLM_KEY: OPENAI_COMPATIBLE
|
|
SECONDARY_LLM_KEY: OPENAI_COMPATIBLE
|
|
BROWSER_TYPE: chromium-headful
|
|
ENABLE_CODE_BLOCK: "true"
|
|
ENV: local
|
|
PORT: "8000"
|
|
ALLOWED_ORIGINS: '["http://localhost:8000"]'
|
|
volumes:
|
|
- skyvern-artifacts:/data/artifacts
|
|
- skyvern-videos:/data/videos
|
|
depends_on:
|
|
skyvern-db:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/api/v1/heartbeat')"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
|
|
skyvern-db:
|
|
image: postgres:14-alpine
|
|
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:
|
|
skyvern-artifacts:
|
|
skyvern-videos:
|