#!/usr/bin/env bash set -euo pipefail MINIWOB_HTML_DIR=${MINIWOB_HTML_DIR:-miniwob-plusplus/miniwob/html} MINIWOB_HTTP_PORT=${MINIWOB_HTTP_PORT:-8888} BROWSERGYM_PORT=${BROWSERGYM_PORT:-8000} if [ ! -d "${MINIWOB_HTML_DIR}" ]; then echo "MiniWoB HTML directory not found at ${MINIWOB_HTML_DIR}" >&2 exit 1 fi python -m http.server "${MINIWOB_HTTP_PORT}" --bind 0.0.0.0 --directory "${MINIWOB_HTML_DIR}" & HTTP_SERVER_PID=$! sleep 1 if ! kill -0 "${HTTP_SERVER_PID}" 2>/dev/null; then echo "Failed to start MiniWoB static server on port ${MINIWOB_HTTP_PORT}" >&2 exit 1 fi cleanup() { kill "${HTTP_SERVER_PID}" 2>/dev/null || true } trap cleanup EXIT INT TERM # Set the MiniWoB URL that BrowserGym needs to load tasks export MINIWOB_URL="http://localhost:${MINIWOB_HTTP_PORT}/miniwob/" export BROWSERGYM_BENCHMARK=${BROWSERGYM_BENCHMARK:-miniwob} export BROWSERGYM_TASK_NAME=${BROWSERGYM_TASK_NAME:-click-test} export BROWSERGYM_HEADLESS=${BROWSERGYM_HEADLESS:-true} export BROWSERGYM_VIEWPORT_WIDTH=${BROWSERGYM_VIEWPORT_WIDTH:-1280} export BROWSERGYM_VIEWPORT_HEIGHT=${BROWSERGYM_VIEWPORT_HEIGHT:-720} export BROWSERGYM_TIMEOUT=${BROWSERGYM_TIMEOUT:-10000} exec python -m uvicorn browsergym_env.server.app:app --host 0.0.0.0 --port "${BROWSERGYM_PORT}"