# Explicit, single-seat dogfood mode for stack-containerization B2. # Use with docker-compose.yml. The base stack remains credential-free. services: gateway: environment: # Identity and credential layout match a fleet seat. This fixed name prevents # an operator from mounting one seat while attributing actions to another. MOSAIC_AGENT_NAME: stack-dogfood MOSAIC_GIT_IDENTITY: stack-dogfood MOSAIC_BRAIN_HOME: /opt/mosaic/brain AGENT_FILE_SANDBOX_DIR: /workspace/stack # Disable the general shell before admin/user allowlist resolution. Delivery # uses execFile-only tools bound to the queue and PR wrappers below. AGENT_SHELL_ENABLED: 'false' AGENT_DELIVERY_ENABLED: 'true' MOSAIC_GIT_TOOLS_DIR: /opt/mosaic/tools/git MOSAIC_INTEGRATION_TRUNK: next AGENT_USER_TOOLS: fs_read_file,fs_write_file,fs_list_directory,fs_edit_file,git_status,git_log,git_diff,git_publish_branch,git_open_pull_request volumes: # Mount a dedicated worktree, never the canonical clone or divergent local main. - type: bind source: ${MOSAIC_DOGFOOD_WORKTREE:?set to a dedicated next-based stack worktree} target: /workspace/stack # A Git worktree's .git file points into the canonical clone's common Git # directory. Mount that directory at its original absolute path so Git can # resolve the pointer. File tools cannot traverse outside /workspace/stack. - type: bind source: ${MOSAIC_DOGFOOD_COMMON_GIT_DIR:?set to the canonical stack clone .git directory} target: ${MOSAIC_DOGFOOD_COMMON_GIT_DIR:?set to the canonical stack clone .git directory} # Only this seat home enters the container. Other fleet credentials stay outside. - type: bind source: ${MOSAIC_DOGFOOD_SEAT_HOME:?set to the external stack-dogfood seat directory} target: /opt/mosaic/brain/fleet/agents/stack-dogfood read_only: true