File size: 4,228 Bytes
d601f7c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/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" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
  <key>CFBundleName</key><string>Neuronal</string>
  <key>CFBundleIdentifier</key><string>it.neuronal.app</string>
  <key>CFBundleExecutable</key><string>Neuronal</string>
  <key>CFBundlePackageType</key><string>APPL</string>
  <key>CFBundleShortVersionString</key><string>1.0</string>
</dict></plist>
EOF
cat > "$APP/Contents/MacOS/Neuronal" <<EOF
#!/usr/bin/env bash
open -a Terminal "$APPDIR/avvia.command"
EOF
chmod +x "$APP/Contents/MacOS/Neuronal"

echo
echo "Installato. Apri Neuronal da Applicazioni (cartella Inizio > 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