version: '3.8' # Tatlock - The Homelab Butler # Purpose: OpenAI-compatible API server with LLM agent orchestration # Port: 8000 (API) # Network: docker-dataplane # Image: git.schweitz.internal/jpmschweitzer/tatlock (internal registry) services: tatlock: image: git.schweitz.internal/jpmschweitzer/tatlock:latest container_name: tatlock restart: unless-stopped ports: - "8000:8000" environment: - ENVIRONMENT=production - API_HOST=0.0.0.0 - API_PORT=8000 # Ollama (shared service) - OLLAMA_HOST=http://ollama:11434 - OLLAMA_DEFAULT_MODEL=mistral-nemo:latest - OLLAMA_TIMEOUT=120 # SearXNG (optional, shared service) - SEARXNG_HOST=http://searxng:8080 - SEARXNG_TIMEOUT=30 # Qdrant (vector database) - QDRANT_HOST=qdrant - QDRANT_PORT=6333 # Redis (shared service) - REDIS_HOST=redis-shared - REDIS_PORT=6379 - REDIS_MEMORY_DB=1 - REDIS_BENCHMARK_DB=6 - REDIS_TIMEOUT=5 # Features - ENABLE_BENCHMARKS=true - CORS_ORIGINS=["*"] - PYTHONPATH=/app # Library Desk API - LIBRARY_DESK_HOST=http://library-desk:8089 - LIBRARY_DESK_API_KEY=${LIBRARY_API_KEY} volumes: - /home/jpmschweitzer/docker-data/tatlock/logs:/app/logs networks: - docker-dataplane deploy: resources: limits: cpus: '1.0' memory: 1G reservations: memory: 256M labels: - "com.centurylinklabs.watchtower.enable=true" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 start_period: 30s networks: docker-dataplane: external: true name: docker-dataplane