From 235b6943567d77c5dea92c3feae0ffc14b658c0f Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Thu, 11 Dec 2025 18:28:04 +0100 Subject: [PATCH] feat: add tatlock stack for homelab butler API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - OpenAI-compatible API server with LLM agent orchestration - Port 8000, connects to docker-dataplane network - Integrates with ollama, searxng, redis-shared services - Watchtower auto-update enabled 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- stacks/tatlock.yml | 67 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 stacks/tatlock.yml diff --git a/stacks/tatlock.yml b/stacks/tatlock.yml new file mode 100644 index 0000000..d9c80cf --- /dev/null +++ b/stacks/tatlock.yml @@ -0,0 +1,67 @@ +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.net/jpmschweitzer/tatlock (private registry) + +services: + tatlock: + image: git.schweitz.net/jpmschweitzer/tatlock:latest + container_name: tatlock + restart: unless-stopped + + ports: + - "8000:8000" + + environment: + - ENVIRONMENT=production + - LOG_LEVEL=INFO + - 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 + # Redis (optional, shared service) + - REDIS_HOST=redis-shared + - REDIS_PORT=6379 + - REDIS_DB=6 + - REDIS_TIMEOUT=5 + # Features + - ENABLE_BENCHMARKS=true + - CORS_ORIGINS=* + - PYTHONPATH=/app + + 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