- tools/calendar_tool.py: CalDAV search/today/create_draft/create_confirmed - tools/email_tool.py: IMAP search/read (전송 비활성화) - tools/document_tool.py: Document Server search/read (read-only) - tools/registry.py: 도구 디스패처 + WRITE_OPS 안전장치 + 에러 표준화 - 분류기: "tools" 액션 추가, 도구 목록/파라미터 스키마/규칙 명시 - Worker: tools 분기 + tool timeout 10초 + payload 2000자 제한 - conversation: pending_draft (TTL 5분) + create 확인 플로우 - 현재 시간을 분류기에 전달 (날짜 질문 대응) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
94 lines
2.6 KiB
YAML
94 lines
2.6 KiB
YAML
services:
|
|
caddy:
|
|
image: caddy:2-alpine
|
|
container_name: gpu-caddy
|
|
restart: unless-stopped
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
|
|
- caddy_data:/data
|
|
depends_on:
|
|
- hub-api
|
|
- hub-web
|
|
- nanoclaude
|
|
networks:
|
|
- gateway-net
|
|
|
|
hub-web:
|
|
build: ./hub-web
|
|
container_name: gpu-hub-web
|
|
restart: unless-stopped
|
|
networks:
|
|
- gateway-net
|
|
|
|
hub-api:
|
|
build: ./hub-api
|
|
container_name: gpu-hub-api
|
|
restart: unless-stopped
|
|
environment:
|
|
- OWNER_PASSWORD=${OWNER_PASSWORD}
|
|
- GUEST_PASSWORD=${GUEST_PASSWORD}
|
|
- JWT_SECRET=${JWT_SECRET}
|
|
- BACKENDS_CONFIG=/app/config/backends.json
|
|
- CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:5173}
|
|
- DB_PATH=/app/data/gateway.db
|
|
volumes:
|
|
- hub_data:/app/data
|
|
- ./backends.json:/app/config/backends.json:ro
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 3
|
|
networks:
|
|
- gateway-net
|
|
|
|
nanoclaude:
|
|
build: ./nanoclaude
|
|
container_name: gpu-nanoclaude
|
|
restart: unless-stopped
|
|
environment:
|
|
- EXAONE_BASE_URL=http://host.docker.internal:11434
|
|
- EXAONE_MODEL=${EXAONE_MODEL:-exaone3.5:7.8b-instruct-q8_0}
|
|
- REASONING_BASE_URL=${REASONING_BASE_URL:-http://192.168.1.122:8800}
|
|
- REASONING_MODEL=${REASONING_MODEL:-mlx-community/gemma-4-26b-a4b-it-8bit}
|
|
- PIPELINE_ENABLED=${PIPELINE_ENABLED:-true}
|
|
- MAX_CONCURRENT_JOBS=${MAX_CONCURRENT_JOBS:-3}
|
|
- DB_PATH=/app/data/nanoclaude.db
|
|
- CALDAV_URL=${CALDAV_URL:-}
|
|
- CALDAV_USER=${CALDAV_USER:-}
|
|
- CALDAV_PASS=${CALDAV_PASS:-}
|
|
- MAILPLUS_HOST=${MAILPLUS_HOST:-}
|
|
- MAILPLUS_PORT=${MAILPLUS_PORT:-993}
|
|
- MAILPLUS_USER=${MAILPLUS_USER:-}
|
|
- MAILPLUS_PASS=${MAILPLUS_PASS:-}
|
|
- DOCUMENT_API_URL=${DOCUMENT_API_URL:-}
|
|
- DOCUMENT_API_TOKEN=${DOCUMENT_API_TOKEN:-}
|
|
- SYNOLOGY_INCOMING_URL=${SYNOLOGY_INCOMING_URL:-}
|
|
- SYNOLOGY_OUTGOING_TOKEN=${SYNOLOGY_OUTGOING_TOKEN:-}
|
|
- API_KEY=${NANOCLAUDE_API_KEY:-}
|
|
volumes:
|
|
- nano_data:/app/data
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8100/health"]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 3
|
|
networks:
|
|
- gateway-net
|
|
|
|
volumes:
|
|
caddy_data:
|
|
hub_data:
|
|
nano_data:
|
|
|
|
networks:
|
|
gateway-net:
|
|
name: gpu-gateway-network
|