Spaces:
Running
Running
| # start-dev.sh - Start everything needed for Mini Minder development | |
| # Usage: ./start-dev.sh [--no-browser] | |
| set -e | |
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | |
| cd "$SCRIPT_DIR" | |
| # Colors for output | |
| GREEN='\033[0;32m' | |
| YELLOW='\033[1;33m' | |
| RED='\033[0;31m' | |
| NC='\033[0m' # No Color | |
| echo -e "${GREEN}🤖 Starting Mini Minder Development Environment${NC}" | |
| echo "" | |
| # Check if daemon is already running | |
| if lsof -i :8000 >/dev/null 2>&1; then | |
| echo -e "${YELLOW}⚠️ Daemon already running on port 8000${NC}" | |
| else | |
| echo -e "${GREEN}▶ Starting reachy-mini-daemon...${NC}" | |
| source .venv/bin/activate | |
| reachy-mini-daemon & | |
| DAEMON_PID=$! | |
| # Wait for daemon to be ready | |
| echo " Waiting for daemon to start..." | |
| for i in {1..30}; do | |
| if curl -s http://localhost:8000/api/daemon/status >/dev/null 2>&1; then | |
| echo -e "${GREEN} ✓ Daemon ready${NC}" | |
| break | |
| fi | |
| sleep 1 | |
| if [ $i -eq 30 ]; then | |
| echo -e "${RED} ✗ Daemon failed to start${NC}" | |
| exit 1 | |
| fi | |
| done | |
| fi | |
| # Check if frontend dev server is running | |
| if lsof -i :3000 >/dev/null 2>&1; then | |
| echo -e "${YELLOW}⚠️ Frontend already running on port 3000${NC}" | |
| else | |
| echo -e "${GREEN}▶ Starting frontend dev server...${NC}" | |
| cd frontend | |
| npm run dev & | |
| FRONTEND_PID=$! | |
| cd .. | |
| # Wait for frontend | |
| echo " Waiting for frontend to start..." | |
| for i in {1..30}; do | |
| if curl -s http://localhost:3000 >/dev/null 2>&1; then | |
| echo -e "${GREEN} ✓ Frontend ready${NC}" | |
| break | |
| fi | |
| sleep 1 | |
| done | |
| fi | |
| # Check if LangGraph sidecar is running | |
| if lsof -i :2024 >/dev/null 2>&1; then | |
| echo -e "${YELLOW}⚠️ LangGraph sidecar already running on port 2024${NC}" | |
| else | |
| echo -e "${GREEN}▶ Starting LangGraph sidecar...${NC}" | |
| source .venv/bin/activate | |
| langgraph dev --port 2024 & | |
| SIDECAR_PID=$! | |
| # Wait for sidecar | |
| echo " Waiting for sidecar to start..." | |
| for i in {1..30}; do | |
| if curl -s http://localhost:2024/ok >/dev/null 2>&1; then | |
| echo -e "${GREEN} ✓ Sidecar ready${NC}" | |
| break | |
| fi | |
| sleep 1 | |
| done | |
| fi | |
| # Start the Mini Minder app | |
| echo -e "${GREEN}▶ Starting Mini Minder...${NC}" | |
| source .venv/bin/activate | |
| reachy-mini-minder --react & | |
| APP_PID=$! | |
| # Wait a moment for the app to connect | |
| sleep 3 | |
| # Open browser unless --no-browser flag is passed | |
| if [[ "$1" != "--no-browser" ]]; then | |
| echo -e "${GREEN}▶ Opening browser...${NC}" | |
| open http://localhost:3000 | |
| fi | |
| echo "" | |
| echo -e "${GREEN}✅ All services started!${NC}" | |
| echo "" | |
| echo " Frontend: http://localhost:3000" | |
| echo " Daemon: http://localhost:8000" | |
| echo " Sidecar: http://localhost:2024" | |
| echo "" | |
| echo " Press Ctrl+C to stop all services" | |
| echo "" | |
| # Trap to clean up on exit | |
| cleanup() { | |
| echo "" | |
| echo -e "${YELLOW}Shutting down...${NC}" | |
| kill $APP_PID 2>/dev/null || true | |
| kill $SIDECAR_PID 2>/dev/null || true | |
| kill $FRONTEND_PID 2>/dev/null || true | |
| kill $DAEMON_PID 2>/dev/null || true | |
| echo -e "${GREEN}Done${NC}" | |
| } | |
| trap cleanup EXIT | |
| # Wait for any process to exit | |
| wait | |