#!/bin/bash set -e pkill -f "health" 2>/dev/null || true crontab -r 2>/dev/null || true echo "[boot] Pulling OpenClaw state from Dataset..." python3 -c " import sys, os; sys.path.insert(0, '/app') HF_TOKEN = os.environ.get('HF_TOKEN', '') DATASET_REPO = os.environ.get('OPENCLAW_DATASET_REPO', '') if HF_TOKEN and DATASET_REPO: from huggingface_hub import hf_hub_download from huggingface_hub.utils import EntryNotFoundError for fname in ['openclaw.json', 'SOUL.md']: try: hf_hub_download(repo_id=DATASET_REPO, filename=f'openclaw/{fname}', repo_type='dataset', token=HF_TOKEN, local_dir='/root', local_dir_use_symlinks=False) except EntryNotFoundError: pass except Exception as e: print(f' {e}') " echo "[boot] Configuring OpenClaw..." mkdir -p ~/.openclaw cat > ~/.openclaw/openclaw.json << JSONEOF { "gateway": { "port": 8081, "bind": "loopback", "mode": "local", "channelHealthCheckMinutes": 0, "controlUi": {"dangerouslyDisableDeviceAuth": true, "allowInsecureAuth": true}, "auth": {"mode": "token", "token": "arshit2025"} }, "models": { "providers": { "ollama": { "baseUrl": "http://127.0.0.1:11434/v1", "apiKey": "ollama-local", "api": "openai-completions", "models": [ { "id": "hf.co/bartowski/DeepSeek-R1-Distill-Qwen-14B-GGUF:IQ3_XS", "name": "DeepSeek R1 Distill Qwen 14B", "contextWindow": 131072, "maxTokens": 8192, "input": ["text"] } ] } } }, "agents": { "defaults": { "model": {"primary": "ollama/hf.co/bartowski/DeepSeek-R1-Distill-Qwen-14B-GGUF:IQ3_XS"}, "workspace": "/app/yt-flow" } } } JSONEOF [ -f /app/SOUL.md ] && cp /app/SOUL.md ~/.openclaw/SOUL.md git config --global user.name "YT Pipeline Bot" git config --global user.email "yt-pipe-bot@hf.space" git clone https://arshitmalik:${HF_TOKEN}@huggingface.co/spaces/arshitmalik/yt-flow /app/yt-flow 2>/dev/null || true cat > /tmp/backup.sh << 'CRONEOF' #!/bin/bash python3 -c " import os, sys; sys.path.insert(0, '/app') HF_TOKEN = os.environ.get('HF_TOKEN', '') DATASET_REPO = os.environ.get('OPENCLAW_DATASET_REPO', '') if not HF_TOKEN or not DATASET_REPO: sys.exit(0) from huggingface_hub import HfApi api = HfApi(token=HF_TOKEN) from pathlib import Path for f in Path('/root/.openclaw').glob('*'): if f.is_file(): try: api.upload_file( path_or_fileobj=str(f), path_in_repo=f'openclaw/{f.name}', repo_id=DATASET_REPO, repo_type='dataset' ) except Exception as e: pass " 2>/dev/null CRONEOF chmod +x /tmp/backup.sh echo "*/15 * * * * /tmp/backup.sh" | crontab - echo "[boot] Starting health server on :8080..." python3 /app/health_server.py & echo "[boot] Health server PID: $!" echo "[boot] Starting nginx..." nginx echo "[boot] Starting Ollama..." export OLLAMA_FLASH_ATTENTION=1 export OLLAMA_KV_CACHE_TYPE=q4_0 export OLLAMA_NUM_CTX=131072 export OPENCLAW_GATEWAY_TOKEN=arshit2025 OLLAMA_HOST=127.0.0.1 OLLAMA_NUM_PARALLEL=1 OLLAMA_MAX_LOADED_MODELS=1 ollama serve & for i in $(seq 1 30); do if curl -sf http://127.0.0.1:11434/api/tags > /dev/null 2>&1; then echo "[boot] Ollama ready after ${i}s"; break fi sleep 2 done echo "[boot] Pulling IQ3_XS model for 128K context..." ollama pull hf.co/bartowski/DeepSeek-R1-Distill-Qwen-14B-GGUF:IQ3_XS & PULL_PID=$! wait $PULL_PID echo "[boot] Model ready" echo "[boot] Starting OpenClaw gateway on :8081..." openclaw gateway --allow-unconfigured --token arshit2025 2>&1 & OPENCLAW_PID=$! echo "[boot] Waiting for OpenClaw..." for i in $(seq 1 30); do if curl -sf http://127.0.0.1:8081/health > /dev/null 2>&1; then echo "[boot] OpenClaw ready after ${i}s" break fi sleep 2 done sleep 10 pkill -f "health-monitor" 2>/dev/null || true echo "" echo "==============================================" echo " OpenClaw LIVE - 14B IQ3_XS (128K)" echo " Visit the health page for the canvas link." echo "==============================================" echo "" wait $OPENCLAW_PID 2>/dev/null sleep infinity