-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstart.sh
More file actions
executable file
·129 lines (119 loc) · 4.08 KB
/
start.sh
File metadata and controls
executable file
·129 lines (119 loc) · 4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/usr/bin/env bash
# Eidolon — Start all services
#
# Usage:
# ./start.sh # auto-detect backend, no browser
# ./start.sh deepseek # force DeepSeek backend
# ./start.sh ollama # force Ollama backend
# ./start.sh deepseek --browser # DeepSeek + visible Chrome for Playwright
# ./start.sh --browser # auto-detect + visible Chrome
set -e
DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$DIR"
# Parse arguments
BACKEND="auto"
LAUNCH_BROWSER=false
for arg in "$@"; do
case "$arg" in
--browser) LAUNCH_BROWSER=true ;;
deepseek|ollama) BACKEND="$arg" ;;
esac
done
if [ "$BACKEND" = "auto" ]; then
if grep -q "localhost:8001" eidolon.yaml 2>/dev/null; then
BACKEND="deepseek"
else
BACKEND="ollama"
fi
fi
echo "Starting Eidolon ($BACKEND backend)..."
# 0. Launch visible Chrome for Playwright (if --browser)
if [ "$LAUNCH_BROWSER" = true ]; then
if curl -s http://localhost:9222/json/version >/dev/null 2>&1; then
echo " Chrome (CDP) already running"
else
echo " Launching Chrome with CDP on :9222..."
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/eidolon-chrome about:blank > /dev/null 2>&1 &
echo $! > /tmp/eidolon-chrome.pid
for i in $(seq 1 10); do
curl -s http://localhost:9222/json/version >/dev/null 2>&1 && break
sleep 1
done
fi
echo " Chrome (CDP) on http://localhost:9222"
fi
# 1. Start LLM backend
if [ "$BACKEND" = "deepseek" ]; then
if curl -s http://localhost:8001/v1/models >/dev/null 2>&1; then
echo " DeepSeek wrapper already running"
else
WRAPPER_DIR="${DEEPSEEK_WRAPPER_DIR:-$DIR/../deepseek_api_wrapper}"
if [ ! -d "$WRAPPER_DIR" ]; then
echo " Error: DeepSeek wrapper not found at $WRAPPER_DIR"
echo " Set DEEPSEEK_WRAPPER_DIR or place it at ../deepseek_api_wrapper"
exit 1
fi
echo " Starting DeepSeek wrapper..."
cd "$WRAPPER_DIR"
PORT=8001 .venv/bin/python -m deepseek_wrapper > /tmp/deepseek-wrapper.log 2>&1 &
echo $! > /tmp/deepseek-wrapper.pid
cd "$DIR"
for i in $(seq 1 15); do
curl -s http://localhost:8001/v1/models >/dev/null 2>&1 && break
sleep 1
done
fi
echo " DeepSeek wrapper on http://localhost:8001"
elif [ "$BACKEND" = "ollama" ]; then
if docker ps --format '{{.Names}}' | grep -q eidolon-ollama; then
echo " Ollama already running"
else
echo " Starting Ollama..."
docker start eidolon-ollama 2>/dev/null || \
docker run -d --name eidolon-ollama -p 11434:11434 -v ollama_data:/root/.ollama --restart unless-stopped ollama/ollama
for i in $(seq 1 30); do
curl -s http://localhost:11434/api/version >/dev/null 2>&1 && break
sleep 1
done
fi
echo " Ollama on http://localhost:11434"
fi
# 2. Start API server
if curl -s http://localhost:8000/api/health >/dev/null 2>&1; then
echo " API server already running"
else
echo " Starting API server..."
cd "$DIR"
.venv/bin/eidolon serve --port 8000 > /tmp/eidolon-api.log 2>&1 &
echo $! > /tmp/eidolon-api.pid
for i in $(seq 1 30); do
curl -s http://localhost:8000/api/health >/dev/null 2>&1 && break
sleep 1
done
echo " API server on http://localhost:8000"
fi
# 3. Start Web UI
if curl -s http://localhost:5173 >/dev/null 2>&1; then
echo " Web UI already running"
else
echo " Starting Web UI..."
cd "$DIR/web"
npm run dev > /tmp/eidolon-web.log 2>&1 &
echo $! > /tmp/eidolon-web.pid
cd "$DIR"
for i in $(seq 1 10); do
curl -s http://localhost:5173 >/dev/null 2>&1 && break
sleep 1
done
echo " Web UI on http://localhost:5173"
fi
echo ""
echo "Eidolon is ready!"
echo " GUI: http://localhost:5173"
echo " API: http://localhost:8000"
echo " Terminal: .venv/bin/eidolon chat"
if [ "$LAUNCH_BROWSER" = true ]; then
echo " Browser: Chrome (CDP on :9222)"
fi
echo ""
echo "To stop: ./stop.sh"