Spaces:
Paused
Paused
| 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, | |
| "auth": {"mode": "none"} | |
| }, | |
| "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..." | |
| sed -i "s|location /health|location /v1/ { proxy_pass http://127.0.0.1:8081; proxy_http_version 1.1; proxy_set_header Host \$host; } | |
| location /health|" /etc/nginx/sites-available/default | |
| nginx | |
| echo "[boot] Starting Ollama..." | |
| export OLLAMA_FLASH_ATTENTION=1 | |
| export OLLAMA_KV_CACHE_TYPE=q4_0 | |
| export OLLAMA_NUM_CTX=131072 | |
| 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 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 | |