edict Docker & Self-Hosted Deployment

GitHub

๏ธ ไธ‰็œๅ…ญ้ƒจๅˆถ ยท OpenClaw Multi-Agent Orchestration System โ€” 9 specialized AI agents with real-time dashboard, model config, and full audit trails

RAW Compose
1. Pull Image (DOCKERHUB) docker pull library/postgres
2. Docker Run (1-Click Launch) docker run -d --name edict -p 5432:5432 --restart always postgres:16-alpine
3. Podman Run podman run -d --name edict -p 5432:5432 --restart always postgres:16-alpine
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/library/postgres:16-alpine
5. ORAS Pull (OCI Artifact) oras pull postgres:16-alpine
6. Compose Deployment docker compose up -d
edict/docker-compose.yml
Download .yml
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
# Edict ไธ‰็œๅ…ญ้ƒจ โ€” ไบ‹ไปถ้ฉฑๅŠจๆžถๆž„ Docker Compose
# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

services:
  # โ”€โ”€ ๅŸบ็ก€่ฎพๆ–ฝ โ”€โ”€

  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: edict
      POSTGRES_USER: edict
      POSTGRES_PASSWORD: edict_dev_2024
    ports:
      - "5432:5432"
    volumes:
      - pg_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U edict"]
      interval: 5s
      timeout: 3s
      retries: 5
    restart: unless-stopped

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
    command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 3s
      retries: 5
    restart: unless-stopped

  # โ”€โ”€ ๅŽ็ซฏๆœๅŠก โ”€โ”€

  backend:
    build:
      context: ..
      dockerfile: edict/Dockerfile
    ports:
      - "8000:8000"
    environment:
      DATABASE_URL: postgresql+asyncpg://edict:edict_dev_2024@postgres:5432/edict
      REDIS_URL: redis://redis:6379/0
      PORT: 8000
      DEBUG: "true"
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
    volumes:
      - ../agents:/app/agents:ro
      - ../data:/app/data
    command: >
      sh -c "
        python -m alembic upgrade head &&
        uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
      "
    restart: unless-stopped

  # โ”€โ”€ Worker ่ฟ›็จ‹ โ”€โ”€

  orchestrator:
    build:
      context: ..
      dockerfile: edict/Dockerfile
    environment:
      DATABASE_URL: postgresql+asyncpg://edict:edict_dev_2024@postgres:5432/edict
      REDIS_URL: redis://redis:6379/0
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
    command: python -m app.workers.orchestrator_worker
    restart: unless-stopped

  dispatcher:
    build:
      context: ..
      dockerfile: edict/Dockerfile
    environment:
      DATABASE_URL: postgresql+asyncpg://edict:edict_dev_2024@postgres:5432/edict
      REDIS_URL: redis://redis:6379/0
      OPENCLAW_PROJECT_DIR: /app
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
    volumes:
      - ../agents:/app/agents:ro
      - ../scripts:/app/scripts
      - ../data:/app/data
    command: python -m app.workers.dispatch_worker
    restart: unless-stopped

  # โ”€โ”€ ๅ‰็ซฏ โ”€โ”€

  frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    environment:
      VITE_API_URL: http://localhost:8000
      VITE_WS_URL: ws://localhost:8000/ws
    depends_on:
      - backend
    restart: unless-stopped

volumes:
  pg_data:
  redis_data: