#!/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