#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" COMPOSE_FILE="${ROOT_DIR}/docker-compose.openhands-colima.yml" export OPENHANDS_WORKSPACE="${OPENHANDS_WORKSPACE:-${ROOT_DIR}}" export OPENHANDS_DOCKER_SOCK="${OPENHANDS_DOCKER_SOCK:-/Users/john/.colima/default/docker.sock}" export OPENHANDS_CONFIG_DIR="${OPENHANDS_CONFIG_DIR:-/Users/john/.openhands}" export OPENHANDS_PORT="${OPENHANDS_PORT:-3000}" export OPENHANDS_SANDBOX_UID="${OPENHANDS_SANDBOX_UID:-$(id -u)}" export OPENHANDS_DB_NAME="${OPENHANDS_DB_NAME:-openhands}" export OPENHANDS_DB_USER="${OPENHANDS_DB_USER:-openhands}" export OPENHANDS_DB_PASS="${OPENHANDS_DB_PASS:-openhands_dev_password}" if ! command -v docker >/dev/null 2>&1; then echo "docker not found in PATH" >&2 exit 1 fi if [ ! -S "${OPENHANDS_DOCKER_SOCK}" ]; then echo "docker socket not found: ${OPENHANDS_DOCKER_SOCK}" >&2 exit 1 fi mkdir -p "${OPENHANDS_CONFIG_DIR}" usage() { cat < Environment: OPENHANDS_WORKSPACE Workspace mounted into /workspace OPENHANDS_DOCKER_SOCK Docker socket mounted into the service container OPENHANDS_CONFIG_DIR Legacy host config directory (kept for CLI wrappers) OPENHANDS_PORT Host port published for the GUI server OPENHANDS_DB_NAME Postgres database name for OpenHands OPENHANDS_DB_USER Postgres user for OpenHands OPENHANDS_DB_PASS Postgres password for OpenHands EOF } cmd="${1:-status}" shift || true compose() { docker compose -f "${COMPOSE_FILE}" "$@" } case "${cmd}" in build) compose build openhands ;; pull) compose pull postgres ;; up) compose up -d postgres openhands ;; down) compose down ;; restart) compose up -d --force-recreate postgres openhands ;; logs) compose logs -f --tail=200 postgres openhands ;; status) compose ps ;; *) usage exit 1 ;; esac