All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/secret-scan Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
- Remove ENABLE_LLAMA_AGENT conditional block from docker-compose generation - Remove legacy agents-llama and agents-llama-all services from docker-compose.yml - Remove llama bot user creation code (dev-qwen, dev-qwen-nightly) from lib/forge-setup.sh - Remove FORGE_TOKEN_LLAMA/FORGE_PASS_LLAMA environment variables from .env.example - Add migration error check that fails when ENABLE_LLAMA_AGENT=1 is found in .env - Update documentation: remove agents-llama entries from AGENTS.md and lib/AGENTS.md - Delete docs/agents-llama.md (legacy documentation) - TOML [agents.X] sections in projects/*.toml is now the canonical activation path
158 lines
5.2 KiB
YAML
158 lines
5.2 KiB
YAML
version: "3.8"
|
|
|
|
services:
|
|
agents:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/agents/Dockerfile
|
|
image: disinto/agents:latest
|
|
container_name: disinto-agents
|
|
restart: unless-stopped
|
|
security_opt:
|
|
- apparmor=unconfined
|
|
volumes:
|
|
- agent-data:/home/agent/data
|
|
- project-repos:/home/agent/repos
|
|
- ${CLAUDE_SHARED_DIR:-/var/lib/disinto/claude-shared}:${CLAUDE_SHARED_DIR:-/var/lib/disinto/claude-shared}
|
|
- ${CLAUDE_CONFIG_FILE:-${HOME}/.claude.json}:/home/agent/.claude.json:ro
|
|
- ${CLAUDE_BIN_DIR}:/usr/local/bin/claude:ro
|
|
- ${AGENT_SSH_DIR:-${HOME}/.ssh}:/home/agent/.ssh:ro
|
|
- ${SOPS_AGE_DIR:-${HOME}/.config/sops/age}:/home/agent/.config/sops/age:ro
|
|
- woodpecker-data:/woodpecker-data:ro
|
|
environment:
|
|
- FORGE_URL=http://forgejo:3000
|
|
- FORGE_REPO=${FORGE_REPO:-disinto-admin/disinto}
|
|
- FORGE_TOKEN=${FORGE_TOKEN:-}
|
|
- FORGE_REVIEW_TOKEN=${FORGE_REVIEW_TOKEN:-}
|
|
- FORGE_PLANNER_TOKEN=${FORGE_PLANNER_TOKEN:-}
|
|
- FORGE_GARDENER_TOKEN=${FORGE_GARDENER_TOKEN:-}
|
|
- FORGE_VAULT_TOKEN=${FORGE_VAULT_TOKEN:-}
|
|
- FORGE_SUPERVISOR_TOKEN=${FORGE_SUPERVISOR_TOKEN:-}
|
|
- FORGE_PREDICTOR_TOKEN=${FORGE_PREDICTOR_TOKEN:-}
|
|
- FORGE_ARCHITECT_TOKEN=${FORGE_ARCHITECT_TOKEN:-}
|
|
- FORGE_FILER_TOKEN=${FORGE_FILER_TOKEN:-}
|
|
- FORGE_BOT_USERNAMES=${FORGE_BOT_USERNAMES:-}
|
|
- WOODPECKER_TOKEN=${WOODPECKER_TOKEN:-}
|
|
- CLAUDE_TIMEOUT=${CLAUDE_TIMEOUT:-7200}
|
|
- CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=${CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:-1}
|
|
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
|
|
- FORGE_PASS=${FORGE_PASS:-}
|
|
- FORGE_ADMIN_PASS=${FORGE_ADMIN_PASS:-}
|
|
- FACTORY_REPO=${FORGE_REPO:-disinto-admin/disinto}
|
|
- DISINTO_CONTAINER=1
|
|
- PROJECT_NAME=${PROJECT_NAME:-project}
|
|
- PROJECT_REPO_ROOT=/home/agent/repos/${PROJECT_NAME:-project}
|
|
- WOODPECKER_DATA_DIR=/woodpecker-data
|
|
- WOODPECKER_REPO_ID=${WOODPECKER_REPO_ID:-}
|
|
- CLAUDE_CONFIG_DIR=${CLAUDE_CONFIG_DIR:-/var/lib/disinto/claude-shared/config}
|
|
- POLL_INTERVAL=${POLL_INTERVAL:-300}
|
|
- GARDENER_INTERVAL=${GARDENER_INTERVAL:-21600}
|
|
- ARCHITECT_INTERVAL=${ARCHITECT_INTERVAL:-21600}
|
|
- PLANNER_INTERVAL=${PLANNER_INTERVAL:-43200}
|
|
- SUPERVISOR_INTERVAL=${SUPERVISOR_INTERVAL:-1200}
|
|
healthcheck:
|
|
test: ["CMD", "pgrep", "-f", "entrypoint.sh"]
|
|
interval: 60s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 30s
|
|
depends_on:
|
|
forgejo:
|
|
condition: service_healthy
|
|
woodpecker:
|
|
condition: service_started
|
|
networks:
|
|
- disinto-net
|
|
|
|
reproduce:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/reproduce/Dockerfile
|
|
image: disinto-reproduce:latest
|
|
network_mode: host
|
|
profiles: ["reproduce"]
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- agent-data:/home/agent/data
|
|
- project-repos:/home/agent/repos
|
|
- ${CLAUDE_DIR:-${HOME}/.claude}:/home/agent/.claude
|
|
- ${CLAUDE_BIN_DIR:-/usr/local/bin/claude}:/usr/local/bin/claude:ro
|
|
- ${AGENT_SSH_DIR:-${HOME}/.ssh}:/home/agent/.ssh:ro
|
|
env_file:
|
|
- .env
|
|
|
|
edge:
|
|
build:
|
|
context: docker/edge
|
|
dockerfile: Dockerfile
|
|
image: disinto/edge:latest
|
|
container_name: disinto-edge
|
|
security_opt:
|
|
- apparmor=unconfined
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- ${CLAUDE_BIN_DIR:-/usr/local/bin/claude}:/usr/local/bin/claude:ro
|
|
- ${CLAUDE_CONFIG_FILE:-${HOME}/.claude.json}:/root/.claude.json:ro
|
|
- ${CLAUDE_DIR:-${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
|
|
- FORGE_REPO=disinto-admin/disinto
|
|
- FORGE_OPS_REPO=disinto-admin/disinto-ops
|
|
- PRIMARY_BRANCH=main
|
|
- DISINTO_CONTAINER=1
|
|
- FORGE_ADMIN_USERS=disinto-admin,vault-bot,admin
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-fsS", "http://localhost:2019/config/"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 15s
|
|
depends_on:
|
|
- forgejo
|
|
networks:
|
|
- disinto-net
|
|
|
|
forgejo:
|
|
image: codeberg.org/forgejo/forgejo:11.0
|
|
container_name: disinto-forgejo
|
|
restart: unless-stopped
|
|
security_opt:
|
|
- apparmor=unconfined
|
|
volumes:
|
|
- forgejo-data:/data
|
|
environment:
|
|
- FORGEJO__database__DB_TYPE=sqlite3
|
|
- FORGEJO__server__ROOT_URL=http://forgejo:3000/
|
|
- FORGEJO__server__HTTP_PORT=3000
|
|
- FORGEJO__security__INSTALL_LOCK=true
|
|
- FORGEJO__service__DISABLE_REGISTRATION=true
|
|
- FORGEJO__webhook__ALLOWED_HOST_LIST=private
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-sf", "http://localhost:3000/api/v1/version"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 30
|
|
start_period: 30s
|
|
ports:
|
|
- "3000:3000"
|
|
networks:
|
|
- disinto-net
|
|
|
|
volumes:
|
|
disinto-logs:
|
|
agent-data:
|
|
project-repos:
|
|
woodpecker-data:
|
|
forgejo-data:
|
|
|
|
networks:
|
|
disinto-net:
|
|
driver: bridge
|