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