From 13a35f835523fb199b77f34e1d5cf8fb5b9f3bf2 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 7 Apr 2026 09:11:24 +0000 Subject: [PATCH 1/2] fix: feat: integrate supervisor into edge container (#344) Co-Authored-By: Claude Sonnet 4.6 --- docker-compose.yml | 27 +++++++++++++++++++++++++++ docker/edge/entrypoint-edge.sh | 6 ++++++ state/.gitignore | 2 ++ state/.supervisor-active | 0 4 files changed, 35 insertions(+) create mode 100644 state/.supervisor-active diff --git a/docker-compose.yml b/docker-compose.yml index aeec67d..ff547e0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -56,6 +56,30 @@ services: env_file: - .env + edge: + build: + context: docker/edge + dockerfile: Dockerfile + image: disinto/edge:latest + container_name: disinto-edge + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /home/johba/.local/share/claude/versions/2.1.84:/usr/local/bin/claude:ro + - ${HOME}/.claude.json:/root/.claude.json:ro + - ${HOME}/.claude:/root/.claude:ro + - disinto-logs:/opt/disinto-logs + environment: + - FORGE_SUPERVISOR_TOKEN=${FORGE_SUPERVISOR_TOKEN:-} + - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-} + - CLAUDE_MODEL=claude-sonnet-4-6 + - FORGE_TOKEN=${FORGE_TOKEN:-} + - FORGE_URL=http://forgejo:3000 + ports: + - "80:80" + - "443:443" + depends_on: + - forgejo + forgejo: image: codeberg.org/forgejo/forgejo:1 container_name: disinto-forgejo @@ -69,3 +93,6 @@ services: - FORGEJO__service__REQUIRE_SIGNIN_VIEW=true ports: - "3000:3000" + +volumes: + disinto-logs: diff --git a/docker/edge/entrypoint-edge.sh b/docker/edge/entrypoint-edge.sh index 6f96bc5..26ae442 100755 --- a/docker/edge/entrypoint-edge.sh +++ b/docker/edge/entrypoint-edge.sh @@ -15,5 +15,11 @@ fi # Start dispatcher in background bash /opt/disinto/docker/edge/dispatcher.sh & +# Start supervisor loop in background +while true; do + bash /opt/disinto/supervisor/supervisor-run.sh /opt/disinto/projects/disinto.toml 2>&1 | tee -a /opt/disinto-logs/supervisor.log || true + sleep 1200 # 20 minutes +done & + # Caddy as main process exec caddy run --config /etc/caddy/Caddyfile --adapter caddyfile diff --git a/state/.gitignore b/state/.gitignore index 0a0c1e8..eb205a2 100644 --- a/state/.gitignore +++ b/state/.gitignore @@ -1,2 +1,4 @@ # Active-state files are runtime state, not committed .*-active +# Supervisor is always active in the edge container — committed guard file +!.supervisor-active diff --git a/state/.supervisor-active b/state/.supervisor-active new file mode 100644 index 0000000..e69de29 From 96d1aa7a29206b609e5a254ce4937bf23171c1f6 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 7 Apr 2026 09:22:32 +0000 Subject: [PATCH 2/2] fix: use consistent claude path and add DISINTO_CONTAINER=1 to edge service - Replace hardcoded versioned path with /usr/local/bin/claude:ro, matching all other services (agents, agents-llama) so claude auto-updates don't silently break the edge container - Add DISINTO_CONTAINER=1 so lib/env.sh routes DISINTO_LOG_DIR to the persistent disinto-logs volume instead of the ephemeral git clone; this ensures supervisor-run.sh log() calls survive container restarts Co-Authored-By: Claude Sonnet 4.6 --- docker-compose.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index ff547e0..dd9dcca 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -64,7 +64,7 @@ services: container_name: disinto-edge volumes: - /var/run/docker.sock:/var/run/docker.sock - - /home/johba/.local/share/claude/versions/2.1.84:/usr/local/bin/claude:ro + - /usr/local/bin/claude:/usr/local/bin/claude:ro - ${HOME}/.claude.json:/root/.claude.json:ro - ${HOME}/.claude:/root/.claude:ro - disinto-logs:/opt/disinto-logs @@ -74,6 +74,7 @@ services: - CLAUDE_MODEL=claude-sonnet-4-6 - FORGE_TOKEN=${FORGE_TOKEN:-} - FORGE_URL=http://forgejo:3000 + - DISINTO_CONTAINER=1 ports: - "80:80" - "443:443"