daemon/docker-compose.yml

Docker Setup

The daemon ships with a Dockerfile and docker-compose.yml for containerized deployment. Drop in a PRD, and the daemon builds it automatically inside the container.

Quick Start (3 Commands)

cd daemon
cp .env.example .env   # fill in ANTHROPIC_API_KEY
docker compose up -d

docker-compose.yml Reference

The compose file defines two services:

  • daemon — the main Great Minds daemon (always runs)
  • shipyard-daemon — optional Shipyard AI daemon (runs with --profile shipyard)
services:
  daemon:
    build:
      context: .
      args:
        REPO_URL: ${REPO_URL:-https://github.com/sethshoultes/great-minds.git}
    container_name: great-minds-daemon
    restart: unless-stopped
    env_file: .env
    volumes:
      - ./prds:/home/agent/great-minds/prds
      - ./deliverables:/home/agent/great-minds/deliverables
      - ./rounds:/home/agent/great-minds/rounds
      - ./dreams:/home/agent/great-minds/dreams
      - ./memory-store/memory.db:/home/agent/great-minds/memory-store/memory.db
      - ${CLAUDE_CONFIG_DIR:-~/.claude}:/home/agent/.claude:ro
      - ${GIT_CONFIG:-~/.gitconfig}:/home/agent/.gitconfig:ro

Environment Variables (.env)

Create a .env file in the daemon directory with at minimum:

ANTHROPIC_API_KEY=sk-ant-your-key-here

# Optional overrides
REPO_URL=https://github.com/sethshoultes/great-minds.git
CLAUDE_CONFIG_DIR=~/.claude
GIT_CONFIG=~/.gitconfig

Volume Mounts

Host PathContainer PathPurpose
./prds//home/agent/great-minds/prdsDrop a .md file here to trigger a build
./deliverables//home/agent/great-minds/deliverablesBuilt products appear here
./rounds//home/agent/great-minds/roundsDebate transcripts, QA reports, board reviews
./dreams//home/agent/great-minds/dreamsfeatureDream output
./memory-store/memory.db/home/agent/great-minds/memory-store/memory.dbPersistent memory database
~/.claude/home/agent/.claudeClaude auth credentials (read-only)
~/.gitconfig/home/agent/.gitconfigGit identity for commits (read-only)

Dockerfile Details

The Dockerfile:

  1. Starts from node:22-slim
  2. Installs git, curl, and the Claude Code CLI globally
  3. Creates an agent user (Claude refuses --dangerously-skip-permissions as root)
  4. Clones the repo and installs daemon + memory-store dependencies
  5. Runs npx tsx src/daemon.ts as the entrypoint

Viewing Logs

# Follow daemon logs in real-time
docker compose logs -f daemon

# Last 100 lines
docker compose logs --tail 100 daemon

# Check health status
docker inspect great-minds-daemon | jq '.[0].State.Health'

Stopping and Restarting

# Stop the daemon gracefully
docker compose down

# Restart after config changes
docker compose up -d --build

# Run Shipyard AI daemon alongside
docker compose --profile shipyard up -d

Building a Custom Image

To use a forked repo or custom branch:

docker compose build --build-arg REPO_URL=https://github.com/you/your-fork.git
docker compose up -d