Spaces:
Running
Running
| # Start the CrispEmbed C++ server in the background, then launch Gradio. | |
| set -e | |
| MODEL="${CRISPEMBED_MODEL:-all-MiniLM-L6-v2}" | |
| OCR_MODEL="${CRISPEMBED_OCR_MODEL:-hmer-hw}" | |
| SERVER_HOST="${CRISPEMBED_SERVER_HOST:-127.0.0.1}" | |
| SERVER_PORT="${CRISPEMBED_SERVER_PORT:-8090}" | |
| N_THREADS="${CRISPEMBED_THREADS:-4}" | |
| echo "=== CrispEmbed Space ===" | |
| echo " Model: $MODEL" | |
| echo " OCR model: $OCR_MODEL" | |
| echo " Server: $SERVER_HOST:$SERVER_PORT" | |
| echo " Threads: $N_THREADS" | |
| # Auto-download and start the embedding server. | |
| # -m accepts a model name (auto-resolves + downloads from HF registry). | |
| crispembed-server \ | |
| -m "$MODEL" \ | |
| --ocr "$OCR_MODEL" \ | |
| --host "$SERVER_HOST" \ | |
| --port "$SERVER_PORT" \ | |
| -t "$N_THREADS" & | |
| SERVER_PID=$! | |
| # Wait for the server to come up (up to 120s for first model download) | |
| echo "Waiting for CrispEmbed server..." | |
| for i in $(seq 1 120); do | |
| if curl -sf "http://$SERVER_HOST:$SERVER_PORT/health" >/dev/null 2>&1; then | |
| echo "Server ready!" | |
| break | |
| fi | |
| if ! kill -0 "$SERVER_PID" 2>/dev/null; then | |
| echo "ERROR: Server process died" | |
| exit 1 | |
| fi | |
| sleep 1 | |
| done | |
| # Start Gradio | |
| exec python3 /space/app.py | |