#!/usr/bin/env bash # Installa Neuronal sul Mac (consigliato Apple Silicon: il modello gira sulla GPU con Metal). # Doppio clic su questo file dal Finder. Chat, ricordi e blocchi restano salvati sul Mac. set -euo pipefail HERE="$(cd "$(dirname "$0")" && pwd)" ROOT="$(cd "$HERE/.." && pwd)" APPDIR="$HOME/Library/Application Support/Neuronal" LLAMA_TAG=b11200 echo "Neuronal — Made in Italy" echo "Installazione per Mac" echo if [ "$(uname -m)" != "arm64" ]; then echo "Attenzione: questo Mac non ha un chip Apple (M1/M2/M3/M4). Neuronal funzionerà sulla CPU, molto lentamente." sleep 5 fi MEM_GB=$(( $(sysctl -n hw.memsize) / 1073741824 )) if [ "$MEM_GB" -lt 16 ]; then echo "Attenzione: il Mac ha ${MEM_GB} GB di memoria; per Neuronal ne servono almeno 16." sleep 5 fi # ---- strumenti ---- if ! command -v brew >/dev/null 2>&1; then echo "Serve Homebrew (https://brew.sh). Installalo con:" echo ' /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"' echo "poi rilancia questo installer." read -r -p "Premi Invio per chiudere." _ exit 1 fi echo "Installo gli strumenti (cmake, python, git, openssl)..." brew install cmake python@3.12 git openssl@3 >/dev/null PY="$(brew --prefix python@3.12)/bin/python3.12" # ---- compilazione: llama.cpp con Metal e il motore ---- BUILD="$(mktemp -d)" echo "Compilo llama.cpp $LLAMA_TAG con Metal (qualche minuto)..." git clone --depth 1 --branch "$LLAMA_TAG" https://github.com/ggml-org/llama.cpp "$BUILD/llama" >/dev/null 2>&1 cmake -S "$BUILD/llama" -B "$BUILD/llama/build" -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON \ -DLLAMA_CURL=OFF -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_EXAMPLES=OFF -DLLAMA_BUILD_SERVER=OFF >/dev/null cmake --build "$BUILD/llama/build" -j "$(sysctl -n hw.ncpu)" >/dev/null LIBDIR="$(dirname "$(find "$BUILD/llama/build" -name 'libllama.dylib' | head -1)")" echo "Compilo il motore di Neuronal..." cmake -S "$ROOT" -B "$BUILD/neuronal" -DCMAKE_BUILD_TYPE=Release -DLLAMA_SRC="$BUILD/llama" -DLLAMA_LIB_DIR="$LIBDIR" >/dev/null cmake --build "$BUILD/neuronal" -j "$(sysctl -n hw.ncpu)" >/dev/null # ---- installazione ---- echo "Installo in: $APPDIR" mkdir -p "$APPDIR/bin" "$APPDIR/lib" "$APPDIR/engine/atlas" "$APPDIR/scripts" "$APPDIR/state" "$APPDIR/lavori" cp "$BUILD/neuronal/neuronald" "$APPDIR/bin/" find "$BUILD/llama/build" -name '*.dylib' -exec cp -P {} "$APPDIR/lib/" \; rm -rf "$APPDIR/web" "$APPDIR/mind" cp -R "$ROOT/web" "$ROOT/mind" "$APPDIR/" rm -rf "$APPDIR/mind/.venv" cp "$ROOT/engine/atlas/probes_it.txt" "$APPDIR/engine/atlas/" cp "$ROOT/scripts/scarica_modelli.py" "$APPDIR/scripts/" cp "$ROOT/modelli.json" "$APPDIR/" cp "$HERE/avvia.command" "$HERE/ferma.command" "$APPDIR/" chmod +x "$APPDIR/avvia.command" "$APPDIR/ferma.command" "$APPDIR/bin/neuronald" rm -rf "$BUILD" echo "Preparo la voce (Python)..." "$PY" -m venv "$APPDIR/venv" "$APPDIR/venv/bin/pip" install --quiet --upgrade pip "$APPDIR/venv/bin/pip" install --quiet -r "$APPDIR/mind/requirements.txt" echo "Scarico i modelli (circa 5 GB)..." "$APPDIR/venv/bin/python" "$APPDIR/scripts/scarica_modelli.py" "$APPDIR/models" --elenco "$APPDIR/modelli.json" # ---- app nella cartella Applicazioni ---- APP="$HOME/Applications/Neuronal.app" mkdir -p "$APP/Contents/MacOS" cat > "$APP/Contents/Info.plist" < CFBundleNameNeuronal CFBundleIdentifierit.neuronal.app CFBundleExecutableNeuronal CFBundlePackageTypeAPPL CFBundleShortVersionString1.0 EOF cat > "$APP/Contents/MacOS/Neuronal" < Applicazioni) oppure con:" echo " \"$APPDIR/avvia.command\"" read -r -p "Vuoi avviarlo adesso? [S/n] " yn case "${yn:-s}" in [nN]*) ;; *) exec "$APPDIR/avvia.command";; esac