gsd-2 Docker & Self-Hosted Deployment

GitHub

A powerful meta-prompting, context engineering and spec-driven development system that enables agents to work for long periods of time autonomously without...

7,282 stars TypeScript TypeScript 1 file ยท ~7,439 tokens #context-engineering#meta-prompting#spec-driven-development
RAW Compose
1. Pull Image (DOCKERHUB) docker pull gsd-build/gsd-2
2. Docker Run (1-Click Launch) docker run -d --name gsd-2 -p 3000:3000 --restart always gsd-build/gsd-2:latest
3. Podman Run podman run -d --name gsd-2 -p 3000:3000 --restart always gsd-build/gsd-2:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/gsd-build/gsd-2:latest
5. ORAS Pull (OCI Artifact) oras pull gsd-build/gsd-2:latest
6. Compose Deployment docker compose up -d
docker/docker-compose.full.yaml
Download .yml
services:
  gsd:
    build:
      context: .                        # Build context is the docker/ directory
      dockerfile: Dockerfile.sandbox    # Runtime sandbox image with entrypoint
      args:
        GSD_VERSION: latest             # Pin a specific version: GSD_VERSION=2.51.0

    container_name: gsd-sandbox

    ports:
      - "3000:3000"                     # GSD web UI

    volumes:
      - ../:/workspace                  # Project root mounted into the container
      - gsd-state:/home/gsd/.gsd        # Persistent GSD state across restarts
      # - ~/.ssh:/home/gsd/.ssh:ro      # SSH keys for git operations (read-only)
      # - ~/.gitconfig:/home/gsd/.gitconfig:ro  # Host git config

    env_file:
      - .env                            # API keys and secrets (see .env.example)

    environment:
      - NODE_ENV=development
      # UID/GID remapping โ€” match your host user to avoid permission issues
      # on bind-mounted volumes. The entrypoint remaps the container's gsd
      # user to these IDs at startup. Run `id -u` / `id -g` to find yours.
      - PUID=1000
      - PGID=1000
      # Git identity inside the container (overrides .env if set here)
      # - GIT_AUTHOR_NAME=Your Name
      # - [email protected]

    stdin_open: true                    # Keep stdin open for interactive use
    tty: true                           # Allocate a pseudo-TTY

    # Health check โ€” verify GSD is installed and responsive
    healthcheck:
      test: ["CMD", "gsd", "--version"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 10s

    # Resource limits โ€” uncomment to constrain container resources
    # deploy:
    #   resources:
    #     limits:
    #       cpus: "4.0"
    #       memory: 8G
    #     reservations:
    #       cpus: "1.0"
    #       memory: 2G

    # Network mode โ€” uncomment ONE if you need host networking
    # network_mode: host               # Full host network access (no port mapping needed)
    # network_mode: bridge             # Default Docker bridge (already the default)

volumes:
  gsd-state:
    driver: local