#!/bin/sh # =========================================================================== # SearchAI Inference Server — one-line installer # # curl -fsSL https://inference-server.searchblox.com/install | sudo bash # # Options (env vars before `bash`): # curl -fsSL .../install | sudo MODELS='4b asr tts' bash # curl -fsSL .../install | sudo API_KEY='my-secret' BACKEND=cuda bash # # MODELS model set (default: '4b asr tts' = chat + vision + speech) # groups: 4b asr tts voice 2b 9b image # API_KEY Bearer key for the API (auto-generated if not set) # BACKEND cpu (default) | auto | cuda (GPU hosts) # MIN_RAM_GB lower the RAM safety gate (e.g. 8 on a 16 GB host) # SERVER_PORT API port (default 8081) # # Downloads the full installer and model fetcher from the public artifact # URL and runs them. Everything is verified by sha256 where published. # =========================================================================== set -eu BASE="${SEARCHAI_BASE_URL:-https://inference-server.searchblox.com}" if [ "$(id -u)" -ne 0 ]; then echo "Please run with sudo:" >&2 echo " curl -fsSL $BASE/install | sudo bash" >&2 exit 1 fi command -v curl >/dev/null 2>&1 || { echo "curl is required." >&2; exit 1; } WORK="$(mktemp -d /tmp/searchai-install.XXXXXX)" trap 'rm -rf "$WORK"' EXIT echo "Fetching installer from $BASE ..." curl -fsSL "$BASE/deploy/install-searchai.sh" -o "$WORK/install-searchai.sh" curl -fsSL "$BASE/deploy/fetch-models.sh" -o "$WORK/fetch-models.sh" chmod +x "$WORK/install-searchai.sh" "$WORK/fetch-models.sh" GENERATED=0 if [ -z "${API_KEY:-}" ]; then API_KEY="$(head -c 24 /dev/urandom | od -An -tx1 | tr -d ' \n')" GENERATED=1 fi export API_KEY MODELS="${MODELS:-4b asr tts}" export MODELS # Serve the chat model that matches the selected set (installer default is 4b) if [ -z "${MODEL_ID:-}" ]; then case " $MODELS " in *" 4b "*) MODEL_ID=q35-4b ;; *" 2b "*) MODEL_ID=q35-2b ;; *" 9b "*) MODEL_ID=q35-9b ;; *) MODEL_ID=q35-4b ;; esac fi export MODEL_ID echo "Installing (MODELS='$MODELS') ..." "$WORK/install-searchai.sh" PORT="${SERVER_PORT:-8081}" echo "" echo "==============================================================" echo " SearchAI Inference Server is running." echo "" echo " API: http://localhost:$PORT/v1 (OpenAI-compatible)" echo " Console: http://localhost:$PORT/console" if [ "$GENERATED" = 1 ]; then echo " API key (auto-generated — save it now):" echo " $API_KEY" fi echo " Config: /etc/searchai/server.properties" echo " Docs: $BASE/deploy/GETTING_STARTED.md" echo "=============================================================="