#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" STACK_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" # shellcheck disable=SC1091 source "${SCRIPT_DIR}/catalog-lib.sh" cd "${STACK_DIR}" PROFILE="${1:-}" if [[ -z "${PROFILE}" ]]; then echo "Usage: $0 " echo "" echo "Profiles:" ls -1 "${STACK_DIR}/profiles/"*.env 2>/dev/null | xargs -n1 basename | sed 's/\.env$//' | sed 's/^/ /' exit 1 fi PROFILE_FILE="${STACK_DIR}/profiles/${PROFILE}.env" if [[ ! -f "${PROFILE_FILE}" ]]; then echo "ERROR: Profile not found: ${PROFILE_FILE}" echo "" echo "Available profiles:" ls -1 "${STACK_DIR}/profiles/"*.env 2>/dev/null | xargs -n1 basename | sed 's/\.env$//' | sed 's/^/ /' exit 1 fi if [[ -f .env ]]; then set -a # shellcheck disable=SC1091 source .env set +a fi DATA_ROOT="${DATA_ROOT:-/data}" catalog_ensure_dirs "${DATA_ROOT}" echo "=== Switch vLLM profile: ${PROFILE} ===" cp "${PROFILE_FILE}" .env set -a # shellcheck disable=SC1091 source .env set +a if [[ "${VLLM_MODEL:-}" == *".gguf"* ]]; then echo "ERROR: VLLM_MODEL points to a .gguf file — vLLM does not support GGUF." echo " Use stacks/llamacpp (future) or an AWQ Hugging Face model." echo " See: ./scripts/list-models.sh" exit 1 fi if [[ -z "${VLLM_MODEL:-}" ]]; then echo "ERROR: Profile has empty VLLM_MODEL" exit 1 fi echo "Model: ${VLLM_MODEL}" echo "Served as: ${SERVED_MODEL_NAME:-qwen3.6-27b}" echo "Context: ${MAX_MODEL_LEN:-131072}" echo "" if docker compose --profile vllm ps -q vllm 2>/dev/null | grep -q .; then echo "Restarting vLLM container ..." docker compose --profile vllm down "${SCRIPT_DIR}/start.sh" else echo "vLLM not running. Start with:" echo " ./scripts/start.sh" fi