1+ #! /bin/bash
2+
3+ cd ../../../
4+
5+ # Check if llama-server binary already exists
6+ if [ ! -f " build/bin/llama-server" ]; then
7+ echo " Building llama-server..."
8+ cmake -B build && cmake --build build --config Release -t llama-server
9+ else
10+ echo " llama-server binary already exists, skipping build."
11+ fi
12+
13+ # Start llama-server and capture output
14+ echo " Starting llama-server..."
15+ mkfifo server_output.pipe
16+ build/bin/llama-server -hf ggml-org/gpt-oss-20b-GGUF --jinja -c 0 --no-webui > server_output.pipe 2>&1 &
17+ SERVER_PID=$!
18+
19+ # Function to wait for server to be ready
20+ wait_for_server () {
21+ echo " Waiting for llama-server to be ready..."
22+ local max_wait=60
23+ local start_time=$( date +%s)
24+
25+ # Read server output in background and look for the ready message
26+ (
27+ while IFS= read -r line; do
28+ echo " 🔍 Server: $line "
29+ if [[ " $line " == * " server is listening on http://127.0.0.1:8080 - starting the main loop" * ]]; then
30+ echo " ✅ llama-server is ready!"
31+ echo " READY" > server_ready.flag
32+ break
33+ fi
34+ done < server_output.pipe
35+ ) &
36+
37+ # Wait for ready flag or timeout
38+ while [ ! -f server_ready.flag ]; do
39+ local current_time=$( date +%s)
40+ local elapsed=$(( current_time - start_time))
41+
42+ if [ $elapsed -ge $max_wait ]; then
43+ echo " ❌ Server failed to start within $max_wait seconds"
44+ rm -f server_ready.flag
45+ return 1
46+ fi
47+
48+ sleep 1
49+ done
50+
51+ rm -f server_ready.flag
52+ return 0
53+ }
54+
55+ # Cleanup function
56+ cleanup () {
57+ echo " 🧹 Cleaning up..."
58+ kill $SERVER_PID 2> /dev/null
59+ rm -f server_output.pipe server_ready.flag
60+ exit
61+ }
62+
63+ # Set up signal handlers
64+ trap cleanup SIGINT SIGTERM
65+
66+ # Wait for server to be ready
67+ if wait_for_server; then
68+ echo " 🚀 Starting development servers..."
69+ cd tools/server/webui
70+ storybook dev -p 6006 --ci & vite dev --open --host 0.0.0.0 &
71+
72+ # Wait for all background processes
73+ wait
74+ else
75+ echo " ❌ Failed to start development environment"
76+ cleanup
77+ fi
0 commit comments