GoodMemGoodMem
ReferenceCLISystem

System Install

System Install CLI command reference

goodmem system install

Install the goodmem server

Synopsis

Install GoodMem server with either a local PostgreSQL database or connect to a remote database.

By default, installs with a local PostgreSQL database running in Docker. Use --remote-db flags to connect to an existing PostgreSQL instance.

goodmem system install [flags]

Examples

  # Install with local database (default, auto-generates profile name)
  goodmem system install

  # Install with a specific profile name
  goodmem system install --profile-name my-dev

  # Install with remote database using DSN
  goodmem system install --remote-db --db-url "postgresql://user:pass@host:5432/goodmem"

  # Install with remote database using individual flags
  goodmem system install --remote-db --db-url "host:port/goodmem" --db-user myuser --db-password mypass

  # Install to custom directory
  goodmem system install --dir /opt/goodmem

  # Install with TLS configuration
  goodmem system install --tls-cert /path/to/cert.pem --tls-key /path/to/key.pem

  # Skip Docker installation (if already installed)
  goodmem system install --skip-docker-install

  # Install using rootless Docker (no sudo for runtime ops; non-root user only)
  goodmem system install --runtime=rootless-docker

  # Install on Google Container-Optimized OS (COS) — remote DB required
  goodmem system install --remote-db --db-url "postgresql://user:pass@host:5432/goodmem" --db-user myuser --db-password mypass

Options

      --checkmark-logger        Use simple checkmark logger (recommended for CI/CD environments)
      --db-password string      Database password (if not in URL)
      --db-url string           Database URL (format: postgresql://user:pass@host:port/db or host:port/db)
      --db-user string          Database username (if not in URL)
      --debug                   Enable debug logging
      --dir string              Installation directory for GoodMem (default "/home/amin/.goodmem")
      --goodmem-image string    Docker image for the GoodMem server (default: ghcr.io/pair-systems-inc/goodmem/server:latest). Point at a mirrored registry for network-restricted environments (e.g. ghcr.nju.edu.cn/pair-systems-inc/goodmem/server:latest).
      --grpc-port int           Preferred gRPC port (installer scans from this port if unavailable) (default 9090)
      --handsfree               Non-interactive mode - use only flags, no prompts
  -h, --help                    help for install
      --no-sudo                 Never use sudo for privileged install steps. The installer already runs without sudo wherever it can and skips sudo automatically when it is already root (e.g. in a container); this flag forces escalation off entirely, so no step will invoke sudo. It applies to every privileged step — the system-Docker daemon start and docker-group add, the WSL Docker CLI/apt/keyring setup, the cosign binary install, and the rootless-docker one-time prerequisites. If a step genuinely needs root and cannot escalate, it surfaces the failure with guidance instead of invoking sudo.
      --pgvector-image string   Docker image for the pgvector container in local-db mode (default: pgvector/pgvector:pg17 on docker.io). Point at a mirrored registry for network-restricted environments (e.g. mirror.gcr.io/pgvector/pgvector:pg17).
      --platform string         Target platform (auto-detected, override only for cross-platform scenarios) (default "linux-amd64")
      --profile-name string     CLI profile name for this install (auto-generated if empty)
      --remote-db               Use remote PostgreSQL database instead of local container
      --rest-port int           Preferred REST port (installer scans from this port if unavailable) (default 8080)
      --runtime string          Container runtime for the GoodMem services. Valid values: 'docker' (default) installs system Docker via get.docker.com and requires sudo to install; 'rootless-docker' installs Docker that runs entirely as the current user, with no sudo for runtime operations. rootless-docker targets non-root Linux and WSL2 users (it errors if run as root or under sudo), automatically installs one-time prerequisites through the system package manager (apt, dnf, yum, pacman, or zypper), and prints guidance with a documentation link when a prerequisite cannot be resolved automatically. rootless-docker is not supported on macOS. (default "docker")
      --skip-docker-install     Skip automatic Docker installation (assumes Docker is already installed)
      --skip-verify             Skip Docker image signature verification (for testing/development)
      --tls-cert string         Path to TLS certificate file
      --tls-disabled            Disable TLS for server connections
      --tls-key string          Path to TLS private key file

Options inherited from parent commands

      --api-key string   API key for authentication (can also be set via GOODMEM_API_KEY environment variable)
      --server string    GoodMem server address (gRPC API)

SEE ALSO