services:
  morphbox-vm:
    image: morphbox:latest
    container_name: morphbox-vm
    hostname: morphbox-vm
    ports:
      - "2222:22"  # SSH port mapping
      # Expose dev server ports (bind to MORPHBOX_HOST or 127.0.0.1 by default)
      - "${MORPHBOX_HOST:-127.0.0.1}:5173:5173"
      - "${MORPHBOX_HOST:-127.0.0.1}:5174:5174"
      - "${MORPHBOX_HOST:-127.0.0.1}:5175:5175"
      - "${MORPHBOX_HOST:-127.0.0.1}:5176:5176"
      - "${MORPHBOX_HOST:-127.0.0.1}:5177:5177"
      - "${MORPHBOX_HOST:-127.0.0.1}:5178:5178"
      - "${MORPHBOX_HOST:-127.0.0.1}:5179:5179"
    volumes:
      # Persist Claude authentication data
      - claude-config:/home/morphbox/.config/claude-code
      # Persist workspace data
      - ./workspace:/workspace
      # Mount current morphbox project for development
      - ./:/workspace/morphbox
      # Persist bash history and other user data
      - claude-home:/home/morphbox
      # Persist Claude updates (prevents re-downloads)
      - claude-npm-cache:/usr/local/lib/node_modules
      - claude-npm-bin:/usr/local/bin
    environment:
      - TERM=xterm-256color
      - COLORTERM=truecolor
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
    restart: unless-stopped
    networks:
      - morphbox-network

networks:
  morphbox-network:
    driver: bridge

volumes:
  claude-config:
    driver: local
  claude-home:
    driver: local
  # Persist Claude updates
  claude-npm-cache:
    driver: local
  claude-npm-bin:
    driver: local