#!/bin/bash echo "[boot] Configuring Kaggle credentials..." if [ -n "$KAGGLE_USERNAME" ] && [ -n "$KAGGLE_KEY" ]; then mkdir -p ~/.kaggle printf '{"username":"%s","key":"%s"}' "$KAGGLE_USERNAME" "$KAGGLE_KEY" > ~/.kaggle/kaggle.json chmod 600 ~/.kaggle/kaggle.json fi echo "[boot] Configuring YouTube client secrets..." if [ -n "$YOUTUBE_CLIENT_ID" ] && [ -n "$YOUTUBE_CLIENT_SECRET" ]; then python3 -c " import json,os d={'installed':{'client_id':os.environ['YOUTUBE_CLIENT_ID'],'project_id':'yt-ai-bot','auth_uri':'https://accounts.google.com/o/oauth2/auth','token_uri':'https://oauth2.googleapis.com/token','auth_provider_x509_cert_url':'https://www.googleapis.com/oauth2/v1/certs','client_secret':os.environ['YOUTUBE_CLIENT_SECRET'],'redirect_uris':['http://localhost']}} open('/app/client_secrets.json','w').write(json.dumps(d)) print('[boot] client_secrets.json written')" fi echo "[boot] Pulling state from HF Dataset..." python3 -c " import sys; sys.path.insert(0,'/app') try: from sync_hub import pull_state from pathlib import Path pull_state(Path('/app')) except Exception as e: print(f'[boot] Hub pull skipped: {e}') " echo "[boot] Starting nginx..." nginx echo "[boot] Starting Ollama..." OLLAMA_HOST=127.0.0.1 ollama serve & echo "[boot] Starting status server on port 8080..." python3 -c " import http.server, threading, os, time class Handler(http.server.BaseHTTPRequestHandler): def do_GET(self): try: log = open('/app/pipeline.log').read()[-3000:] except: log = 'No log yet.' body = f''' YT Pipeline

YouTube Shorts Pipeline

Space is running. Pipeline log (last 3000 chars, auto-refreshes every 30s):

{log}
'''.encode() self.send_response(200) self.send_header('Content-Type','text/html') self.send_header('Content-Length',str(len(body))) self.end_headers() self.wfile.write(body) def log_message(self, *a): pass httpd = http.server.HTTPServer(('0.0.0.0', 8080), Handler) print('[status] Server running on port 8080') httpd.serve_forever() " & echo "[boot] Waiting for Ollama..." for i in $(seq 1 60); 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 qwen2.5-coder:7b-instruct..." ollama pull qwen2.5-coder:7b-instruct echo "[boot] Starting pipeline..." python3 /app/automation.py >> /app/pipeline.log 2>&1 & echo "[boot] Pipeline PID: $!" echo "[boot] Trying OpenClaw (optional)..." export OLLAMA_HOST=http://127.0.0.1:11434 openclaw gateway start || echo "[boot] OpenClaw unavailable, status server is active" sleep infinity