#!/bin/bash # ============================================================ # Script di avvio OpenClaw per Hugging Face Spaces # ============================================================ set -euo pipefail CONFIG_DIR="${HOME}/.openclaw" CONFIG_FILE="${CONFIG_DIR}/openclaw.json" LOG_FILE="${CONFIG_DIR}/startup.log" echo "🦞 Avvio OpenClaw su Hugging Face Spaces..." echo " Porta: ${OPENCLAW_GATEWAY_PORT:-7860}" echo " Modello: ${OPENCLAW_MODEL:-groq/llama-3.3-70b-versatile}" echo "" # Crea directory se non esiste mkdir -p "${CONFIG_DIR}/workspace" # ─── Determina quale provider/modello usare ───────────────── MODEL="${OPENCLAW_MODEL:-}" if [ -z "$MODEL" ]; then if [ -n "${GROQ_API_KEY:-}" ]; then MODEL="groq/llama-3.3-70b-versatile" elif [ -n "${GOOGLE_API_KEY:-}" ]; then MODEL="google/gemini-2.0-flash-lite" elif [ -n "${ANTHROPIC_API_KEY:-}" ]; then MODEL="anthropic/claude-haiku-4-5-20251001" elif [ -n "${OPENAI_API_KEY:-}" ]; then MODEL="openai/gpt-4o-mini" else echo "⚠️ ATTENZIONE: Nessuna API key trovata nei Secrets!" echo " Aggiungi GROQ_API_KEY (gratuita) nelle impostazioni della Space." echo " Avvio comunque OpenClaw, ma le richieste AI falliranno." MODEL="groq/llama-3.3-70b-versatile" fi fi echo "✅ Modello selezionato: $MODEL" # ─── Scrivi configurazione openclaw.json ──────────────────── cat > "${CONFIG_FILE}" << JSONEOF { "gateway": { "port": ${OPENCLAW_GATEWAY_PORT:-7860}, "bind": "${OPENCLAW_GATEWAY_BIND:-0.0.0.0}", "token": "${OPENCLAW_TOKEN:-openclaw-hf-token}" }, "agent": { "model": "${MODEL}" }, "agents": { "defaults": { "sandbox": { "mode": "off" } } } } JSONEOF echo "✅ Configurazione scritta in ${CONFIG_FILE}" # ─── Esporta variabili per i provider AI ──────────────────── # OpenClaw legge le API key dall'ambiente export GROQ_API_KEY="${GROQ_API_KEY:-}" export GOOGLE_API_KEY="${GOOGLE_API_KEY:-}" export ANTHROPIC_API_KEY="${ANTHROPIC_API_KEY:-}" export OPENAI_API_KEY="${OPENAI_API_KEY:-}" export OPENCLAW_GATEWAY_PORT="${OPENCLAW_GATEWAY_PORT:-7860}" export OPENCLAW_GATEWAY_BIND="${OPENCLAW_GATEWAY_BIND:-0.0.0.0}" export OPENCLAW_TOKEN="${OPENCLAW_TOKEN:-openclaw-hf-token}" # ─── Messaggio di benvenuto ────────────────────────────────── echo "" echo "═══════════════════════════════════════════════════════" echo " 🦞 OpenClaw si sta avviando..." echo " 📡 Gateway: http://0.0.0.0:${OPENCLAW_GATEWAY_PORT:-7860}" echo " 🔑 Token WebChat: ${OPENCLAW_TOKEN:-openclaw-hf-token}" echo " 🤖 Modello AI: ${MODEL}" echo "═══════════════════════════════════════════════════════" echo "" echo " Per usare la WebChat:" echo " 1. Apri l'interfaccia della Space" echo " 2. Inserisci il token quando richiesto" echo " 3. Inizia a chattare!" echo "" # ─── Avvia OpenClaw Gateway ───────────────────────────────── # Il gateway si avvia in foreground (necessario per Docker/HF) exec openclaw gateway