152 lines
3.5 KiB
YAML
152 lines
3.5 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
# Core Infrastructure
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: agent-redis
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./data/redis:/data
|
|
command: redis-server --appendonly yes --maxmemory 512mb --maxmemory-policy allkeys-lru
|
|
networks:
|
|
- agent-network
|
|
|
|
chromadb:
|
|
image: chromadb/chroma:latest
|
|
container_name: agent-memory-vector
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8000:8000"
|
|
volumes:
|
|
- ./data/chroma:/chroma/chroma
|
|
environment:
|
|
- IS_PERSISTENT=TRUE
|
|
- PERSIST_DIRECTORY=/chroma/chroma
|
|
- ANONYMIZED_TELEMETRY=FALSE
|
|
networks:
|
|
- agent-network
|
|
|
|
# LLM Gateway
|
|
litellm:
|
|
image: ghcr.io/berriai/litellm:main-latest
|
|
container_name: agent-gateway
|
|
restart: unless-stopped
|
|
ports:
|
|
- "4000:4000"
|
|
volumes:
|
|
- ./config/litellm_config.yaml:/app/config.yaml
|
|
- ./logs:/app/logs
|
|
environment:
|
|
- DATABASE_URL=sqlite:///app/db.sqlite3
|
|
- LITELLM_MASTER_KEY=${MASTER_KEY:-sk-agent}
|
|
- REDIS_HOST=redis
|
|
- REDIS_PORT=6379
|
|
command: --config /app/config.yaml --port 4000
|
|
networks:
|
|
- agent-network
|
|
|
|
# Agent Core with Reasoning Engines
|
|
agent-core:
|
|
build:
|
|
context: ./services/agent-core
|
|
dockerfile: Dockerfile
|
|
container_name: agent-core
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8080:8080"
|
|
volumes:
|
|
- ./workspace:/workspace
|
|
- ./config/agent:/app/config
|
|
- ./data/agent:/app/data
|
|
environment:
|
|
- LLM_API_BASE=http://litellm:4000/v1
|
|
- LLM_API_KEY=${MASTER_KEY:-sk-agent}
|
|
- REDIS_URL=redis://redis:6379/0
|
|
- CHROMA_URL=http://chromadb:8000
|
|
- DEFAULT_REASONING_MODE=${DEFAULT_REASONING:-auto}
|
|
depends_on:
|
|
- litellm
|
|
- redis
|
|
- chromadb
|
|
networks:
|
|
- agent-network
|
|
|
|
# MCP Tool Gateway
|
|
mcpo:
|
|
build:
|
|
context: ./services/mcpo
|
|
dockerfile: Dockerfile
|
|
container_name: agent-mcp-gateway
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8001:8000"
|
|
volumes:
|
|
- ./workspace:/workspace:ro
|
|
- ./config/mcp:/app/config
|
|
networks:
|
|
- agent-network
|
|
profiles:
|
|
- mcp
|
|
|
|
# VS Code Server with AI Assistant
|
|
code-server:
|
|
image: lscr.io/linuxserver/code-server:latest
|
|
container_name: agent-ide
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8443:8443"
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Etc/UTC
|
|
- PASSWORD=${IDE_PASSWORD:-code}
|
|
- SUDO_PASSWORD=${IDE_SUDO_PASSWORD:-sudo}
|
|
- DEFAULT_WORKSPACE=/workspace
|
|
volumes:
|
|
- ./workspace:/workspace
|
|
- ./data/code-server:/config
|
|
- ./config/continue:/config/.continue:ro
|
|
networks:
|
|
- agent-network
|
|
profiles:
|
|
- ide
|
|
|
|
# Web UI
|
|
open-webui:
|
|
image: ghcr.io/open-webui/open-webui:main
|
|
container_name: agent-ui
|
|
restart: unless-stopped
|
|
ports:
|
|
- "3000:8080"
|
|
volumes:
|
|
- ./data/open-webui:/app/backend/data
|
|
environment:
|
|
- OPENAI_API_BASE_URL=http://agent-core:8080/v1
|
|
- OPENAI_API_KEY=${MASTER_KEY:-sk-agent}
|
|
- ENABLE_SIGNUP=false
|
|
- DEFAULT_MODELS=agent/orchestrator
|
|
depends_on:
|
|
- agent-core
|
|
networks:
|
|
- agent-network
|
|
profiles:
|
|
- ui
|
|
|
|
# Auto-updater
|
|
watchtower:
|
|
image: containrrr/watchtower
|
|
container_name: agent-watchtower
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
environment:
|
|
- WATCHTOWER_POLL_INTERVAL=86400
|
|
- WATCHTOWER_CLEANUP=true
|
|
networks:
|
|
- agent-network
|
|
|
|
networks:
|
|
agent-network:
|
|
driver: bridge
|