# Same image/binary as the Brain, but with the lightweight source-poller runtime. # Create the Agent + token first in https:///source-agents.html. services: source-agent: build: context: .. restart: unless-stopped ports: - "${BRAIN_AGENT_PORT:-8092}:8090" environment: BRAIN_MODE: agent BRAIN_LISTEN_ADDR: :8090 BRAIN_DATA_DIR: /app/data BRAIN_AGENT_BRAIN_URL: ${BRAIN_AGENT_BRAIN_URL:?set Brain URL} BRAIN_AGENT_ID: ${BRAIN_AGENT_ID:?set Agent ID} BRAIN_AGENT_TOKEN: ${BRAIN_AGENT_TOKEN:?set Agent token} BRAIN_AGENT_CONFIG_REFRESH: ${BRAIN_AGENT_CONFIG_REFRESH:-5m} BRAIN_AGENT_HTTP_TIMEOUT: ${BRAIN_AGENT_HTTP_TIMEOUT:-30s} BRAIN_AGENT_CONCURRENCY: ${BRAIN_AGENT_CONCURRENCY:-3} BRAIN_AGENT_BATCH_SIZE: ${BRAIN_AGENT_BATCH_SIZE:-50} BRAIN_AGENT_ALLOW_PRIVATE: ${BRAIN_AGENT_ALLOW_PRIVATE:-false} BRAIN_AGENT_COMPUTE_ENABLED: ${BRAIN_AGENT_COMPUTE_ENABLED:-true} BRAIN_AGENT_COMPUTE_POLL_INTERVAL: ${BRAIN_AGENT_COMPUTE_POLL_INTERVAL:-5s} BRAIN_AGENT_COMPUTE_MAX_BYTES: ${BRAIN_AGENT_COMPUTE_MAX_BYTES:-134217728} BRAIN_AGENT_DOCKER_CONTROLLER_ENABLED: ${BRAIN_AGENT_DOCKER_CONTROLLER_ENABLED:-false} BRAIN_AGENT_DOCKER_SOCKET: ${BRAIN_AGENT_DOCKER_SOCKET:-/var/run/docker.sock} BRAIN_AGENT_DOCKER_COMPOSE_BINARY: ${BRAIN_AGENT_DOCKER_COMPOSE_BINARY:-docker} BRAIN_AGENT_CONTROLLER_POLL_INTERVAL: ${BRAIN_AGENT_CONTROLLER_POLL_INTERVAL:-5s} BRAIN_AGENT_CONTROLLER_MAX_DURATION: ${BRAIN_AGENT_CONTROLLER_MAX_DURATION:-15m} volumes: - source-agent-state:/app/data extra_hosts: - "host.docker.internal:host-gateway" read_only: true tmpfs: [/tmp:size=32m] security_opt: [no-new-privileges:true] cap_drop: [ALL] volumes: source-agent-state: