llm-hub/docker-compose.yml

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