diff --git a/network-poc/kipina-node b/network-poc/kipina-node new file mode 100755 index 0000000..31b38db --- /dev/null +++ b/network-poc/kipina-node @@ -0,0 +1,131 @@ +#!/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" diff --git a/network-poc/kipina-node-bin b/network-poc/kipina-node-bin new file mode 100755 index 0000000..1b2c9ed Binary files /dev/null and b/network-poc/kipina-node-bin differ