Files
agent0/docker-compose.yml
T

290 lines
8.3 KiB
YAML
Raw Normal View History

2026-04-11 00:43:18 +02:00
services:
2026-04-11 12:59:02 +02:00
2026-05-03 08:45:58 +02:00
# ── Identity init containers ───────────────────────────────────────────────
# Each agent0 container has a corresponding *-init service that runs once on
# startup, pulls the agent's persona from the gnommoweb Content API, and
# writes it to the shared volume. The main agent container depends on its
# init service completing successfully before starting.
#
# To re-pull identity after an edit in gnommoweb admin:
# docker compose up --force-recreate dobby-init dobby (etc.)
dobby-init:
image: python:3.12-alpine
volumes:
- ./agents/dobby:/a0/usr
- ./scripts:/scripts:ro
environment:
AGENT_ID: ${DOBBY_AGENT_ID:-}
AGENT_TYPE: agent0
CONTENT_API_URL: ${API_URL}
CONTENT_API_KEY: ${CONTENT_API_KEY}
command: ["python3", "/scripts/pull-agent-identity.py"]
restart: "no"
gemma-init:
image: python:3.12-alpine
volumes:
- ./agents/gemma:/a0/usr
- ./scripts:/scripts:ro
environment:
AGENT_ID: ${GEMMA_AGENT_ID:-}
AGENT_TYPE: agent0
CONTENT_API_URL: ${API_URL}
CONTENT_API_KEY: ${CONTENT_API_KEY}
command: ["python3", "/scripts/pull-agent-identity.py"]
restart: "no"
gunnar-init:
image: python:3.12-alpine
volumes:
- ./agents/gunnar:/a0/usr
- ./scripts:/scripts:ro
environment:
AGENT_ID: ${GUNNAR_AGENT_ID:-}
AGENT_TYPE: agent0
CONTENT_API_URL: ${API_URL}
CONTENT_API_KEY: ${CONTENT_API_KEY}
command: ["python3", "/scripts/pull-agent-identity.py"]
restart: "no"
2026-05-09 17:30:11 +02:00
hermes-init:
image: python:3.12-alpine
volumes:
- ./agents/hermes:/a0/usr
- ./scripts:/scripts:ro
environment:
AGENT_ID: ${HERMES_AGENT_ID:-}
AGENT_TYPE: agent0
CONTENT_API_URL: ${API_URL}
CONTENT_API_KEY: ${CONTENT_API_KEY}
command: ["python3", "/scripts/pull-agent-identity.py"]
restart: "no"
2026-05-03 08:45:58 +02:00
rind-init:
image: python:3.12-alpine
volumes:
- ./agents/rind:/a0/usr
- ./scripts:/scripts:ro
environment:
AGENT_ID: ${RIND_AGENT_ID:-}
AGENT_TYPE: agent0
CONTENT_API_URL: ${API_URL}
CONTENT_API_KEY: ${CONTENT_API_KEY}
command: ["python3", "/scripts/pull-agent-identity.py"]
restart: "no"
abyssinthia-init:
image: python:3.12-alpine
volumes:
- ./agents/abyssinthia:/a0/usr
- ./scripts:/scripts:ro
environment:
AGENT_ID: ${ABYSSINTHIA_AGENT_ID:-}
AGENT_TYPE: agent0
CONTENT_API_URL: ${API_URL}
CONTENT_API_KEY: ${CONTENT_API_KEY}
command: ["python3", "/scripts/pull-agent-identity.py"]
restart: "no"
# ── Agent Zero instances ───────────────────────────────────────────────────
2026-04-17 21:45:05 +02:00
dobby:
2026-04-11 00:43:18 +02:00
image: agent0ai/agent-zero:latest
2026-04-17 21:45:05 +02:00
container_name: dobby
2026-04-11 00:43:18 +02:00
ports:
2026-04-18 16:09:47 +02:00
- "50001:80" # direct local access for debugging
2026-04-11 00:43:18 +02:00
volumes:
2026-04-17 21:45:05 +02:00
- ./agents/dobby:/a0/usr
- ${HOME}/.ssh:/root/.ssh
2026-04-11 00:43:18 +02:00
restart: unless-stopped
2026-05-03 08:45:58 +02:00
depends_on:
dobby-init:
condition: service_completed_successfully
2026-04-11 14:26:19 +02:00
environment:
AUTH_LOGIN: ${AUTH_LOGIN}
AUTH_PASSWORD: ${AUTH_PASSWORD}
2026-04-11 12:59:02 +02:00
extra_hosts:
2026-04-17 21:45:05 +02:00
- "host.docker.internal:host-gateway"
gemma:
image: agent0ai/agent-zero:latest
container_name: gemma
ports:
- "50002:80"
volumes:
- ./agents/gemma:/a0/usr
- ${HOME}/.ssh:/root/.ssh
restart: unless-stopped
2026-05-03 08:45:58 +02:00
depends_on:
gemma-init:
condition: service_completed_successfully
2026-04-17 21:45:05 +02:00
environment:
AUTH_LOGIN: ${AUTH_LOGIN}
AUTH_PASSWORD: ${AUTH_PASSWORD}
extra_hosts:
- "host.docker.internal:host-gateway"
gunnar:
image: agent0ai/agent-zero:latest
container_name: gunnar
ports:
- "50003:80"
volumes:
- ./agents/gunnar:/a0/usr
- ${HOME}/.ssh:/root/.ssh
restart: unless-stopped
2026-05-03 08:45:58 +02:00
depends_on:
gunnar-init:
condition: service_completed_successfully
2026-04-17 21:45:05 +02:00
environment:
AUTH_LOGIN: ${AUTH_LOGIN}
AUTH_PASSWORD: ${AUTH_PASSWORD}
extra_hosts:
- "host.docker.internal:host-gateway"
rind:
image: agent0ai/agent-zero:latest
container_name: rind
ports:
- "50005:80"
volumes:
- ./agents/rind:/a0/usr
- ${HOME}/.ssh:/root/.ssh
restart: unless-stopped
2026-05-03 08:45:58 +02:00
depends_on:
rind-init:
condition: service_completed_successfully
2026-04-17 21:45:05 +02:00
environment:
AUTH_LOGIN: ${AUTH_LOGIN}
AUTH_PASSWORD: ${AUTH_PASSWORD}
extra_hosts:
- "host.docker.internal:host-gateway"
abyssinthia:
image: agent0ai/agent-zero:latest
container_name: abyssinthia
ports:
- "50006:80"
volumes:
- ./agents/abyssinthia:/a0/usr
- ${HOME}/.ssh:/root/.ssh
restart: unless-stopped
2026-05-03 08:45:58 +02:00
depends_on:
abyssinthia-init:
condition: service_completed_successfully
2026-04-17 21:45:05 +02:00
environment:
AUTH_LOGIN: ${AUTH_LOGIN}
AUTH_PASSWORD: ${AUTH_PASSWORD}
extra_hosts:
- "host.docker.internal:host-gateway"
2026-05-09 17:30:11 +02:00
hermes:
image: agent0ai/agent-zero:latest
container_name: herms
ports:
- "50003:80"
volumes:
- ./agents/hermes:/a0/usr
- ${HOME}/.ssh:/root/.ssh
restart: unless-stopped
depends_on:
hermes-init:
condition: service_completed_successfully
environment:
AUTH_LOGIN: ${AUTH_LOGIN}
AUTH_PASSWORD: ${AUTH_PASSWORD}
extra_hosts:
- "host.docker.internal:host-gateway"
2026-05-03 08:45:58 +02:00
# ── Hermes agent ───────────────────────────────────────────────────────────
2026-04-17 21:45:05 +02:00
gerhard:
2026-05-04 21:08:14 +02:00
image: nousresearch/hermes-agent:latest
2026-04-17 21:45:05 +02:00
container_name: gerhard
2026-04-25 11:31:58 +02:00
volumes:
- ./agents/gerhard-hermes:/opt/data
2026-04-26 15:49:48 +02:00
- ./agents/gerhard-workspace:/workspace
2026-04-26 18:51:31 +02:00
- ./shared/knowledge:/knowledge
2026-04-26 18:37:03 +02:00
- ../gutasktool:/opt/gutasktool
- ${HOME}/.ssh:/root/.ssh
2026-04-25 11:31:58 +02:00
restart: unless-stopped
2026-04-26 18:37:03 +02:00
env_file: .env
2026-04-25 11:31:58 +02:00
environment:
HERMES_UID: ${HERMES_UID:-1000}
HERMES_GID: ${HERMES_GID:-1000}
2026-04-26 15:49:48 +02:00
HERMES_HOME: /opt/data
2026-04-25 11:31:58 +02:00
extra_hosts:
- "host.docker.internal:host-gateway"
command: ["gateway", "run"]
gerhard-dashboard:
2026-05-04 21:07:07 +02:00
image: nousresearch/hermes-agent:latest
2026-04-25 11:31:58 +02:00
container_name: gerhard-dashboard
2026-04-17 21:45:05 +02:00
ports:
2026-04-25 11:31:58 +02:00
- "50007:9119" # web dashboard at localhost:50007
2026-04-17 21:45:05 +02:00
volumes:
2026-04-25 11:31:58 +02:00
- ./agents/gerhard-hermes:/opt/data
2026-04-17 21:45:05 +02:00
restart: unless-stopped
2026-04-25 11:31:58 +02:00
depends_on:
- gerhard
2026-04-17 21:45:05 +02:00
environment:
2026-04-25 11:31:58 +02:00
HERMES_UID: ${HERMES_UID:-1000}
HERMES_GID: ${HERMES_GID:-1000}
2026-04-17 21:45:05 +02:00
extra_hosts:
- "host.docker.internal:host-gateway"
2026-04-25 12:33:06 +02:00
command: ["dashboard", "--host", "0.0.0.0", "--no-open", "--insecure", "--tui"]
2026-04-11 12:59:02 +02:00
2026-05-03 08:45:58 +02:00
# ── Plugins ────────────────────────────────────────────────────────────────
2026-04-19 16:16:13 +02:00
postgres:
image: postgres:16-alpine
container_name: festinger-postgres
restart: unless-stopped
environment:
POSTGRES_USER: festinger
POSTGRES_PASSWORD: festinger
POSTGRES_DB: festinger
volumes:
- festinger-pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U festinger"]
interval: 5s
timeout: 5s
retries: 10
festinger:
build:
context: ./plugins/festinger
container_name: festinger
ports:
- "11435:11434" # exposed on host as 11435 to avoid conflict with real Ollama
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
POSTGRES_DSN: "postgresql://festinger:festinger@postgres:5432/festinger"
extra_hosts:
- "host.docker.internal:host-gateway"
2026-05-03 08:45:58 +02:00
# ── Tunnel ─────────────────────────────────────────────────────────────────
2026-04-11 12:59:02 +02:00
glitch-tunnel:
build:
context: .
dockerfile: Dockerfile.tunnel
container_name: glitch-tunnel
restart: always
volumes:
2026-04-17 21:45:05 +02:00
- ./tunnel:/run/tunnel:ro
2026-04-11 12:59:02 +02:00
depends_on:
2026-04-17 21:45:05 +02:00
- dobby
- gemma
- gunnar
- rind
- abyssinthia
2026-04-25 11:31:58 +02:00
- gerhard-dashboard
2026-04-19 16:16:13 +02:00
volumes:
festinger-pgdata: