#!/usr/bin/env bash # shellcheck disable=SC2034 set -euo pipefail SCRIPT_PATH="$(readlink -f "${BASH_SOURCE[0]}")" SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)" # shellcheck source=/dev/null . "$SCRIPT_DIR/lib/bootstrap.sh" 2>/dev/null || . "$SCRIPT_DIR/../lib/bootstrap.sh" 2>/dev/null || { echo "Error: missing LocalAI bootstrap library: lib/bootstrap.sh" >&2; exit 1; } source_localai_cli_lib() { local name="$1" local candidate for candidate in "$SCRIPT_DIR/lib/$name" "$SCRIPT_DIR/../lib/$name"; do if [ -f "$candidate" ]; then # shellcheck source=/dev/null . "$candidate" return 0 fi done if [[ "$name" == cli/* ]] && [ "${LOCALAI_CLI_LIB_REPAIR:-0}" != "1" ] && [ -x "$SCRIPT_DIR/update-local-ai.sh" ]; then echo "Warning: missing LocalAI CLI module $name; attempting repair with $SCRIPT_DIR/update-local-ai.sh --no-start" >&2 if LOCALAI_CLI_LIB_REPAIR=1 "$SCRIPT_DIR/update-local-ai.sh" --no-start >/dev/null; then for candidate in "$SCRIPT_DIR/lib/$name" "$SCRIPT_DIR/../lib/$name"; do if [ -f "$candidate" ]; then # shellcheck source=/dev/null . "$candidate" return 0 fi done fi fi echo "Error: missing LocalAI library: $name" >&2 if [[ "$name" == cli/* ]]; then echo "Run the direct updater to repair the installed CLI modules:" >&2 echo " $SCRIPT_DIR/update-local-ai.sh" >&2 fi exit 1 } AI_DIR="$(resolve_ai_dir)" BIN_DIR="$AI_DIR/$LOCALAI_BIN_SUBDIR" CONF_DIR="$AI_DIR/$LOCALAI_CONF_SUBDIR" MODELS_DIR="$AI_DIR/$LOCALAI_MODELS_SUBDIR" CONFIG="$CONF_DIR/$LOCALAI_CONFIG_FILE" KEYS_DIR="$CONF_DIR/$LOCALAI_KEYS_SUBDIR" KEYS_FILE="$KEYS_DIR/$LOCALAI_KEYS_FILE" LOG_FILE="$AI_DIR/$LOCALAI_LOGS_SUBDIR/llama-swap.log" PORT_FILE="$CONF_DIR/$LOCALAI_PORT_FILE" PID_FILE="$CONF_DIR/$LOCALAI_PID_FILE" PID_START_FILE="$CONF_DIR/$LOCALAI_PID_FILE.start" SERVICE_UNIT="${LOCALAI_SERVICE_NAME%.service}" SERVICE_FILE="$LOCALAI_SYSTEMD_USER_DIR/$LOCALAI_SERVICE_NAME" resolve_llama_swap_paths source_localai_cli_lib cli/core.sh source_localai_cli_lib cli/service.sh source_localai_cli_lib cli/models.sh source_localai_cli_lib cli/suggest.sh source_localai_cli_lib cli/lifecycle.sh source_localai_cli_lib cli/key.sh source_localai_cli_lib install.sh source_localai_cli_lib cuda.sh source_localai_cli_lib cli/switch.sh source_localai_cli_lib cli/backend.sh COMMAND="${1:-help}" if [ "$#" -gt 0 ]; then shift fi case "$COMMAND" in start|stop|restart) service_cmd "$COMMAND" ;; reload) reload_cmd "$@" ;; status) status_cmd ;; check) check_cmd "$@" ;; logs) logs_cmd ;; models) models_cmd ;; ui) ui_cmd "$@" ;; suggest) suggest_cmd "$@" ;; key) key_cmd "$@" ;; load) load_cmd "$@" ;; unload) unload_cmd "$@" ;; update) update_cmd "$@" ;; switch) switch_cmd "$@" ;; backend) backend_cmd "$@" ;; rollback) rollback_cmd "$@" ;; version) version_cmd ;; uninstall) uninstall_cmd "$@" ;; help|-h|--help) usage ;; *) usage >&2 exit 2 ;; esac