start_event_server.sh 1.32 KB
#!/data/data/com.termux/files/usr/bin/bash
# Start Android Event Bus Server
# Runs on 127.0.0.1:8765 inside Termux

HERMES_HOME="$HOME/.hermes"
HERMES_AGENT="$HERMES_HOME/hermes-agent"
PYTHON="$HERMES_AGENT/venv/bin/python"
UVICORN="$HERMES_AGENT/venv/bin/uvicorn"
SERVER_SCRIPT="$HERMES_HOME/event_bus/event_server.py"
LOG_FILE="$HERMES_HOME/logs/event_server.log"
PID_FILE="$HERMES_HOME/event_bus/event_server.pid"

mkdir -p "$HERMES_HOME/event_bus" "$HERMES_HOME/logs"

# Copy server script if not present or if newer version pushed
if [ ! -f "$SERVER_SCRIPT" ]; then
    echo "[event_bus] event_server.py not found at $SERVER_SCRIPT" >&2
    exit 1
fi

# Check if already running
if [ -f "$PID_FILE" ]; then
    PID=$(cat "$PID_FILE")
    if kill -0 "$PID" 2>/dev/null; then
        echo "[event_bus] Already running (pid $PID)"
        exit 0
    fi
fi

echo "[event_bus] Starting event server..."
cd "$HERMES_HOME/event_bus"

EVENT_BUS_DB="$HERMES_HOME/event_bus/events.db" \
    nohup "$UVICORN" event_server:app \
        --host 127.0.0.1 \
        --port 8765 \
        --log-level warning \
        >> "$LOG_FILE" 2>&1 &

PID=$!
echo $PID > "$PID_FILE"
sleep 1

if kill -0 "$PID" 2>/dev/null; then
    echo "[event_bus] Started (pid $PID) on http://127.0.0.1:8765"
else
    echo "[event_bus] Failed to start, check $LOG_FILE" >&2
    exit 1
fi