feat: runner container + broker deploy pipeline
Some checks failed
CI / Lint (push) Has been cancelled
CI / Typecheck (push) Has been cancelled
CI / Broker tests (Postgres) (push) Has been cancelled
CI / Docker build (linux/amd64) (push) Has been cancelled

- apps/runner/: Dockerfile (node22 + python3 + uv + bun) + supervisor.mjs
  (HTTP API for load/call/unload/health)
- docker-compose: runner service with shared services-data volume
- Broker mcp_deploy: git clone or zip extract → runner /load → MCP spawn
- Broker mcp_call: routes managed services to runner via HTTP, falls back
  to live-proxy for peer-hosted servers
- RUNNER_URL env var for broker → runner communication

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Alejandro Gutiérrez
2026-04-08 13:06:43 +01:00
parent 070a3b7422
commit 873f588057
5 changed files with 454 additions and 7 deletions

View File

@@ -83,6 +83,25 @@ services:
start_period: 30s
retries: 3
runner:
build:
context: ./apps/runner
restart: always
environment:
RUNNER_PORT: 7901
volumes:
- services-data:/var/claudemesh/services
expose:
- "7901"
networks:
- claudemesh-internal
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://localhost:7901/health').then(r=>{process.exit(r.ok?0:1)}).catch(()=>process.exit(1))"]
interval: 30s
timeout: 5s
start_period: 10s
retries: 3
broker:
image: ${BROKER_IMAGE:-claudemesh-broker:latest}
restart: always
@@ -103,6 +122,11 @@ services:
NEO4J_URL: bolt://neo4j:7687
NEO4J_USER: neo4j
NEO4J_PASSWORD: ${NEO4J_PASSWORD:-changeme}
RUNNER_URL: http://runner:7901
CLAUDEMESH_SERVICES_DIR: /var/claudemesh/services
BROKER_ENCRYPTION_KEY: ${BROKER_ENCRYPTION_KEY:-}
volumes:
- services-data:/var/claudemesh/services
expose:
- "7900"
networks:
@@ -115,6 +139,8 @@ services:
condition: service_healthy
neo4j:
condition: service_healthy
runner:
condition: service_healthy
healthcheck:
test: ["CMD", "bun", "-e", "fetch('http://localhost:7900/health').then(r=>{process.exit(r.ok?0:1)}).catch(()=>process.exit(1))"]
interval: 15s
@@ -159,6 +185,7 @@ volumes:
minio-data:
qdrant-data:
neo4j-data:
services-data:
networks:
# Coolify's shared Traefik network — must already exist on the host