#!/bin/bash # Kipinä Node — lataa oikea binääri ja käynnistä set -e BASE_URL="https://kipina.studio/download" HUB_URL="${KIPINA_HUB:-wss://kipina.studio/ws}" OLLAMA_URL="${OLLAMA_URL:-http://localhost:11434}" # Tunnista OS ja arkkitehtuuri OS=$(uname -s | tr '[:upper:]' '[:lower:]') ARCH=$(uname -m) case "$OS-$ARCH" in darwin-arm64) BINARY="kipina-node-macos-arm64" ;; darwin-x86_64) BINARY="kipina-node-macos-arm64" ;; # Rosetta linux-x86_64) BINARY="kipina-node-linux-x86_64" ;; linux-aarch64) BINARY="kipina-node-linux-arm64" ;; *) echo "Ei tuettu: $OS-$ARCH"; exit 1 ;; esac echo "" echo " ╔══════════════════════════════════════╗" echo " ║ Kipinä Agentic Node ║" echo " ╚══════════════════════════════════════╝" echo "" echo " OS: $OS ($ARCH)" echo "" # Etsi Ollama-instanssit CANDIDATES=( "http://localhost:11434" "http://127.0.0.1:11434" "http://ollama:11434" "http://host.docker.internal:11434" ) # Lisää OLLAMA_URL listaan jos asetettu ja ei jo mukana if [ -n "$OLLAMA_URL" ]; then ALREADY=false for c in "${CANDIDATES[@]}"; do [ "$c" = "$OLLAMA_URL" ] && ALREADY=true done $ALREADY || CANDIDATES=("$OLLAMA_URL" "${CANDIDATES[@]}") fi echo " Etsitään Ollama-instansseja..." FOUND=() for url in "${CANDIDATES[@]}"; do if curl -s --connect-timeout 1 "$url/api/tags" &>/dev/null; then FOUND+=("$url") fi done if [ ${#FOUND[@]} -eq 0 ]; then # Ei löytynyt — yritä käynnistää lokaali if command -v ollama &>/dev/null; then echo " Käynnistetään Ollama..." ollama serve &>/dev/null & sleep 3 if curl -s --connect-timeout 1 "http://localhost:11434/api/tags" &>/dev/null; then OLLAMA_URL="http://localhost:11434" echo " ✓ Ollama käynnistetty ($OLLAMA_URL)" else echo " ✗ Ollaman käynnistys epäonnistui." exit 1 fi else echo "" echo " ✗ Ollamaa ei löytynyt." echo " Kontti/remote: OLLAMA_URL=http://HOST:11434 ./kipina-node" echo " Asenna: curl -fsSL https://ollama.ai/install.sh | sh" exit 1 fi elif [ ${#FOUND[@]} -eq 1 ]; then OLLAMA_URL="${FOUND[0]}" echo " ✓ Ollama löytyi: $OLLAMA_URL" else echo "" echo " Löytyi ${#FOUND[@]} Ollama-instanssia:" echo "" for i in "${!FOUND[@]}"; do echo " $((i+1))) ${FOUND[$i]}" done echo "" read -p " Valitse [1-${#FOUND[@]}]: " -r CHOICE if [[ "$CHOICE" =~ ^[0-9]+$ ]] && [ "$CHOICE" -ge 1 ] && [ "$CHOICE" -le ${#FOUND[@]} ]; then OLLAMA_URL="${FOUND[$((CHOICE-1))]}" else OLLAMA_URL="${FOUND[0]}" echo " Käytetään oletusta: $OLLAMA_URL" fi echo " ✓ Valittu: $OLLAMA_URL" fi echo "" echo " Hub: $HUB_URL" echo " Ollama: $OLLAMA_URL" if [ -n "$KIPINA_MODEL" ]; then echo " Malli: $KIPINA_MODEL (Ympäristömuuttujasta)" fi # Lataa binääri BIN_PATH="./kipina-node-bin" if [ -f "$BIN_PATH" ]; then echo "" read -p " Löydettiin vanha kipina-node-bin lokaalisti. Haluatko poistaa sen ja ladata uusimman version? [Y/n] " -r DEL_CHOICE if [[ "$DEL_CHOICE" =~ ^[Nn]$ ]]; then echo " ✓ Käytetään lokaalia versiota." else rm -f "$BIN_PATH" echo " ✓ Vanha binääri poistettu ja korvataan uudella." fi fi if [ ! -f "$BIN_PATH" ]; then echo " Ladataan tuorein $BINARY..." curl -sSL "$BASE_URL/$BINARY?v=$(date +%s)" -o "$BIN_PATH" chmod +x "$BIN_PATH" fi echo "" echo " ✓ Siirrytään Kipinä Noden hallintaan..." echo " Ctrl+C pysäyttää" echo "" if [ -n "$KIPINA_MODEL" ]; then export OLLAMA_MODEL="$KIPINA_MODEL" fi export HUB_URL="$HUB_URL" export OLLAMA_URL="$OLLAMA_URL" exec "$BIN_PATH"